Class Types

java.lang.Object
org.apache.axis.wsdl.fromJava.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 Details

    • log

      protected static org.apache.commons.logging.Log log
      Field 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 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(javax.wsdl.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 Details

    • isArray

      public static boolean isArray(Class clazz)
    • getNamespaces

      public Namespaces 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

      public QName writeTypeForPart(Class type, QName qname) throws AxisFault
      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
    • writeTypeAndSubTypeForPart

      public QName writeTypeAndSubTypeForPart(Class type, QName qname) throws AxisFault
      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.
      Throws:
      AxisFault
    • writeElementForPart

      public QName writeElementForPart(Class type, QName qname) throws AxisFault
      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
    • 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 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
    • 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 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
    • getTypeQName

      public QName getTypeQName(Class javaType)
      Return the QName of the specified javaType
      Parameters:
      javaType - input javaType Class
      Returns:
      QName
    • 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
    • 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
    • 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
    • writeSchemaTypeDecl

      public void writeSchemaTypeDecl(QName qname, Element element) throws AxisFault
      Method writeSchemaTypeDecl
      Parameters:
      qname -
      element -
      Throws:
      AxisFault
    • writeSchemaElementDecl

      public void writeSchemaElementDecl(QName qname, Element element) throws AxisFault
      Method writeSchemaElementDecl
      Parameters:
      qname -
      element -
      Throws:
      AxisFault
    • writeSchemaElement

      public void writeSchemaElement(QName qName, Element element) throws AxisFault
      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) throws AxisFault
      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
    • writeType

      public String writeType(Class type) throws AxisFault
      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) throws AxisFault
      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
    • createArrayElement

      public Element createArrayElement(String componentTypeName)
      Method createArrayElement
      Parameters:
      componentTypeName -
      Returns:
    • 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:
    • 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:
    • 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 element
      itemQName -
      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
    • 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 element
      javaType -
      xmlType -
      nullable - nullable attribute of the element
      docHolder -
      Returns:
      the created Element
      Throws:
      AxisFault
    • 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
    • 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
    • updateNamespaces

      public void updateNamespaces()
      Method updateNamespaces
    • 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 -
    • getStopClasses

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

      public Element createElement(String elementName)
      Create a DOM Element in this context
      Parameters:
      elementName -
      Returns:
    • 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:
    • 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

      public ServiceDesc getServiceDesc()
      return the service description
      Returns: