org.exolab.castor.xml.util

Class XMLClassDescriptorImpl

public class XMLClassDescriptorImpl extends Validator implements XMLClassDescriptor

The core implementation of XMLClassDescriptor. This class is used by both generated source code as well as the XMLMappingLoader.

Version: $Revision: 1.1.1.1 $ $Date: 2003/03/03 07:09:49 $

Author: Keith Visco

Constructor Summary
XMLClassDescriptorImpl(Class type)
Creates an XMLClassDescriptor class used by the Marshalling Framework.
XMLClassDescriptorImpl(Class type, String xmlName)
Creates an XMLClassDescriptor class used by the Marshalling Framework.
protected XMLClassDescriptorImpl()
Protected constructor used by this class, and subclasses only
Method Summary
voidaddFieldDescriptor(XMLFieldDescriptor descriptor)
Adds the given XMLFieldDescriptor to the list of descriptors.
booleancanAccept(String fieldName, Object object)

Returns true if the given object represented by this XMLClassDescriptor can accept a member whose name is given.

booleancontains(XMLFieldDescriptor descriptor)
Returns true if the given XMLFieldDescriptor is contained within this XMLClassDescriptor.
AccessModegetAccessMode()
Returns the access mode specified for this class.
XMLFieldDescriptor[]getAttributeDescriptors()
Returns the set of XMLFieldDescriptors for all members that should be marshalled as XML attributes.
XMLFieldDescriptorgetContentDescriptor()
Returns the XMLFieldDescriptor for the member that should be marshalled as text content.
XMLFieldDescriptor[]getElementDescriptors()
Returns the set of XMLFieldDescriptors for all members that should be marshalled as XML elements.
ClassDescriptorgetExtends()
Returns the class descriptor of the class extended by this class.
XMLFieldDescriptorgetFieldDescriptor(String name, NodeType nodeType)
Returns the XML field descriptor matching the given xml name and nodeType.
FieldDescriptor[]getFields()
Returns a list of fields represented by this descriptor.
FieldDescriptorgetIdentity()
Returns the identity field, null if this class has no identity.
ClassgetJavaClass()
Returns the Java class represented by this descriptor.
StringgetNameSpacePrefix()
StringgetNameSpaceURI()
TypeValidatorgetValidator()
Returns a specific validator for the class described by this ClassDescriptor.
StringgetXMLName()
Returns the XML Name for the Class being described.
booleanhasContainerFields()
Returns true if this XMLClassDescriptorImpl has any fields which are container objects.
static booleanisPrimitive(Class type)
Returns true if the given class should be treated as a primitive type.
booleanremoveFieldDescriptor(XMLFieldDescriptor descriptor)
Removes the given XMLFieldDescriptor from the list of descriptors.
voidsetCompositorAsAll()
Sets the compositor for the fields of the described class to be ALL.
voidsetCompositorAsChoice()
Sets the compositor for the fields of the described class to be CHOICE.
voidsetCompositorAsSequence()
Sets the compositor for the fields of the described class to be a Sequence.
voidsetExtends(XMLClassDescriptor classDesc)
Sets the XMLClassDescriptor that this descriptor inherits from
protected voidsetExtendsWithoutFlatten(XMLClassDescriptor classDesc)
voidsetIdentity(XMLFieldDescriptor fieldDesc)
Sets the Identity FieldDescriptor, if the FieldDescriptor is not already a contained in this ClassDescriptor, it will be added
protected voidsetIntrospected(boolean introspected)
Sets a flag to indicate whether or not this XMLClassDescriptorImpl was created via introspection
protected voidsetJavaClass(Class type)
Sets the Class type being described by this descriptor.
voidsetNameSpacePrefix(String nsPrefix)
Sets the namespace prefix used when marshalling as XML.
voidsetNameSpaceURI(String nsURI)
Sets the namespace URI used when marshalling and unmarshalling as XML.
voidsetXMLName(String xmlName)
Sets the XML name for the Class described by this XMLClassDescriptor
voidsortDescriptors()
This method is used to keep the set of descriptors in the proper sorted lists.
StringtoString()
Returns the String representation of this XMLClassDescriptor
protected StringtoXMLName(String className)
voidvalidate(Object object)
Validates the given Object
voidvalidate(Object object, ValidationContext context)
Validates the given object

