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  }