org.apache.cxf.aegis.type
Class XMLTypeCreator
java.lang.Object
org.apache.cxf.aegis.type.AbstractTypeCreator
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.
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 |
XMLTypeCreator
public XMLTypeCreator()
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 objectindex
- 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