Oracle Fusion Middleware Java API Reference for Oracle ADF Model
11g Release 1 (11.1.1)

E10653-04

oracle.adf.model.adapter.dataformat
Class XSDHandler

java.lang.Object
  extended by oracle.adf.model.adapter.dataformat.XSDHandler
All Implemented Interfaces:
FormatStructureHandler

public class XSDHandler
extends java.lang.Object
implements FormatStructureHandler

The XSDHandler class parses an XML Schema definition document and creates the structure information.

Input must be set using any of the addSchema methods. The method build must be called after adding the required schema documents. This method initialises the member variables and sets up the object for use. Otherwise, all the helper methods return null.

A lookup table of all the global elements against its namespace is maintained as AccessorDef objects. The method getType may be used to obtain an element by name and namespace.

We then build a list of all the top-level elements in buildElementSet. The method buildSchemaTree descends into the top-level elements and creates a tree representing the schema's structure.

The getXSDTree method returns the tree representation of the input schema document/s.

On the resolution of each global element, it is added to a lookup table of elements against its namespace. This allows the method getType to quickly lookup a type by name and namespace and return its AccessorDef representation. The member variable mTypesSet encloses the lookup table against each namespace declared in the schema document.

The tree structure is in accordance with JSR227 specification. An item of data (<element>) is represented by a StructureDef. The <element>'s attributes can be obtained calling StructureDef's getAttribute method. If the <element> has child elements, they can be obtained by calling the getAccessors method. This returns a container of AccessorDef objects. It's getStructure method returns a StructureDef which represents the parent's child element. XML specific information against <element> such as maxOccurs, nillable and other such Annotations and Facets can be obtained by calling AttributeDef'sgetProperty or getProperties method.

The leaf children of a complex type or a top level element node is being added as an attribute against the enclosing element in the structureDefinition. To distinguish between leaf element and attribute, a prpoerty (LEAFELEMENT_HINT,'value') is added to the attribute for leaf element. Example 1: Here: element:dept is treated as an attribute of element: company. A property(LEAFELEMENT_HINT,LEAFELEMENT_NO_ATTRIBUTE) is added for the attribute:dept. Example 2: For this usecase, a structureDef is created for element:dept with two attributes: no and _text. Text node for element dept is represented as an attribute _text. A property (LEAFELEMENT_HINT,LEAFELEMENT_WITH_ATTRIBUTE) is added for the accessor definition of element dept.


Field Summary
static java.lang.String ARRAY_ITEM
           
static java.lang.String ENUMERATION
           
static java.lang.String LEAFELEMENT_DATA
           
static java.lang.String MAX_OCCURS
           
static java.lang.String MIN_OCCURS
           
static java.lang.String NAMESPACE
           
static java.lang.String NILLABLE
           
static java.lang.String TYPE
          A set of constants that are retrieved from a type and stored in its 'properties'.
 
Constructor Summary
XSDHandler()
           
XSDHandler(java.lang.String rootName)
          Initialises the XML Data Structure with a name.
 
Method Summary
 void addSchema(java.io.InputStream xsdStream)
          Add a schema definition specified by its InputStream to the pipeline.
 void addSchema(Node node)
          Add a schema defintion specified by the Node.
 void addSchema(java.io.Reader xsdReader)
          Add a schema defintion specified by its Reader to the pipeline.
 void addSchema(java.lang.String xsdLocation)
          Add a schema defintion specified by its URL location to the pipeline.
 void addSchema(java.net.URL xsdURL)
          Add a schema defintion specified by its URL to the pipeline.
 void build()
          Builds the object and initialises the member variables for use.
 java.lang.String getSchemaProperty(java.lang.String targetNamespace, java.lang.String name)
          Returns the property value of the schema given its namespace and name.
 StructureDefinition getSchemaTree()
          Returns the XSD tree in the form of StructureDefinition.
 StructureDefinition getStructure(java.lang.String name, DefinitionContext ctx)
          Returns the structure definition extracted for the data format.
 java.util.List getTopLevelElements()
          Returns an List of the top-level elements in all the namespaces defined in this schema.
 java.lang.Object getType(java.lang.String namespace, java.lang.String typeName)
          Returns the AccessorDef or a AttributeDef representation of a type given its namespace.
 boolean isAttributeFormDefault(java.lang.String targetNamespace)
          Determines if the attributes in the given namespace is qualified.
 boolean isElementFormDefault(java.lang.String targetNamespace)
          Determines if the elements in the given namespace is qualified.
 boolean isNamespaceDefined(java.lang.String namespace)
          Determines if the given namespace is defined in the current schema.
static void main(java.lang.String[] args)
           
 void printAllTypes()
           
 void printProperties(java.util.Map props, java.lang.String padding)
           
 void printSchemaMetadata()
           
 void printTree(StructureDefinition struct, int indent)
           
 void setRootBindingPath(java.lang.String path)
          Sets the root bind path.
 void setRootElementName(java.lang.String rootElemName)
          Sets the root element name.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TYPE

public static final java.lang.String TYPE
A set of constants that are retrieved from a type and stored in its 'properties'.

See Also:
Constant Field Values

ENUMERATION

public static final java.lang.String ENUMERATION
See Also:
Constant Field Values

MIN_OCCURS

public static final java.lang.String MIN_OCCURS
See Also:
Constant Field Values

