Class SchemaUtils


  • public class SchemaUtils
    extends java.lang.Object
    This class contains static utility methods specifically for schema type queries.
    Author:
    Rich Scheuerle (scheu@us.ibm.com)
    • Constructor Summary

      Constructors 
      Constructor Description
      SchemaUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String getAnnotationDocumentation​(org.w3c.dom.Node typeNode)
      Returns the complete text of the child xsd:annotation/xsd:documentation element from the provided node.
      static QName getArrayComponentQName​(org.w3c.dom.Node node, IntHolder dims, BooleanHolder underlTypeNillable, QNameHolder itemQName, BooleanHolder forElement, SymbolTable symbolTable)
      If the specified node represents an array encoding of one of the following forms, then return the qname repesenting the element type of the array.
      static QName getAttributeAnonQName​(org.w3c.dom.Node node)
      Returns the WSDL2Java QName for the anonymous type of the attribute or null.
      static TypeEntry getBaseType​(TypeEntry type, SymbolTable symbolTable)
      Returns the base type of a given type with its symbol table.
      static QName getCollectionComponentQName​(org.w3c.dom.Node node, QNameHolder itemQName, BooleanHolder forElement, SymbolTable symbolTable)
      If the specified node represents an element that references a collection then return the qname repesenting the component of the collection.
      static TypeEntry getComplexElementExtensionBase​(org.w3c.dom.Node node, SymbolTable symbolTable)
      If the specified node represents a supported JAX-RPC complexType/element which extends another complexType.
      static TypeEntry getComplexElementRestrictionBase​(org.w3c.dom.Node node, SymbolTable symbolTable)
      Look for the base type of node iff node is a complex type that has been derived by restriction; otherwise return null.
      static java.util.Vector getContainedAttributeTypes​(org.w3c.dom.Node node, SymbolTable symbolTable)
      Return the attribute names and types if any in the node The even indices are the attribute types (TypeEntry) and the odd indices are the corresponding names (Strings).
      static java.util.Vector getContainedElementDeclarations​(org.w3c.dom.Node node, SymbolTable symbolTable)
      If the specified node represents a supported JAX-RPC complexType or simpleType, a Vector is returned which contains ElementDecls for the child element names.
      static QName[] getContainedSimpleTypes​(org.w3c.dom.Node node)
      Method getContainedSimpleTypes
      static QName getElementAnonQName​(org.w3c.dom.Node node)
      Returns the WSDL2Java QName for the anonymous type of the element or null.
      static QName getListItemType​(org.w3c.dom.Node node)
      Returns the value of itemType attribute of in
      static org.w3c.dom.Node getListNode​(org.w3c.dom.Node node)  
      static org.w3c.dom.Node getRestrictionOrExtensionNode​(org.w3c.dom.Node node)
      Returns the contained restriction or extension node underneath the specified node.
      static QName getSimpleTypeBase​(org.w3c.dom.Node node)
      If the specified node represents a 'normal' non-enumeration simpleType, the QName of the simpleType base is returned.
      static java.lang.String getTextByPath​(org.w3c.dom.Node root, java.lang.String path)
      Returns all textual nodes of a subnode defined by a parent node and a path of element names to that subnode.
      static org.w3c.dom.Node getUnionNode​(org.w3c.dom.Node node)  
      static boolean isListWithItemType​(org.w3c.dom.Node node)
      Returns whether the specified node represents a with a nested .
      static boolean isMixed​(org.w3c.dom.Node node)
      This method checks mixed=true attribute is set either on complexType or complexContent element.
      static boolean isSimpleSchemaType​(QName qname)
      Determine if a QName is a simple XML Schema type
      static boolean isSimpleTypeOrSimpleContent​(org.w3c.dom.Node node)
      If the specified node is a simple type or contains simpleContent, return true
      static boolean isSimpleTypeWithUnion​(org.w3c.dom.Node node)  
      static boolean isWrappedType​(org.w3c.dom.Node node)
      This method checks out if the given node satisfies the 3rd condition of the "wrapper" style: such an element (a wrapper) must be of a complex type defined using the xsd:sequence compositor and containing only elements declarations.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SchemaUtils

        public SchemaUtils()
    • Method Detail

      • isMixed

        public static boolean isMixed​(org.w3c.dom.Node node)
        This method checks mixed=true attribute is set either on complexType or complexContent element.
      • getUnionNode

        public static org.w3c.dom.Node getUnionNode​(org.w3c.dom.Node node)
      • getListNode

        public static org.w3c.dom.Node getListNode​(org.w3c.dom.Node node)
      • isSimpleTypeWithUnion

        public static boolean isSimpleTypeWithUnion​(org.w3c.dom.Node node)
      • isWrappedType

        public static boolean isWrappedType​(org.w3c.dom.Node node)
        This method checks out if the given node satisfies the 3rd condition of the "wrapper" style: such an element (a wrapper) must be of a complex type defined using the xsd:sequence compositor and containing only elements declarations. (excerpt from JAX-RPC spec 1.1 Maintenanace Review 2 Chapter 6 Section 4.1.)
        Parameters:
        node -
        Returns:
      • getContainedElementDeclarations

        public static java.util.Vector getContainedElementDeclarations​(org.w3c.dom.Node node,
                                                                       SymbolTable symbolTable)
        If the specified node represents a supported JAX-RPC complexType or simpleType, a Vector is returned which contains ElementDecls for the child element names. If the element is a simpleType, an ElementDecls is built representing the restricted type with the special name "value". If the element is a complexType which has simpleContent, an ElementDecl is built representing the extended type with the special name "value". This method does not return attribute names and types (use the getContainedAttributeTypes) If the specified node is not a supported JAX-RPC complexType/simpleType/element null is returned.
        Parameters:
        node -
        symbolTable -
        Returns:
      • getTextByPath

        public static java.lang.String getTextByPath​(org.w3c.dom.Node root,
                                                     java.lang.String path)
                                              throws org.w3c.dom.DOMException
        Returns all textual nodes of a subnode defined by a parent node and a path of element names to that subnode.
        Parameters:
        root - Parent node.
        path - Path of element names to text of interest, delimited by "/".
        Throws:
        org.w3c.dom.DOMException
      • getAnnotationDocumentation

        public static java.lang.String getAnnotationDocumentation​(org.w3c.dom.Node typeNode)
        Returns the complete text of the child xsd:annotation/xsd:documentation element from the provided node. Only the first annotation element and the first documentation element in the annotation element will be used.
        Parameters:
        typeNode - Parent node.
      • getElementAnonQName

        public static QName getElementAnonQName​(org.w3c.dom.Node node)
        Returns the WSDL2Java QName for the anonymous type of the element or null.
        Parameters:
        node -
        Returns:
      • getAttributeAnonQName

        public static QName getAttributeAnonQName​(org.w3c.dom.Node node)
        Returns the WSDL2Java QName for the anonymous type of the attribute or null.
        Parameters:
        node -
        Returns:
      • isSimpleTypeOrSimpleContent

        public static boolean isSimpleTypeOrSimpleContent​(org.w3c.dom.Node node)
        If the specified node is a simple type or contains simpleContent, return true
        Parameters:
        node -
        Returns:
      • getComplexElementRestrictionBase

        public static TypeEntry getComplexElementRestrictionBase​(org.w3c.dom.Node node,
                                                                 SymbolTable symbolTable)
        Look for the base type of node iff node is a complex type that has been derived by restriction; otherwise return null.
        Parameters:
        node -
        symbolTable -
        Returns:
      • getComplexElementExtensionBase

        public static TypeEntry getComplexElementExtensionBase​(org.w3c.dom.Node node,
                                                               SymbolTable symbolTable)
        If the specified node represents a supported JAX-RPC complexType/element which extends another complexType. The Type of the base is returned.
        Parameters:
        node -
        symbolTable -
        Returns:
      • getSimpleTypeBase

        public static QName getSimpleTypeBase​(org.w3c.dom.Node node)
        If the specified node represents a 'normal' non-enumeration simpleType, the QName of the simpleType base is returned.
        Parameters:
        node -
        Returns:
      • getContainedSimpleTypes

        public static QName[] getContainedSimpleTypes​(org.w3c.dom.Node node)
        Method getContainedSimpleTypes
        Parameters:
        node -
        Returns:
      • getRestrictionOrExtensionNode

        public static org.w3c.dom.Node getRestrictionOrExtensionNode​(org.w3c.dom.Node node)
        Returns the contained restriction or extension node underneath the specified node. Returns null if not found
        Parameters:
        node -
        Returns:
      • getArrayComponentQName

        public static QName getArrayComponentQName​(org.w3c.dom.Node node,
                                                   IntHolder dims,
                                                   BooleanHolder underlTypeNillable,
                                                   QNameHolder itemQName,
                                                   BooleanHolder forElement,
                                                   SymbolTable symbolTable)
        If the specified node represents an array encoding of one of the following forms, then return the qname repesenting the element type of the array.
        Parameters:
        node - is the node
        dims - is the output value that contains the number of dimensions if return is not null
        itemQName - will end up containing the "inner" QName for a wrapped literal array
        Returns:
        QName or null
      • getCollectionComponentQName

        public static QName getCollectionComponentQName​(org.w3c.dom.Node node,
                                                        QNameHolder itemQName,
                                                        BooleanHolder forElement,
                                                        SymbolTable symbolTable)
        If the specified node represents an element that references a collection then return the qname repesenting the component of the collection.

        returns qname for"xsd:string"

        returns qname for"xsd:string"

        returns qname for "alias"

        Parameters:
        node - is the Node
        Returns:
        QName of the compoent of the collection
      • getContainedAttributeTypes

        public static java.util.Vector getContainedAttributeTypes​(org.w3c.dom.Node node,
                                                                  SymbolTable symbolTable)
        Return the attribute names and types if any in the node The even indices are the attribute types (TypeEntry) and the odd indices are the corresponding names (Strings).

        Example:

        Parameters:
        node -
        symbolTable -
        Returns:
      • isSimpleSchemaType

        public static boolean isSimpleSchemaType​(QName qname)
        Determine if a QName is a simple XML Schema type
        Parameters:
        qname -
        Returns:
      • getBaseType

        public static TypeEntry getBaseType​(TypeEntry type,
                                            SymbolTable symbolTable)
        Returns the base type of a given type with its symbol table. This logic is extracted from JavaTypeWriter's constructor() method for reusing.
        Parameters:
        type -
        symbolTable -
        Returns:
      • isListWithItemType

        public static boolean isListWithItemType​(org.w3c.dom.Node node)
        Returns whether the specified node represents a with a nested .
        Parameters:
        node -
        Returns:
      • getListItemType

        public static QName getListItemType​(org.w3c.dom.Node node)
        Returns the value of itemType attribute of in
        Parameters:
        node -
        Returns: