org.apache.axis.wsdl.symbolTable
Class TypeEntry

java.lang.Object
  extended byorg.apache.axis.wsdl.symbolTable.SymTabEntry
      extended byorg.apache.axis.wsdl.symbolTable.TypeEntry
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
Element, Type

public abstract class TypeEntry
extends SymTabEntry
implements java.io.Serializable

This class represents a wsdl types entry that is supported by the WSDL2Java emitter. A TypeEntry has a QName representing its XML name and a name, which in the WSDL2Java back end is its full java name. The TypeEntry may also have a Node, which locates the definition of the emit type in the xml. A TypeEntry object extends SymTabEntry and is built by the SymbolTable class for each supported root complexType, simpleType, and elements that are defined or encountered.

SymTabEntry | TypeEntry / \ Type Element | | (BaseType, (DefinedElement, CollectionType CollectionElement, DefinedType, UndefinedElement) UndefinedType)

UndefinedType and UndefinedElement are placeholders when the real type or element is not encountered yet. Both of these implement the Undefined interface.

A TypeEntry whose java (or other language) name depends on an Undefined type, will have its name initialization deferred until the Undefined type is replaced with a defined type. The updateUndefined() method is invoked by the UndefinedDelegate to update the information.

Each TypeEntry whose language name depends on another TypeEntry will have the refType field set. For example: The TypeEntry for "foo" will have a refType set to the TypeEntry of "bar".

Another Example: The TypeEntry for "hobbyArray" will have a refType that locates the TypeEntry for xsd:string and the dims field will be "[]"

Author:
Rich Scheuerle (scheu@us.ibm.com)
See Also:
Serialized Form

Field Summary
protected  QName componentType
           
protected  java.util.Vector containedAttributes
          contained attributes in the schema's type definition
protected  java.util.Vector containedElements
          contained elements in the schema's type definition
protected  java.lang.String dims
          Field dims
protected  boolean isBaseType
          Field isBaseType
protected  boolean isSimpleType
          Field isSimpleType
protected  QName itemQName
          If this TypeEntry represents an array with elements inside a "wrapper" this field can optionally change the inner QName (default is ).
protected  org.w3c.dom.Node node
          Field node
protected  boolean onlyLiteralReference
          Field onlyLiteralReference
protected  TypeEntry refType
          Field refType
protected  java.util.HashSet types
          Field types
protected  boolean undefined
          Field undefined
protected  boolean underlTypeNillable
           
 
Fields inherited from class org.apache.axis.wsdl.symbolTable.SymTabEntry
name, qname
 
Constructor Summary
protected TypeEntry(QName pqName)
          Create a TypeEntry object for an xml construct name that represents a base type
protected TypeEntry(QName pqName, org.w3c.dom.Node pNode)
          Create a TypeEntry object for an xml construct that is not a base type
protected TypeEntry(QName pqName, TypeEntry refType, org.w3c.dom.Node pNode, java.lang.String dims)
          Create a TypeEntry object for an xml construct that references another type.
 
Method Summary
 java.lang.String getBaseType()
          Returns the Base Type Name.
 QName getComponentType()
          Return the QName of the component if this is an array type
 java.util.Vector getContainedAttributes()
           
 java.util.Vector getContainedElements()
           
 java.lang.String getDimensions()
          Return the dimensions of this type, which can be 0 or more "[]".
 QName getItemQName()
           
 java.util.HashSet getNestedTypes(SymbolTable symbolTable, boolean derivedFlag)
          This method returns a set of all the nested types.
 org.w3c.dom.Node getNode()
          Query the node for this type.
 TypeEntry getRefType()
          If this type references another type, return that type, otherwise return null.
protected  TypeEntry getUndefinedTypeRef()
          getUndefinedTypeRef returns the Undefined TypeEntry that this entry depends on or NULL.
 boolean getUnderlTypeNillable()
          Return whether the underlying type is nillable if this is an array type.
 boolean isBaseType()
          Method isBaseType
 boolean isOnlyLiteralReferenced()
          Is this type references ONLY as a literal type? If a binding's message's soapBody says: use="literal", then a type is referenced literally.
 boolean isSimpleType()
          Method isSimpleType
 void setBaseType(boolean baseType)
          Method setBaseType
 void setComponentType(QName componentType)
          Set the QName of the component if this is an array type
 void setContainedAttributes(java.util.Vector containedAttributes)
           
 void setContainedElements(java.util.Vector containedElements)
           
 void setItemQName(QName itemQName)
           
 void setOnlyLiteralReference(boolean set)
          Set the isOnlyLiteralReference flag.
 void setRefType(TypeEntry refType)
          Method setRefType
 void setSimpleType(boolean simpleType)
          Method setSimpleType
 void setUnderlTypeNillable(boolean underlTypeNillable)
          Set the boolean indicating whether underlying type of array is nillable.
 java.lang.String toString()
          Get string representation.
protected  java.lang.String toString(java.lang.String indent)
          Get string representation with indentation
protected  boolean updateUndefined(TypeEntry oldRef, TypeEntry newRef)
          UpdateUndefined is called when the ref TypeEntry is finally known.
 
Methods inherited from class org.apache.axis.wsdl.symbolTable.SymTabEntry
getDynamicVar, getName, getQName, isReferenced, setDynamicVar, setIsReferenced, setName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

node

protected org.w3c.dom.Node node
Field node


refType

protected TypeEntry refType
Field refType


dims

