Apache CXF API

org.apache.cxf.aegis.type
Class XMLTypeCreator

java.lang.Object
  extended by org.apache.cxf.aegis.type.AbstractTypeCreator
      extended by org.apache.cxf.aegis.type.XMLTypeCreator
All Implemented Interfaces:
TypeCreator

public class XMLTypeCreator
extends AbstractTypeCreator

Deduce mapping information from an xml file. The xml file should be in the same packages as the class, with the name className.aegis.xml. For example, given the following service interface:

 public Collection getResultsForValues(String id, Collection values); //method 1
 
 public Collection getResultsForValues(int id, Collection values); //method 2
 
 public String getResultForValue(String value); //method 3
 
An example of the type xml is:
  <mappings>
   <mapping>
     <method name="getResultsForValues">
       <return-type componentType="com.acme.ResultBean" />
       <!-- no need to specify index 0, since it's a String -->
       <parameter index="1" componentType="java.lang.String" />
     </method>
   </mapping>
  </mappings>
 

Note that for values which can be easily deduced (such as the String parameter, or the second service method) no mapping need be specified in the xml descriptor, which is why no mapping is specified for method 3.

However, if you have overloaded methods with different semantics, then you will need to specify enough parameters to disambiguate the method and uniquely identify it. So in the example above, the mapping specifies will apply to both method 1 and method 2, since the parameter at index 0 is not specified.


Field Summary
 
Fields inherited from class org.apache.cxf.aegis.type.AbstractTypeCreator
HTTP_CXF_APACHE_ORG_ARRAYS, nextCreator, tm
 
Constructor Summary
XMLTypeCreator()
           
 
Method Summary
 TypeClassInfo createClassInfo(Method m, int index)
          Retrieve the classInfo for a method.
 TypeClassInfo createClassInfo(PropertyDescriptor pd)
           
 AegisType createCollectionType(TypeClassInfo info)
           
 AegisType createDefaultType(TypeClassInfo info)
           
 AegisType createEnumType(TypeClassInfo info)
           
protected  QName createQName(Element e, String value)
          Creates a QName from a string, such as "ns:Element".
protected  Element findMapping(Type type)
           
protected  List<Element> findMappings(Type type)
           
protected  Document getDocument(Class clazz)
           
protected  AegisType getOrCreateGenericType(TypeClassInfo info)
           
protected  AegisType getOrCreateMapKeyType(TypeClassInfo info)
           
protected  AegisType getOrCreateMapValueType(TypeClassInfo info)
           
protected  boolean isEnum(Class javaType)
           
protected  void readMetadata(TypeClassInfo info, Element mapping, Element parameter)
           
protected  void setType(TypeClassInfo info, Element parameter)
           
 
Methods inherited from class org.apache.cxf.aegis.type.AbstractTypeCreator
createArrayType, createBasicClassInfo, createClassInfo, createCollectionQName, createCollectionTypeFromGeneric, createHolderType, createMapQName, createMapType, createMapType, createObjectType, createQName, createType, createType, createType, createType, createType, createTypeForClass, createUserType, getConfiguration, getElementName, getParent, getTopCreator, getTypeMapping, isArray, isCollection, isHolder, isMap, setConfiguration, setNextCreator, setParent, setTypeMapping
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XMLTypeCreator

public XMLTypeCreator()
Method Detail

getDocument

protected Document getDocument(Class clazz)

isEnum

protected boolean isEnum(Class javaType)
Overrides:
isEnum in class AbstractTypeCreator

createEnumType

public AegisType createEnumType(TypeClassInfo info)
Overrides:
createEnumType in class AbstractTypeCreator

createCollectionType

public AegisType createCollectionType(TypeClassInfo info)
Specified by:
createCollectionType in class AbstractTypeCreator

createClassInfo

public TypeClassInfo createClassInfo(PropertyDescriptor pd)
Specified by:
createClassInfo in class AbstractTypeCreator

findMapping

protected Element findMapping(Type type)

findMappings

protected List<Element> findMappings(Type type)

createDefaultType

public AegisType createDefaultType(TypeClassInfo info)
Specified by:
createDefaultType in class AbstractTypeCreator

createClassInfo

public TypeClassInfo createClassInfo(Method m,
                                     int index)
Description copied from interface: TypeCreator
Retrieve the classInfo for a method. Needed to get parameters right.

Specified by:
createClassInfo in interface TypeCreator
Specified by:
createClassInfo in class AbstractTypeCreator
Parameters:
m - Method object
index - index in the parameter list
Returns:
info

readMetadata

protected void readMetadata(TypeClassInfo info,
                            Element mapping,
                            Element parameter)

getOrCreateGenericType

protected AegisType getOrCreateGenericType(TypeClassInfo info)
Overrides:
getOrCreateGenericType in class AbstractTypeCreator

getOrCreateMapKeyType

protected AegisType getOrCreateMapKeyType(TypeClassInfo info)
Overrides:
getOrCreateMapKeyType in class AbstractTypeCreator

getOrCreateMapValueType

protected AegisType getOrCreateMapValueType(TypeClassInfo info)
Overrides:
getOrCreateMapValueType in class AbstractTypeCreator

setType

protected void setType(TypeClassInfo info,
                       Element parameter)

createQName

protected QName createQName(Element e,
                            String value)
Creates a QName from a string, such as "ns:Element".


Apache CXF API

Apache CXF