MAX_OCCURS

public static final java.lang.String MAX_OCCURS
See Also:
Constant Field Values

NILLABLE

public static final java.lang.String NILLABLE
See Also:
Constant Field Values

NAMESPACE

public static final java.lang.String NAMESPACE
See Also:
Constant Field Values

LEAFELEMENT_DATA

public static final java.lang.String LEAFELEMENT_DATA
See Also:
Constant Field Values

ARRAY_ITEM

public static final java.lang.String ARRAY_ITEM
See Also:
Constant Field Values
Constructor Detail

XSDHandler

public XSDHandler()

XSDHandler

public XSDHandler(java.lang.String rootName)
Initialises the XML Data Structure with a name.

Parameters:
rootName - Name for the XML data structure
Method Detail

setRootElementName

public void setRootElementName(java.lang.String rootElemName)
Sets the root element name.

Parameters:
rootElemName - root element name.

addSchema

public void addSchema(java.lang.String xsdLocation)
               throws AdapterException
Add a schema defintion specified by its URL location to the pipeline.

Parameters:
xsdLocation - URL location of the schema defintion.
Throws:
AdapterException - If error occurs while adding this defintion to the list. The URL location might be invalid or inaccessible.

addSchema

public void addSchema(java.net.URL xsdURL)
               throws AdapterException
Add a schema defintion specified by its URL to the pipeline.

Parameters:
xsdURL - URL of the schema definition.
Throws:
AdapterException - If error occus while adding this definition to the list. The URL might be invalid or inaccessible.

addSchema

public void addSchema(java.io.Reader xsdReader)
Add a schema defintion specified by its Reader to the pipeline.

Parameters:
xsdReader - Reader object containing the schema definition.

addSchema

public void addSchema(java.io.InputStream xsdStream)
Add a schema definition specified by its InputStream to the pipeline.

Parameters:
xsdStream - InputStream object containing the schema definition.

addSchema

public void addSchema(Node node)
Add a schema defintion specified by the Node.

Parameters:
node - Root node of the schema defintion.

setRootBindingPath

public void setRootBindingPath(java.lang.String path)
Sets the root bind path.

Parameters:
path - root binding.

build

public void build()
           throws AdapterException
Builds the object and initialises the member variables for use.

This method must be called after setting up the input using any of the addSchema methods and before calling any of the helper methods.

Throws:
AdapterException - If error occurs while parsing the schema.

getSchemaTree

public StructureDefinition getSchemaTree()
Returns the XSD tree in the form of StructureDefinition.

Returns:
A StructureDefinition object representing the structure of top-level elements of the XML Schema document.

getType

public java.lang.Object getType(java.lang.String namespace,
                                java.lang.String typeName)
Returns the AccessorDef or a AttributeDef representation of a type given its namespace. To obtain the underlying data structure of a AccessorDef, call it's getStructure method.

Parameters:
namespace - Namespace to which the type belongs.
typeName - Name of the type.
Returns:
Returns either a AccessorDef or a AttributeDef object if the type is found, otherwise returns null.

isElementFormDefault

public boolean isElementFormDefault(java.lang.String targetNamespace)
Determines if the elements in the given namespace is qualified.

Parameters:
targetNamespace - Namespace whose property needs to be queried.
Returns:
Returns true if the elements in the given namespace are qualified. Returns false if the elements are unqualified or the given namespace does not exist.

isAttributeFormDefault

public boolean isAttributeFormDefault(java.lang.String targetNamespace)
Determines if the attributes in the given namespace is qualified.

Parameters:
targetNamespace - Namespace whose property needs to be queried.
Returns:
Retruns true if the attributes in the given namespace are qualified. Returns false if the attributes are unqualified or the given namespace does not exist.

getSchemaProperty

public java.lang.String getSchemaProperty(java.lang.String targetNamespace,
                                          java.lang.String name)
Returns the property value of the schema given its namespace and name.

Parameters:
targetNamespace - Namespace whose property needs to be queried.
name - Name of the property whose value is to be fetched.
Returns:
Returns the property value if both the namespace and the property exists. Otherwise returns null.

isNamespaceDefined

public boolean isNamespaceDefined(java.lang.String namespace)
Determines if the given namespace is defined in the current schema.

Parameters:
namespace - Name of the namespace.
Returns:
Returns true if this namespace is defined in this schema, otherwise returns false.

getStructure

public StructureDefinition getStructure(java.lang.String name,
                                        DefinitionContext ctx)
Returns the structure definition extracted for the data format.

Specified by:
getStructure in interface FormatStructureHandler
Parameters:
name - name of the root structure.
ctx - definition context information.
Returns:
the structure information extracted.

getTopLevelElements

public java.util.List getTopLevelElements()
Returns an List of the top-level elements in all the namespaces defined in this schema.

Returns:
An List of the top-level elements.

printTree

public void printTree(StructureDefinition struct,
                      int indent)

printProperties

public void printProperties(java.util.Map props,
                            java.lang.String padding)

printAllTypes

public void printAllTypes()

printSchemaMetadata

public void printSchemaMetadata()

main

public static void main(java.lang.String[] args)

Oracle Fusion Middleware Java API Reference for Oracle ADF Model
11g Release 1 (11.1.1)

E10653-04

Copyright © 1997, 2010, Oracle. All rights reserved.