Constructor Detail

XMLClassDescriptorImpl

public XMLClassDescriptorImpl(Class type)
Creates an XMLClassDescriptor class used by the Marshalling Framework.

Parameters: type the Class type with which this ClassDescriptor describes.

XMLClassDescriptorImpl

public XMLClassDescriptorImpl(Class type, String xmlName)
Creates an XMLClassDescriptor class used by the Marshalling Framework.

Parameters: type the Class type with which this ClassDescriptor describes.

XMLClassDescriptorImpl

protected XMLClassDescriptorImpl()
Protected constructor used by this class, and subclasses only

Method Detail

addFieldDescriptor

public void addFieldDescriptor(XMLFieldDescriptor descriptor)
Adds the given XMLFieldDescriptor to the list of descriptors. The descriptor will be added to the appropriate list by calling XMLFieldDescriptor#getNodeType() to determine it's type.

Parameters: descriptor the XMLFieldDescriptor to add

canAccept

public boolean canAccept(String fieldName, Object object)

Returns true if the given object represented by this XMLClassDescriptor can accept a member whose name is given. An XMLClassDescriptor can accept a field if it contains a descriptor that matches the given name anf if the given object can hold this field (i.e a value is not already set for this field). The different criterias for accepting a field with a given name are:

Parameters: fieldName the name of the field to check object the object represented by this XMLCLassDescriptor

Returns: true if the given object represented by this XMLClassDescriptor can accept a member whose name is given.

contains

public boolean contains(XMLFieldDescriptor descriptor)
Returns true if the given XMLFieldDescriptor is contained within this XMLClassDescriptor.

Returns: true if the XMLFieldDescriptor is part of this XMLClassDescriptor, otherwise false.

getAccessMode

public AccessMode getAccessMode()
Returns the access mode specified for this class.

Returns: The access mode

getAttributeDescriptors

public XMLFieldDescriptor[] getAttributeDescriptors()
Returns the set of XMLFieldDescriptors for all members that should be marshalled as XML attributes.

Returns: an array of XMLFieldDescriptors for all members that should be marshalled as XML attributes.

getContentDescriptor

public XMLFieldDescriptor getContentDescriptor()
Returns the XMLFieldDescriptor for the member that should be marshalled as text content.

Returns: the XMLFieldDescriptor for the member that should be marshalled as text content.

getElementDescriptors

public XMLFieldDescriptor[] getElementDescriptors()
Returns the set of XMLFieldDescriptors for all members that should be marshalled as XML elements.

Returns: an array of XMLFieldDescriptors for all members that should be marshalled as XML elements.

getExtends

public ClassDescriptor getExtends()
Returns the class descriptor of the class extended by this class.

Returns: The extended class descriptor

getFieldDescriptor

public XMLFieldDescriptor getFieldDescriptor(String name, NodeType nodeType)
Returns the XML field descriptor matching the given xml name and nodeType. If NodeType is null, then either an AttributeDescriptor, or ElementDescriptor may be returned. Null is returned if no matching descriptor is available. If an field is matched in one of the container field, it will return the container field that contain the field named 'name'

Parameters: name the xml name to match against nodeType, the NodeType to match against, or null if the node type is not known.

Returns: the matching descriptor, or null if no matching descriptor is available.

getFields

public FieldDescriptor[] getFields()
Returns a list of fields represented by this descriptor.

Returns: A list of fields

getIdentity

public FieldDescriptor getIdentity()
Returns the identity field, null if this class has no identity.

Returns: The identity field

getJavaClass

public Class getJavaClass()
Returns the Java class represented by this descriptor.

Returns: The Java class

getNameSpacePrefix

public String getNameSpacePrefix()

