org.jboss.axis.wsdl.fromJava
Class Types

java.lang.Object
  extended byorg.jboss.axis.wsdl.fromJava.Types

public class Types
extends java.lang.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


Constructor Summary
Types(Definition def, TypeMapping (src)  tm, TypeMapping (src)  defaultTM, Namespaces (src)  namespaces, java.lang.String targetNamespace, java.util.List stopClasses, ServiceDesc (src)  serviceDesc)
          This class serailizes a Class to XML Schema.
 
Method Summary
 org.w3c.dom.Element createArrayElement(java.lang.String componentTypeName)
           
 org.w3c.dom.Element createAttributeElement(java.lang.String elementName, java.lang.Class javaType, QName (src)  xmlType, boolean nullable, org.w3c.dom.Document docHolder)
          Create Attribute Element with a given name and type
 org.w3c.dom.Element createElement(java.lang.String elementName)
          Create a DOM Element in this context
 org.w3c.dom.Element createElement(java.lang.String elementName, java.lang.String elementType, boolean nullable, boolean omittable, org.w3c.dom.Document docHolder)
          Create Element with a given name and type
 org.w3c.dom.Element createElementDecl(java.lang.String name, java.lang.Class javaType, QName (src)  typeQName, boolean nillable, boolean omittable)
          Create Element
 org.w3c.dom.Element createElementWithAnonymousType(java.lang.String elementName, java.lang.Class fieldType, boolean omittable, org.w3c.dom.Document ownerDocument)
          Write an <element> with an anonymous internal ComplexType
static java.lang.String getLocalNameFromFullName(java.lang.String full)
          Utility method to get the local class name from a fully qualified java class name
 Namespaces (src) getNamespaces()
          Return the namespaces object for the current context
static java.lang.String getPackageNameFromFullName(java.lang.String full)
          Utility method to get the package name from a fully qualified java class name
 java.lang.String getQNameString(QName (src)  qname)
          Return a string suitable for representing a given QName in the context of this WSDL document.
 java.util.List getStopClasses()
          Return the list of classes that we should not emit WSDL for.
 QName (src) getTypeQName(java.lang.Class javaType)
          Return the QName of the specified javaType
 void insertTypesFragment(org.w3c.dom.Document doc)
          Inserts the type fragment into the given wsdl document
 boolean isAcceptableAsAttribute(java.lang.Class type)
          Is the given class acceptable as an attribute
static boolean isEnumClass(java.lang.Class cls)
          Returns true if indicated type matches the JAX-RPC enumeration class.
 boolean isNullable(java.lang.Class type)
          Determines if the field is nullable.
 void loadInputSchema(java.lang.String inputSchema)
          Loads the types from the input schema file.
 void loadInputTypes(java.lang.String inputWSDL)
          Load the types from the input wsdl file.
 void updateNamespaces()
           
 QName (src) writeElementForPart(java.lang.Class type, QName (src)  qname)
          Write out an element referenced by a part element attribute.
 org.w3c.dom.Element writeEnumType(QName (src)  qName, java.lang.Class cls)
          Write Enumeration Complex Type (Only supports enumeration classes of string types)
 void writeSchemaElement(QName (src)  qName, org.w3c.dom.Element element)
          Write out the given Element into the appropriate schema node.
 java.lang.String writeType(java.lang.Class type)
          Write a schema representation for the given Class.
 java.lang.String writeType(java.lang.Class type, QName (src)  qName)
          Write a schema representation for the given Class.
 QName (src) writeTypeForPart(java.lang.Class type, QName (src)  qname)
          Write out a type referenced by a part type attribute.
 void writeWrappedParameter(org.w3c.dom.Element sequence, java.lang.String name, QName (src)  type, java.lang.Class javaType)
          Write a parameter (a sub-element) into a sequence generated by writeWrapperElement() above.
 org.w3c.dom.Element writeWrapperElement(QName (src)  qname, boolean request, boolean hasParams)
          Write the element definition for a WRAPPED operation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Types

