Package org.apache.axis.wsdl.fromJava
Class Types
java.lang.Object
org.apache.axis.wsdl.fromJava.Types
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
Fields -
Constructor Summary
ConstructorsConstructorDescriptionTypes
(javax.wsdl.Definition def, TypeMapping tm, TypeMapping defaultTM, Namespaces namespaces, String targetNamespace, List stopClasses, ServiceDesc serviceDesc) This class serailizes aClass
to XML Schema.Types
(javax.wsdl.Definition def, TypeMapping tm, TypeMapping defaultTM, Namespaces namespaces, String targetNamespace, List stopClasses, ServiceDesc serviceDesc, Emitter emitter) This class serailizes aClass
to XML Schema. -
Method Summary
Modifier and TypeMethodDescriptioncreateArrayElement
(String componentTypeName) Method createArrayElementcreateAttributeElement
(String elementName, Class javaType, QName xmlType, boolean nullable, Document docHolder) Create Attribute Element with a given name and typecreateElement
(String elementName) Create a DOM Element in this contextcreateElement
(String elementName, String elementType, boolean nullable, boolean omittable, Document docHolder) Create Element with a given name and typecreateElementWithAnonymousType
(String elementName, Class fieldType, boolean omittable, Document ownerDocument) Write an <element> with an anonymous internal ComplexTypecreateLiteralArrayElement
(String componentType, QName itemName) Create an array which is a wrapper type for "item" elements of a component type.static String
Utility method to get the local class name from a fully qualified java class nameReturn the namespaces object for the current contextstatic String
Utility method to get the package name from a fully qualified java class namegetQNameString
(QName qname) Return a string suitable for representing a given QName in the context of this WSDL document.return the service descriptionReturn the list of classes that we should not emit WSDL for.getTypeQName
(Class javaType) Return the QName of the specified javaTypevoid
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.boolean
isAcceptableAsAttribute
(Class type) Is the given class acceptable as an attributestatic boolean
protected boolean
isBeanCompatible
(Class javaType, boolean issueErrors) isBeanCompatiblestatic boolean
isEnumClass
(Class cls) Returns true if indicated type matches the JAX-RPC enumeration class.static boolean
isNullable
(Class type) Determines if the field is nullable.void
loadInputSchema
(String inputSchema) Loads the types from the input schema file.void
loadInputTypes
(String inputWSDL) Load the types from the input wsdl file.void
Method updateNamespacesvoid
writeElementDecl
(QName qname, Class javaType, QName typeQName, boolean nillable, QName itemQName) Create a top-level element declaration in our generated schemawriteElementForPart
(Class type, QName qname) Write out an element referenced by a part element attribute.writeEnumType
(QName qName, Class cls) Write Enumeration Complex Type (Only supports enumeration classes of string types)void
writeSchemaElement
(String namespaceURI, Element element) Write out the given Element into the appropriate schema node.void
writeSchemaElement
(QName qName, Element element) Deprecated.Please use writeSchemaElement(String namespaceURI, Element element)void
writeSchemaElementDecl
(QName qname, Element element) Method writeSchemaElementDeclvoid
writeSchemaTypeDecl
(QName qname, Element element) Method writeSchemaTypeDeclWrite a schema representation for the givenClass
.Write a schema representation for the givenClass
.writeTypeAndSubTypeForPart
(Class type, QName qname) Write out a type (and its subtypes) referenced by a part type attribute.writeTypeForPart
(Class type, QName qname) Write out a type referenced by a part type attribute.void
writeWrappedParameter
(Element sequence, String name, QName type, Class javaType) Write a parameter (a sub-element) into a sequence generated by writeWrapperElement() above.writeWrapperElement
(QName qname, boolean request, boolean hasParams) Write the element definition for a WRAPPED operation.
-
Field Details
-
log
protected static org.apache.commons.logging.Log logField log
-
-
Constructor Details
-
Types
public Types(javax.wsdl.Definition def, TypeMapping tm, TypeMapping defaultTM, Namespaces namespaces, String targetNamespace, List stopClasses, ServiceDesc serviceDesc) This class serailizes aClass
to XML Schema. The constructor provides the context for the streamed node within the WSDL document- Parameters:
def
- WSDL Definition Element to declare namespacestm
- TypeMappingRegistry to handle known typesdefaultTM
- default TMnamespaces
- user defined or autogenerated namespace and prefix mapstargetNamespace
- targetNamespace of the documentstopClasses
-serviceDesc
-
-
Types
public Types(javax.wsdl.Definition def, TypeMapping tm, TypeMapping defaultTM, Namespaces namespaces, String targetNamespace, List stopClasses, ServiceDesc serviceDesc, Emitter emitter) This class serailizes aClass
to XML Schema. The constructor provides the context for the streamed node within the WSDL document- Parameters:
def
- WSDL Definition Element to declare namespacestm
- TypeMappingRegistry to handle known typesdefaultTM
- default TMnamespaces
- user defined or autogenerated namespace and prefix mapstargetNamespace
- targetNamespace of the documentstopClasses
-serviceDesc
-emitter
- Java2Wsdl emitter
-
-
Method Details
-
isArray
-
getNamespaces
Return the namespaces object for the current context- Returns:
-
loadInputSchema
public void loadInputSchema(String inputSchema) throws IOException, javax.wsdl.WSDLException, SAXException, ParserConfigurationException Loads the types from the input schema file.- Parameters:
inputSchema
- file or URL- Throws:
IOException
javax.wsdl.WSDLException
SAXException
ParserConfigurationException
-
loadInputTypes
public void loadInputTypes(String inputWSDL) throws IOException, javax.wsdl.WSDLException, SAXException, ParserConfigurationException Load the types from the input wsdl file.- Parameters:
inputWSDL
- file or URL- Throws:
IOException
javax.wsdl.WSDLException
SAXException
ParserConfigurationException
-
writeTypeForPart
Write out a type referenced by a part type attribute.- Parameters:
type
-Class
to generate the XML Schema info forqname
-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
-
writeTypeAndSubTypeForPart
Write out a type (and its subtypes) referenced by a part type attribute.- Parameters:
type
-Class
to generate the XML Schema info forqname
-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
-
writeElementForPart
Write out an element referenced by a part element attribute.- Parameters:
type
-Class
to generate the XML Schema info forqname
-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
-
writeWrapperElement
public Element writeWrapperElement(QName qname, boolean request, boolean hasParams) throws AxisFault 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 QNamerequest
- 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
-
writeWrappedParameter
public void writeWrappedParameter(Element sequence, String name, QName type, Class javaType) throws AxisFault Write a parameter (a sub-element) into a sequence generated by writeWrapperElement() above.- Parameters:
sequence
- the <sequence> in which we're writingname
- 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
-
getTypeQName
Return the QName of the specified javaType- Parameters:
javaType
- input javaType Class- Returns:
- QName
-
getQNameString
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
-
getPackageNameFromFullName
Utility method to get the package name from a fully qualified java class name- Parameters:
full
- input class name- Returns:
- package name
-
getLocalNameFromFullName
Utility method to get the local class name from a fully qualified java class name- Parameters:
full
- input class name- Returns:
- package name
-
writeSchemaTypeDecl
Method writeSchemaTypeDecl- Parameters:
qname
-element
-- Throws:
AxisFault
-
writeSchemaElementDecl
Method writeSchemaElementDecl- Parameters:
qname
-element
-- Throws:
AxisFault
-
writeSchemaElement
Deprecated.Please use writeSchemaElement(String namespaceURI, Element element)- Parameters:
qName
- qName to get the namespace of the schema nodeelement
- the Element to append to the Schema node- Throws:
AxisFault
-
writeSchemaElement
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 intoelement
- the Element to append to the Schema node- Throws:
AxisFault
-
writeType
Write a schema representation for the givenClass
. 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
Write a schema representation for the givenClass
. 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 schemaqName
- of the type to write- Returns:
- a prefixed string for the schema type or null if problems occur
- Throws:
AxisFault
-
createArrayElement
Method createArrayElement- Parameters:
componentTypeName
-- Returns:
-
createLiteralArrayElement
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:
-
isEnumClass
Returns true if indicated type matches the JAX-RPC enumeration class. Note: supports JSR 101 version 0.6 Public Draft- Parameters:
cls
-- Returns:
-
writeEnumType
public Element writeEnumType(QName qName, Class cls) throws NoSuchMethodException, IllegalAccessException, AxisFault 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
-
writeElementDecl
public void writeElementDecl(QName qname, Class javaType, QName typeQName, boolean nillable, QName itemQName) throws AxisFault Create a top-level element declaration in our generated schema- Parameters:
qname
-javaType
-typeQName
-nillable
- nillable attribute of the elementitemQName
-- 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 elementelementType
- schema type representation of the elementnullable
- nullable attribute of the elementomittable
-docHolder
-- Returns:
- the created Element
-
createAttributeElement
public Element createAttributeElement(String elementName, Class javaType, QName xmlType, boolean nullable, Document docHolder) throws AxisFault Create Attribute Element with a given name and type- Parameters:
elementName
- the name of the created elementjavaType
-xmlType
-nullable
- nullable attribute of the elementdocHolder
-- Returns:
- the created Element
- Throws:
AxisFault
-
isAcceptableAsAttribute
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
-
isNullable
Determines if the field is nullable. All non-primitives are nillable.- Parameters:
type
- input Class- Returns:
- true if nullable
-
updateNamespaces
public void updateNamespaces()Method updateNamespaces -
insertTypesFragment
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
-
-
getStopClasses
Return the list of classes that we should not emit WSDL for.- Returns:
-
createElement
Create a DOM Element in this context- Parameters:
elementName
-- Returns:
-
isBeanCompatible
isBeanCompatible- Parameters:
javaType
- ClassissueErrors
- 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:
-
createElementWithAnonymousType
public Element createElementWithAnonymousType(String elementName, Class fieldType, boolean omittable, Document ownerDocument) throws AxisFault Write an <element> with an anonymous internal ComplexType- Parameters:
elementName
-fieldType
-omittable
-ownerDocument
-- Returns:
- Throws:
AxisFault
-
getServiceDesc
return the service description- Returns:
-