protected java.lang.String dims
Field dims


underlTypeNillable

protected boolean underlTypeNillable

componentType

protected QName componentType

itemQName

protected QName itemQName
If this TypeEntry represents an array with elements inside a "wrapper" this field can optionally change the inner QName (default is ).


undefined

protected boolean undefined
Field undefined


isBaseType

protected boolean isBaseType
Field isBaseType


isSimpleType

protected boolean isSimpleType
Field isSimpleType


onlyLiteralReference

protected boolean onlyLiteralReference
Field onlyLiteralReference


types

protected java.util.HashSet types
Field types


containedElements

protected java.util.Vector containedElements
contained elements in the schema's type definition


containedAttributes

protected java.util.Vector containedAttributes
contained attributes in the schema's type definition

Constructor Detail

TypeEntry

protected TypeEntry(QName pqName,
                    TypeEntry refType,
                    org.w3c.dom.Node pNode,
                    java.lang.String dims)
Create a TypeEntry object for an xml construct that references another type. Defer processing until refType is known.

Parameters:
pqName -
refType -
pNode -
dims -

TypeEntry

protected TypeEntry(QName pqName,
                    org.w3c.dom.Node pNode)
Create a TypeEntry object for an xml construct that is not a base type

Parameters:
pqName -
pNode -

TypeEntry

protected TypeEntry(QName pqName)
Create a TypeEntry object for an xml construct name that represents a base type

Parameters:
pqName -
Method Detail

getNode

public org.w3c.dom.Node getNode()
Query the node for this type.

Returns:

getBaseType

public java.lang.String getBaseType()
Returns the Base Type Name. For example if the Type represents a schema integer, "int" is returned. If this is a user defined type, null is returned.

Returns:

isBaseType

public boolean isBaseType()
Method isBaseType

Returns:

setBaseType

public void setBaseType(boolean baseType)
Method setBaseType

Parameters:
baseType -

isSimpleType

public boolean isSimpleType()
Method isSimpleType

Returns:

setSimpleType

public void setSimpleType(boolean simpleType)
Method setSimpleType

Parameters:
simpleType -

isOnlyLiteralReferenced

public boolean isOnlyLiteralReferenced()
Is this type references ONLY as a literal type? If a binding's message's soapBody says: use="literal", then a type is referenced literally. Note that that type's contained types (ie., an address contains a phone#) are not referenced literally. Since a type that is ONLY referenced as a literal may cause a generator to act differently (like WSDL2Java), this extra reference distinction is needed.

Returns:

setOnlyLiteralReference

public void setOnlyLiteralReference(boolean set)
Set the isOnlyLiteralReference flag.

Parameters:
set -

getUndefinedTypeRef

protected TypeEntry getUndefinedTypeRef()
getUndefinedTypeRef returns the Undefined TypeEntry that this entry depends on or NULL.

Returns:

updateUndefined

protected boolean updateUndefined(TypeEntry oldRef,
                                  TypeEntry newRef)
                           throws java.io.IOException
UpdateUndefined is called when the ref TypeEntry is finally known.

Parameters:
oldRef - The TypeEntry representing the Undefined TypeEntry
newRef - The replacement TypeEntry
Returns:
true if TypeEntry is changed in any way.
Throws:
java.io.IOException

getRefType

public TypeEntry getRefType()
If this type references another type, return that type, otherwise return null.

Returns:

setRefType

public void setRefType(TypeEntry refType)
Method setRefType

Parameters:
refType -

getDimensions

public java.lang.String getDimensions()
Return the dimensions of this type, which can be 0 or more "[]".

Returns:

getUnderlTypeNillable

public boolean getUnderlTypeNillable()
Return whether the underlying type is nillable if this is an array type.

Returns:
true if it is an array and nillable

setUnderlTypeNillable

public void setUnderlTypeNillable(boolean underlTypeNillable)
Set the boolean indicating whether underlying type of array is nillable.


getComponentType

public QName getComponentType()
Return the QName of the component if this is an array type

Returns:
QName of array elements or null

setComponentType

public void setComponentType(QName componentType)
Set the QName of the component if this is an array type


getItemQName

public QName getItemQName()

setItemQName

public void setItemQName(QName itemQName)

toString

public java.lang.String toString()
Get string representation.

Overrides:
toString in class SymTabEntry
Returns:

toString

protected java.lang.String toString(java.lang.String indent)
Get string representation with indentation

Overrides:
toString in class SymTabEntry
Parameters:
indent -
Returns:

getNestedTypes

public java.util.HashSet getNestedTypes(SymbolTable symbolTable,
                                        boolean derivedFlag)
This method returns a set of all the nested types. Nested types are types declared within this TypeEntry (or descendents) plus any extended types and the extended type nested types The elements of the returned HashSet are Types.

Parameters:
symbolTable - is the symbolTable
derivedFlag - should be set if all dependendent derived types should also be returned.
Returns:

getContainedAttributes

public java.util.Vector getContainedAttributes()
Returns:
Returns the containedAttributes.

setContainedAttributes

public void setContainedAttributes(java.util.Vector containedAttributes)
Parameters:
containedAttributes - The containedAttributes to set.

getContainedElements

public java.util.Vector getContainedElements()
Returns:
Returns the containedElements.

setContainedElements

public void setContainedElements(java.util.Vector containedElements)
Parameters:
containedElements - The containedElements to set.


Copyright © 2005 Apache Web Services Project. All Rights Reserved.