Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * Copyright 1&1 Internet AG,
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2 of the License,
   * or (at your option) any later version.
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * See the GNU Lesser General Public License for more details.
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program.  If not, see <>.
 package net.sf.beezle.sushi.metadata;
 import java.util.List;
 import java.util.Map;

A set of Types. Initially, the set consists of simple types only. Complex types can be created explicitly by invoking the add method or implictly by overriding the complex method. Thus, Metadata can be used a factory for complex types.
 public class Schema {
     private final Map<Class<?>, Typemap;
     public Schema() {
          = new HashMap<Class<?>, Type>();
         add(new StringType(this));
         add(new IntType(this));
         add(new LongType(this));
         add(new FloatType(this));
         add(new DoubleType(this));
         add(new BooleanType(this));
         add(new CharacterType(this));
         add(new VoidType(this));
         add(new ClassType(this));
         add(new MethodType(this));
     public ComplexType complex(Class<?> clazz) {
         return (ComplexTypetype(clazz);
     public SimpleType simple(Class<?> clazz) {
         return (SimpleTypetype(clazz);

This method is the main purpose of this class.

never null
     public Type type(Class<?> clazz) {
         Type type;
         if (clazz.isPrimitive()) {
             clazz = Reflect.getWrapper(clazz);
         type = .get(clazz);
         if (type == null) {
             if (Enum.class.isAssignableFrom(clazz)) {
                 type = EnumType.create(this, (Classclazz);
             } else {
                 type = new ComplexType(thisclazztypeName(clazz));
             if (Enum.class.isAssignableFrom(clazz)) {
                 // nothing
             } else {
         return type;
     public Type type(String name) {
         for (Type type : .values()) {
             if (name.equals(type.getName())) {
                return type;
        throw new IllegalArgumentException(name);
    public <T> Instance<T> instance(T obj) {
        Type type;
        type = type(obj.getClass());
        return new Instance<T>(typeobj);
    public <T> List<Instance<T>> instances(Collection<T> col) {
        List<Instance<T>> result;
        result = new ArrayList<Instance<T>>();
        for (T obj : col) {
        return result;
    public void add(Type type) {
        .put(type.getType(), type);
    public void complex(ComplexType type) {
        throw new UnsupportedOperationException(type.getName());
    public static String typeName(Class<?> clazz) {
        String name;
        name = clazz.getName();
        name = name.substring(name.lastIndexOf(".") + 1); // ok for -1
        // simplify inner class names ... 
        name = name.substring(name.indexOf('$') + 1); // ok for -1
        return Strings.decapitalize(name);
New to GrepCode? Check out our FAQ X