org.apache.axis.wsdl.fromJava

Class Types

public class Types extends Object

Description:

This class is used to recursively serializes a Java Class into an XML Schema representation.

It has utility methods to create a schema node, assosiate namespaces to the various types

Author: unascribed

Field Summary
protected static Loglog
Field log
Constructor Summary
Types(Definition def, TypeMapping tm, TypeMapping defaultTM, Namespaces namespaces, String targetNamespace, List stopClasses, ServiceDesc serviceDesc)
This class serailizes a Class to XML Schema.
Types(Definition def, TypeMapping tm, TypeMapping defaultTM, Namespaces namespaces, String targetNamespace, List stopClasses, ServiceDesc serviceDesc, Emitter emitter)
This class serailizes a Class to XML Schema.
Method Summary
ElementcreateArrayElement(String componentTypeName)
Method createArrayElement
ElementcreateAttributeElement(String elementName, Class javaType, QName xmlType, boolean nullable, Document docHolder)
Create Attribute Element with a given name and type
ElementcreateElement(String elementName, String elementType, boolean nullable, boolean omittable, Document docHolder)
Create Element with a given name and type
ElementcreateElement(String elementName)
Create a DOM Element in this context
ElementcreateElementWithAnonymousType(String elementName, Class fieldType, boolean omittable, Document ownerDocument)
Write an <element> with an anonymous internal ComplexType
ElementcreateLiteralArrayElement(String componentType, QName itemName)
Create an array which is a wrapper type for "item" elements of a component type.
static StringgetLocalNameFromFullName(String full)
Utility method to get the local class name from a fully qualified java class name
NamespacesgetNamespaces()
Return the namespaces object for the current context
static StringgetPackageNameFromFullName(String full)
Utility method to get the package name from a fully qualified java class name
StringgetQNameString(QName qname)
Return a string suitable for representing a given QName in the context of this WSDL document.
ServiceDescgetServiceDesc()
return the service description
ListgetStopClasses()
Return the list of classes that we should not emit WSDL for.
QNamegetTypeQName(Class javaType)
Return the QName of the specified javaType
voidinsertTypesFragment(Document doc)
Inserts the type fragment into the given wsdl document and ensures that definitions from each embedded schema are allowed to reference schema components from the other sibling schemas.
booleanisAcceptableAsAttribute(Class type)
Is the given class acceptable as an attribute
static booleanisArray(Class clazz)
protected booleanisBeanCompatible(Class javaType, boolean issueErrors)
isBeanCompatible
static booleanisEnumClass(Class cls)
Returns true if indicated type matches the JAX-RPC enumeration class.
static booleanisNullable(Class type)
Determines if the field is nullable.
voidloadInputSchema(String inputSchema)
Loads the types from the input schema file.
voidloadInputTypes(String inputWSDL)
Load the types from the input wsdl file.
voidupdateNamespaces()
Method updateNamespaces
voidwriteElementDecl(QName qname, Class javaType, QName typeQName, boolean nillable, QName itemQName)
Create a top-level element declaration in our generated schema
QNamewriteElementForPart(Class type, QName qname)
Write out an element referenced by a part element attribute.
ElementwriteEnumType(QName qName, Class cls)
Write Enumeration Complex Type (Only supports enumeration classes of string types)
voidwriteSchemaElement(QName qName, Element element)
voidwriteSchemaElement(String namespaceURI, Element element)
Write out the given Element into the appropriate schema node.
voidwriteSchemaElementDecl(QName qname, Element element)
Method writeSchemaElementDecl
voidwriteSchemaTypeDecl(QName qname, Element element)
Method writeSchemaTypeDecl
StringwriteType(Class type)
Write a schema representation for the given Class.
StringwriteType(Class type, QName qName)
Write a schema representation for the given Class.
QNamewriteTypeAndSubTypeForPart(Class type, QName qname)
Write out a type (and its subtypes) referenced by a part type attribute.
QNamewriteTypeForPart(Class type, QName qname)
Write out a type referenced by a part type attribute.
voidwriteWrappedParameter(Element sequence, String name, QName type, Class javaType)
Write a parameter (a sub-element) into a sequence generated by writeWrapperElement() above.
ElementwriteWrapperElement(QName qname, boolean request, boolean hasParams)
Write the element definition for a WRAPPED operation.

Field Detail

log

protected static Log log
Field log

Constructor Detail

Types

public Types(Definition def, TypeMapping tm, TypeMapping defaultTM, Namespaces namespaces, String targetNamespace, List stopClasses, ServiceDesc serviceDesc)
This class serailizes a Class to XML Schema. The constructor provides the context for the streamed node within the WSDL document