Returns: the namespace prefix to use when marshalling as XML.

getNameSpaceURI

public String getNameSpaceURI()

Returns: the namespace URI used when marshalling and unmarshalling as XML.

getValidator

public TypeValidator getValidator()
Returns a specific validator for the class described by this ClassDescriptor. A null value may be returned if no specific validator exists.

Returns: the type validator for the class described by this ClassDescriptor.

getXMLName

public String getXMLName()
Returns the XML Name for the Class being described.

Returns: the XML name.

hasContainerFields

public boolean hasContainerFields()
Returns true if this XMLClassDescriptorImpl has any fields which are container objects. A container object is a Java object which holds data the should be marshalled, but the object itself should not be. So the container object will be "unwrapped" and the fields associated with the container will appear as if they were part of this class.

Returns: true if any of the fields are container fields, otherwise false.

isPrimitive

static boolean isPrimitive(Class type)
Returns true if the given class should be treated as a primitive type. This method will return true for all Java primitive types, the set of primitive object wrappers, as well as Strings.

Returns: true if the given class should be treated as a primitive type

removeFieldDescriptor

public boolean removeFieldDescriptor(XMLFieldDescriptor descriptor)
Removes the given XMLFieldDescriptor from the list of descriptors.

Parameters: descriptor the XMLFieldDescriptor to remove

UNKNOWN: true if the descriptor was removed.

setCompositorAsAll

public void setCompositorAsAll()
Sets the compositor for the fields of the described class to be ALL.

setCompositorAsChoice

public void setCompositorAsChoice()
Sets the compositor for the fields of the described class to be CHOICE.

setCompositorAsSequence

public void setCompositorAsSequence()
Sets the compositor for the fields of the described class to be a Sequence.

setExtends

public void setExtends(XMLClassDescriptor classDesc)
Sets the XMLClassDescriptor that this descriptor inherits from

Parameters: classDesc the XMLClassDescriptor that this descriptor extends

setExtendsWithoutFlatten

protected void setExtendsWithoutFlatten(XMLClassDescriptor classDesc)

setIdentity

public void setIdentity(XMLFieldDescriptor fieldDesc)
Sets the Identity FieldDescriptor, if the FieldDescriptor is not already a contained in this ClassDescriptor, it will be added

setIntrospected

protected void setIntrospected(boolean introspected)
Sets a flag to indicate whether or not this XMLClassDescriptorImpl was created via introspection

Parameters: introspected a boolean, when true indicated that this XMLClassDescriptor was created via introspection

setJavaClass

protected void setJavaClass(Class type)
Sets the Class type being described by this descriptor.

UNKNOWN: the Class type being described

setNameSpacePrefix

public void setNameSpacePrefix(String nsPrefix)
Sets the namespace prefix used when marshalling as XML.

Parameters: nsPrefix the namespace prefix used when marshalling the "described" object

setNameSpaceURI

public void setNameSpaceURI(String nsURI)
Sets the namespace URI used when marshalling and unmarshalling as XML.

Parameters: nsURI the namespace URI used when marshalling and unmarshalling the "described" Object.

setXMLName

public void setXMLName(String xmlName)
Sets the XML name for the Class described by this XMLClassDescriptor

Parameters: xmlName the XML name for the Class described by this XMLClassDescriptor

sortDescriptors

public void sortDescriptors()
This method is used to keep the set of descriptors in the proper sorted lists. If you dynamically change the NodeType of an XMLFieldDescriptor after adding it the this ClassDescriptor, then call this method.

toString

public String toString()
Returns the String representation of this XMLClassDescriptor

Returns: the String representation of this XMLClassDescriptor

toXMLName

protected String toXMLName(String className)

validate

public void validate(Object object)
Validates the given Object

Parameters: object the Object to validate

validate

public void validate(Object object, ValidationContext context)
Validates the given object

Parameters: object the Object to validate context the ValidationContext

Intalio Inc. (C) 1999-2003. All rights reserved http://www.intalio.com