public Types(Definition def,
             TypeMapping (src)  tm,
             TypeMapping (src)  defaultTM,
             Namespaces (src)  namespaces,
             java.lang.String targetNamespace,
             java.util.List stopClasses,
             ServiceDesc (src)  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
Method Detail

getNamespaces

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


loadInputSchema

public void loadInputSchema(java.lang.String inputSchema)
                     throws java.io.IOException,
                            WSDLException,
                            org.xml.sax.SAXException,
                            javax.xml.parsers.ParserConfigurationException
Loads the types from the input schema file.

Parameters:
inputSchema - file or URL
Throws:
java.io.IOException
WSDLException
org.xml.sax.SAXException
javax.xml.parsers.ParserConfigurationException

loadInputTypes

public void loadInputTypes(java.lang.String inputWSDL)
                    throws java.io.IOException,
                           WSDLException,
                           org.xml.sax.SAXException,
                           javax.xml.parsers.ParserConfigurationException
Load the types from the input wsdl file.

Parameters:
inputWSDL - file or URL
Throws:
java.io.IOException
WSDLException
org.xml.sax.SAXException
javax.xml.parsers.ParserConfigurationException

writeTypeForPart

public QName (src)  writeTypeForPart(java.lang.Class type,
                              QName (src)  qname)
                       throws AxisFault (src) 
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 (src)

writeElementForPart

public QName (src)  writeElementForPart(java.lang.Class type,
                                 QName (src)  qname)
                          throws AxisFault (src) 
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 (src)

writeWrapperElement

public org.w3c.dom.Element writeWrapperElement(QName (src)  qname,
                                               boolean request,
                                               boolean hasParams)
                                        throws AxisFault (src) 
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 (src)

writeWrappedParameter

public void writeWrappedParameter(org.w3c.dom.Element sequence,
                                  java.lang.String name,
                                  QName (src)  type,
                                  java.lang.Class javaType)
                           throws AxisFault (src) 
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.
Throws:
AxisFault (src)

getTypeQName

public QName (src)  getTypeQName(java.lang.Class javaType)
Return the QName of the specified javaType

Parameters:
javaType - input javaType Class
Returns:
QName

getQNameString

public java.lang.String getQNameString(QName (src)  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

getPackageNameFromFullName

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

Parameters:
full - input class name
Returns:
package name

getLocalNameFromFullName

public static java.lang.String getLocalNameFromFullName(java.lang.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

writeSchemaElement

public void writeSchemaElement(QName (src)  qName,
                               org.w3c.dom.Element element)
                        throws AxisFault (src) 
Write out the given Element into the appropriate schema node. If need be create the schema node as well

Parameters:
qName - qName to get the namespace of the schema node
element - the Element to append to the Schema node
Throws:
AxisFault (src)

writeType

public java.lang.String writeType(java.lang.Class type)
                           throws AxisFault (src) 
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 (src)

writeType

public java.lang.String writeType(java.lang.Class type,
                                  QName (src)  qName)
                           throws AxisFault (src) 
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 (src)

createArrayElement

public org.w3c.dom.Element createArrayElement(java.lang.String componentTypeName)

isEnumClass

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


writeEnumType

public org.w3c.dom.Element writeEnumType(QName (src)  qName,
                                         java.lang.Class cls)
                                  throws java.lang.NoSuchMethodException,
                                         java.lang.IllegalAccessException,
                                         AxisFault (src) 
Write Enumeration Complex Type (Only supports enumeration classes of string types)

Parameters:
qName - QName of type.
cls - class of type
Throws:
java.lang.NoSuchMethodException
java.lang.IllegalAccessException
AxisFault (src)

createElementDecl

public org.w3c.dom.Element createElementDecl(java.lang.String name,
                                             java.lang.Class javaType,
                                             QName (src)  typeQName,
                                             boolean nillable,
                                             boolean omittable)
                                      throws AxisFault (src) 
Create Element

Parameters:
nillable - nillable attribute of the element
Returns:
the created Element
Throws:
AxisFault (src)

createElement

public org.w3c.dom.Element createElement(java.lang.String elementName,
                                         java.lang.String elementType,
                                         boolean nullable,
                                         boolean omittable,
                                         org.w3c.dom.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
Returns:
the created Element

createAttributeElement

public org.w3c.dom.Element createAttributeElement(java.lang.String elementName,
                                                  java.lang.Class javaType,
                                                  QName (src)  xmlType,
                                                  boolean nullable,
                                                  org.w3c.dom.Document docHolder)
                                           throws AxisFault (src) 
Create Attribute Element with a given name and type

Parameters:
elementName - the name of the created element
nullable - nullable attribute of the element
Returns:
the created Element
Throws:
AxisFault (src)

isAcceptableAsAttribute

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

Parameters:
type - input Class
Returns:
true if the type is a simple, enums type or extends SimpleType

isNullable

public boolean isNullable(java.lang.Class type)
Determines if the field is nullable. All non-primitives except for byte[] are nillable.

Parameters:
type - input Class
Returns:
true if nullable

updateNamespaces

public void updateNamespaces()

insertTypesFragment

public void insertTypesFragment(org.w3c.dom.Document doc)
Inserts the type fragment into the given wsdl document

Parameters:
doc -

getStopClasses

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


createElement

public org.w3c.dom.Element createElement(java.lang.String elementName)
Create a DOM Element in this context


createElementWithAnonymousType

public org.w3c.dom.Element createElementWithAnonymousType(java.lang.String elementName,
                                                          java.lang.Class fieldType,
                                                          boolean omittable,
                                                          org.w3c.dom.Document ownerDocument)
                                                   throws AxisFault (src) 
Write an <element> with an anonymous internal ComplexType

Parameters:
elementName -
fieldType -
omittable -
ownerDocument -
Throws:
AxisFault (src)