Parameters: def WSDL Definition Element to declare namespaces tm TypeMappingRegistry to handle known types defaultTM default TM namespaces user defined or autogenerated namespace and prefix maps targetNamespace targetNamespace of the document stopClasses serviceDesc

Types

public Types(Definition def, TypeMapping tm, TypeMapping defaultTM, Namespaces namespaces, String targetNamespace, List stopClasses, ServiceDesc serviceDesc, Emitter emitter)
This class serailizes a Class to XML Schema. The constructor provides the context for the streamed node within the WSDL document

Parameters: def WSDL Definition Element to declare namespaces tm TypeMappingRegistry to handle known types defaultTM default TM namespaces user defined or autogenerated namespace and prefix maps targetNamespace targetNamespace of the document stopClasses serviceDesc emitter Java2Wsdl emitter

Method Detail

createArrayElement

public Element createArrayElement(String componentTypeName)
Method createArrayElement

Parameters: componentTypeName

Returns:

createAttributeElement

public Element createAttributeElement(String elementName, Class javaType, QName xmlType, boolean nullable, Document docHolder)
Create Attribute Element with a given name and type

Parameters: elementName the name of the created element javaType xmlType nullable nullable attribute of the element docHolder

Returns: the created Element

Throws: AxisFault

createElement

public Element createElement(String elementName, String elementType, boolean nullable, boolean omittable, Document docHolder)
Create Element with a given name and type

Parameters: elementName the name of the created element elementType schema type representation of the element nullable nullable attribute of the element omittable docHolder

Returns: the created Element

createElement

public Element createElement(String elementName)
Create a DOM Element in this context

Parameters: elementName

Returns:

createElementWithAnonymousType

public Element createElementWithAnonymousType(String elementName, Class fieldType, boolean omittable, Document ownerDocument)
Write an <element> with an anonymous internal ComplexType

Parameters: elementName fieldType omittable ownerDocument

Returns:

Throws: AxisFault

createLiteralArrayElement

public Element createLiteralArrayElement(String componentType, QName itemName)
Create an array which is a wrapper type for "item" elements of a component type. This is basically the unencoded parallel to a SOAP-encoded array.

Parameters: componentType itemName the QName of the inner element (right now we only use the localPart)

Returns:

getLocalNameFromFullName

public static String getLocalNameFromFullName(String full)
Utility method to get the local class name from a fully qualified java class name

Parameters: full input class name

Returns: package name

getNamespaces

public Namespaces getNamespaces()
Return the namespaces object for the current context

Returns:

getPackageNameFromFullName

public static String getPackageNameFromFullName(String full)
Utility method to get the package name from a fully qualified java class name

Parameters: full input class name

Returns: package name

getQNameString

public String getQNameString(QName qname)
Return a string suitable for representing a given QName in the context of this WSDL document. If the namespace of the QName is not yet registered, we will register it up in the Definitions.

Parameters: qname a QName (typically a type)

Returns: a String containing a standard "ns:localPart" rep of the QName

getServiceDesc

public ServiceDesc getServiceDesc()
return the service description

Returns:

getStopClasses

public List getStopClasses()
Return the list of classes that we should not emit WSDL for.

Returns:

getTypeQName

public QName getTypeQName(Class javaType)
Return the QName of the specified javaType

Parameters: javaType input javaType Class

Returns: QName

insertTypesFragment

public void insertTypesFragment(Document doc)
Inserts the type fragment into the given wsdl document and ensures that definitions from each embedded schema are allowed to reference schema components from the other sibling schemas.

Parameters: doc

isAcceptableAsAttribute

public boolean isAcceptableAsAttribute(Class type)
Is the given class acceptable as an attribute

Parameters: type input Class

Returns: true if the type is a simple, enum type or extends SimpleType

isArray

public static boolean isArray(Class clazz)

isBeanCompatible

protected boolean isBeanCompatible(Class javaType, boolean issueErrors)
isBeanCompatible

Parameters: javaType Class issueErrors if true, issue messages if not compatible Returns true if it appears that this class is a bean and can be mapped to a complexType

Returns:

isEnumClass

public static boolean isEnumClass(Class cls)
Returns true if indicated type matches the JAX-RPC enumeration class. Note: supports JSR 101 version 0.6 Public Draft

Parameters: cls

Returns:

isNullable

public static boolean isNullable(Class type)
Determines if the field is nullable. All non-primitives are nillable.

Parameters: type input Class

Returns: true if nullable

loadInputSchema

public void loadInputSchema(String inputSchema)
Loads the types from the input schema file.

Parameters: inputSchema file or URL

