View Javadoc

    1   package org.codehaus.xfire.aegis.type;
    2
    3   import java.beans.PropertyDescriptor;
    4   import java.lang.reflect.Method;
    5
    6   import org.codehaus.xfire.XFireRuntimeException;
    7   import org.codehaus.xfire.aegis.type.basic.BeanType;
    8
    9   public class DefaultTypeCreator extends AbstractTypeCreator
    10  {
    11      public TypeClassInfo createClassInfo(Method m, int index)
    12      {
    13          TypeClassInfo info = new TypeClassInfo();
    14
    15          if(index >= 0) info.setTypeClass(m.getParameterTypes()[index]);
    16          else info.setTypeClass(m.getReturnType());
    17
    18          return info;
    19      }
    20
    21      public TypeClassInfo createClassInfo(PropertyDescriptor pd)
    22      {
    23          return createBasicClassInfo(pd.getPropertyType());
    24      }
    25
    26      public Type createCollectionType(TypeClassInfo info)
    27      {
    28          if(info.getGenericType() == null)
    29          {
    30              throw new XFireRuntimeException("Cannot create mapping for " +
    31                                              info.getTypeClass().getName() +
    32                                              ", unspecified component type");
    33          }
    34
    35          return createCollectionType(info, (Class)info.getGenericType());
    36      }
    37
    38      public Type createDefaultType(TypeClassInfo info)
    39      {
    40          BeanType type = new BeanType();
    41          type.setSchemaType(createQName(info.getTypeClass()));
    42          type.setTypeClass(info.getTypeClass());
    43          type.setTypeMapping(getTypeMapping());
    44
    45          return type;
    46      }
    47  }