Throws: IOException WSDLException SAXException ParserConfigurationException

loadInputTypes

public void loadInputTypes(String inputWSDL)
Load the types from the input wsdl file.

Parameters: inputWSDL file or URL

Throws: IOException WSDLException SAXException ParserConfigurationException

updateNamespaces

public void updateNamespaces()
Method updateNamespaces

writeElementDecl

public void writeElementDecl(QName qname, Class javaType, QName typeQName, boolean nillable, QName itemQName)
Create a top-level element declaration in our generated schema

Parameters: qname javaType typeQName nillable nillable attribute of the element itemQName

Throws: AxisFault

writeElementForPart

public QName writeElementForPart(Class type, QName qname)
Write out an element referenced by a part element attribute.

Parameters: type Class to generate the XML Schema info for qname QName of the element. If null, qname is defaulted from the class.

Returns: the QName of the generated Schema type, null if no element

Throws: AxisFault

writeEnumType

public Element writeEnumType(QName qName, Class cls)
Write Enumeration Complex Type (Only supports enumeration classes of string types)

Parameters: qName QName of type. cls class of type

Returns:

Throws: NoSuchMethodException IllegalAccessException AxisFault

writeSchemaElement

public void writeSchemaElement(QName qName, Element element)

Deprecated: Please use writeSchemaElement(String namespaceURI, Element element)

Parameters: qName qName to get the namespace of the schema node element the Element to append to the Schema node

Throws: AxisFault

writeSchemaElement

public void writeSchemaElement(String namespaceURI, Element element)
Write out the given Element into the appropriate schema node. If need be create the schema node as well

Parameters: namespaceURI namespace this node should get dropped into element the Element to append to the Schema node

Throws: AxisFault

writeSchemaElementDecl

public void writeSchemaElementDecl(QName qname, Element element)
Method writeSchemaElementDecl

Parameters: qname element

Throws: AxisFault

writeSchemaTypeDecl

public void writeSchemaTypeDecl(QName qname, Element element)
Method writeSchemaTypeDecl

Parameters: qname element

Throws: AxisFault

writeType

public String writeType(Class type)
Write a schema representation for the given Class. Recurse through all the public fields as well as fields represented by java bean compliant accessor methods.

Then return the qualified string representation of the generated type

Parameters: type Class for which to generate schema

Returns: a prefixed string for the schema type

Throws: AxisFault

writeType

public String writeType(Class type, QName qName)
Write a schema representation for the given Class. Recurse through all the public fields as well as fields represented by java bean compliant accessor methods.

Then return the qualified string representation of the generated type

Parameters: type Class for which to generate schema qName of the type to write

Returns: a prefixed string for the schema type or null if problems occur

Throws: AxisFault

writeTypeAndSubTypeForPart

public QName writeTypeAndSubTypeForPart(Class type, QName qname)
Write out a type (and its subtypes) referenced by a part type attribute.

Parameters: type Class to generate the XML Schema info for qname QName of the type. If null, qname is defaulted from the class.

Returns: the QName of the generated Schema type, null if void, if the Class type cannot be converted to a schema type then xsd:anytype is returned.

writeTypeForPart

public QName writeTypeForPart(Class type, QName qname)
Write out a type referenced by a part type attribute.

Parameters: type Class to generate the XML Schema info for qname QName of the type. If null, qname is defaulted from the class.

Returns: the QName of the generated Schema type, null if void, if the Class type cannot be converted to a schema type then xsd:anytype is returned.

Throws: AxisFault

writeWrappedParameter

public void writeWrappedParameter(Element sequence, String name, QName type, Class javaType)
Write a parameter (a sub-element) into a sequence generated by writeWrapperElement() above.

Parameters: sequence the <sequence> in which we're writing name is the name of an element to add to the wrapper element. type is the QName of the type of the element. javaType

Throws: AxisFault

writeWrapperElement

public Element writeWrapperElement(QName qname, boolean request, boolean hasParams)
Write the element definition for a WRAPPED operation. This will write out any necessary namespace/schema declarations, an an element definition with an internal (anonymous) complexType. The name of the element will be *foo*Request or *foo*Response depending on whether the request boolean is true. If the operation contains parameters, then we also generate a >sequence< node underneath the complexType, and return it for later use by writeWrappedParameter() below.

Parameters: qname the desired element QName request true if we're writing the request wrapper, false if writing the response. hasParams true if there are parameters, and thus a sequence node is needed

Returns: a DOM Element for the sequence, inside which we'll write the parameters as elements, or null if there are no parameters

Throws: AxisFault

Copyright B) 2005 Apache Web Services Project. All Rights Reserved.