org.exolab.castor.xml.util

Class XMLClassDescriptorImpl

Implemented Interfaces:
ClassDescriptor, ClassValidator, TypeValidator, XMLClassDescriptor
Known Direct Subclasses:
AutomaticNamingTypeDescriptor, BindingDescriptor, BindingTypeDescriptor, BindXmlAutoNamingTypeDescriptor, BindXmlAutoNamingTypeDescriptor, BindXmlDescriptor, BindXmlNodeTypeDescriptor, BindXmlNodeTypeDescriptor, BugFixDescriptor, CacheTypeMappingDescriptor, CallMethodDescriptor, CategoryTypeDescriptor, ClassChoiceDescriptor, ClassMappingAccessTypeDescriptor, ClassMappingAccessTypeDescriptor, ClassMappingDescriptor, ClassTypeDescriptor, CollectionTypeDescriptor, ComponentBindingTypeChoiceDescriptor, ComponentBindingTypeDescriptor, ConfigurationDescriptor, ConfigurationTypeDescriptor, ContainerDescriptor, ContentMemberTypeDescriptor, CustomTestTypeDescriptor, DatabaseChoiceDescriptor, DatabaseDescriptor, DataSourceDescriptor, DriverDescriptor, EnumBindingTypeDescriptor, EnumClassNameDescriptor, EnumerationDescriptor, EnumMemberDescriptor, ExcludeDescriptor, ExcludesDescriptor, ExpectedSourcesDescriptor, FailureStepTypeDescriptor, FailureTypeDescriptor, FieldHandlerDefDescriptor, FieldMappingCollectionTypeDescriptor, FieldMappingCollectionTypeDescriptor, FieldMappingDescriptor, FieldTypeCollectionTypeDescriptor, FieldTypeDescriptor, FieldTypeVisibilityTypeDescriptor, ForceDescriptor, ForcesDescriptor, IncludeDescriptor, IncludeTypeDescriptor, InterfaceDescriptor, IntrospectedXMLClassDescriptor, JdoConfDescriptor, JndiDescriptor, KeyGeneratorDefDescriptor, LdapDescriptor, ListenerTypeDescriptor, MappingDescriptor, MappingRootDescriptor, MapToDescriptor, MarshallingTestDescriptor, NamedQueryDescriptor, NamingTypeDescriptor, NamingXMLTypeDescriptor, OnlySourceGenerationTestDescriptor, PackageTypeChoiceDescriptor, PackageTypeDescriptor, ParamDescriptor, ParamDescriptor, PropertyTypeDescriptor, QueryHintDescriptor, SchemaDifferencesTypeDescriptor, SchemaTestDescriptor, SourceGeneratorTestDescriptor, SqlDescriptor, SqlDirtyTypeDescriptor, SqlDirtyTypeDescriptor, StringTypeDescriptor, TestDescriptorChoiceDescriptor, TestDescriptorDescriptor, TransactionDemarcationDescriptor, TransactionManagerDescriptor, TypeTypeDescriptor, UnitTestCaseChoiceDescriptor, UnitTestCaseDescriptor, ValueDescriptor, VisibilityTypeDescriptor, XMLClassDescriptorAdapter

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: 7359 $ $Date: 2006-04-13 06:47:36 -0600 (Thu, 13 Apr 2006) $
Author:
Keith Visco

Constructor Summary

XMLClassDescriptorImpl()
Protected constructor used by this class, and subclasses only
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.

Method Summary

void
addFieldDescriptor(XMLFieldDescriptor descriptor)
Adds the given XMLFieldDescriptor to the list of descriptors.
protected void
addSequenceElement(XMLFieldDescriptor element)
Adds a XMLFieldDescriptor instance to the internally maintained list of sequence elements.
boolean
canAccept(String name, String namespace, Object object)
void
checkDescriptorForCorrectOrderWithinSequence(XMLFieldDescriptor elementDescriptor, UnmarshalState parentState, String xmlName)
Checks whether the given XMLFieldDescriptor is the one actually expected, given the natural order as defined by a sequence definition
boolean
contains(XMLFieldDescriptor descriptor)
Returns true if the given XMLFieldDescriptor is contained within this XMLClassDescriptor.
AccessMode
getAccessMode()
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.
XMLFieldDescriptor
getContentDescriptor()
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.
ClassDescriptor
getExtends()
Returns the class descriptor of the class extended by this class.
XMLFieldDescriptor
getFieldDescriptor(String name, String namespace, 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.
FieldDescriptor
getIdentity()
Returns the identity field, null if this class has no identity.
Class
getJavaClass()
Returns the Java class represented by this descriptor.
String
getNameSpacePrefix()
String
getNameSpaceURI()
List
getSubstitutes()
TypeValidator
getValidator()
Returns a specific validator for the class described by this ClassDescriptor.
String
getXMLName()
Returns the XML Name for the Class being described.
boolean
hasContainerFields()
Returns true if this XMLClassDescriptorImpl has any fields which are container objects.
boolean
isChoice()
(package private) static boolean
isDefaultPrimitiveValue(Object value)
Checks to see if the given Object is a java primitive (does not check for primitive wrappers) and has a value that is equal to the default value for that primitive.
boolean
isElementDefinition()
Returns true if XML schema definition of this Class is that of a global element or element with anonymous type definition.
(package private) static boolean
isPrimitive(Class type)
Returns true if the given class should be treated as a primitive type.
boolean
removeFieldDescriptor(XMLFieldDescriptor descriptor)
Removes the given XMLFieldDescriptor from the list of descriptors.
void
setCompositorAsAll()
Sets the compositor for the fields of the described class to be ALL.
void
setCompositorAsChoice()
Sets the compositor for the fields of the described class to be CHOICE.
void
setCompositorAsSequence()
Sets the compositor for the fields of the described class to be a Sequence.
void
setElementDefinition(boolean elementDefinition)
Set elementDefinition to true to indicate Class XML schema definition is a global element or element with anonymous type.
void
setExtends(XMLClassDescriptor classDesc)
Sets the XMLClassDescriptor that this descriptor inherits from
protected void
setExtendsWithoutFlatten(XMLClassDescriptor classDesc)
void
setIdentity(XMLFieldDescriptor fieldDesc)
Sets the Identity FieldDescriptor, if the FieldDescriptor is not already a contained in this ClassDescriptor, it will be added
protected void
setIntrospected(boolean introspected)
Sets a flag to indicate whether or not this XMLClassDescriptorImpl was created via introspection
void
setJavaClass(Class type)
Sets the Class type being described by this descriptor.
void
setNameSpacePrefix(String nsPrefix)
Sets the namespace prefix used when marshalling as XML.
void
setNameSpaceURI(String nsURI)
Sets the namespace URI used when marshalling and unmarshalling as XML.
void
setSubstitutes(List substitutes)
void
setXMLName(String xmlName)
Sets the XML name for the Class described by this XMLClassDescriptor
void
sortDescriptors()
This method is used to keep the set of descriptors in the proper sorted lists.
String
toString()
Returns the String representation of this XMLClassDescriptor
protected String
toXMLName(String className)
void
validate(Object object)
Validates the given Object
void
validate(Object object, ValidationContext context)
Validates the given object

Methods inherited from class org.exolab.castor.xml.Validator

checkUnresolvedIdrefs, validate, validate

Constructor Details

XMLClassDescriptorImpl

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

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.

Method Details

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

addSequenceElement

protected void addSequenceElement(XMLFieldDescriptor element)
Adds a XMLFieldDescriptor instance to the internally maintained list of sequence elements.
Parameters:
element - An XMLFieldDescriptor instance for an element definition.

canAccept

public boolean canAccept(String name,
                         String namespace,
                         Object object)
Specified by:
canAccept in interface XMLClassDescriptor
See Also:
org.exolab.castor.xml.XMLClassDescriptor.canAccept(java.lang.String, java.lang.String, java.lang.Object)

checkDescriptorForCorrectOrderWithinSequence

public void checkDescriptorForCorrectOrderWithinSequence(XMLFieldDescriptor elementDescriptor,
                                                         UnmarshalState parentState,
                                                         String xmlName)
            throws ValidationException
Checks whether the given XMLFieldDescriptor is the one actually expected, given the natural order as defined by a sequence definition
Specified by:
checkDescriptorForCorrectOrderWithinSequence in interface XMLClassDescriptor
Parameters:
elementDescriptor - The XML field descriptor to be checked
Throws:
ValidationException - If the descriptor is not the one expected

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.
Specified by:
getAttributeDescriptors in interface XMLClassDescriptor
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.
Specified by:
getContentDescriptor in interface XMLClassDescriptor
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.
Specified by:
getElementDescriptors in interface XMLClassDescriptor
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.
Specified by:
getExtends in interface ClassDescriptor
Returns:
The extended class descriptor

getFieldDescriptor

public XMLFieldDescriptor getFieldDescriptor(String name,
                                             String namespace,
                                             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'

Specified by:
getFieldDescriptor in interface XMLClassDescriptor
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.
Specified by:
getFields in interface ClassDescriptor
Returns:
A list of fields

getIdentity

public FieldDescriptor getIdentity()
Returns the identity field, null if this class has no identity.
Specified by:
getIdentity in interface ClassDescriptor
Returns:
The identity field

getJavaClass

public Class getJavaClass()
Returns the Java class represented by this descriptor.
Specified by:
getJavaClass in interface ClassDescriptor
Returns:
The Java class

getNameSpacePrefix

public String getNameSpacePrefix()
Specified by:
getNameSpacePrefix in interface XMLClassDescriptor
Returns:
the namespace prefix to use when marshalling as XML.

getNameSpaceURI

public String getNameSpaceURI()
Specified by:
getNameSpaceURI in interface XMLClassDescriptor
Returns:
the namespace URI used when marshalling and unmarshalling as XML.

getSubstitutes

public List getSubstitutes()

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.
Specified by:
getValidator in interface XMLClassDescriptor
Returns:
the type validator for the class described by this ClassDescriptor.

getXMLName

public String getXMLName()
Returns the XML Name for the Class being described.
Specified by:
getXMLName in interface XMLClassDescriptor
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.

isChoice

public boolean isChoice()
Specified by:
isChoice in interface XMLClassDescriptor

isDefaultPrimitiveValue

(package private) static boolean isDefaultPrimitiveValue(Object value)
Checks to see if the given Object is a java primitive (does not check for primitive wrappers) and has a value that is equal to the default value for that primitive. This method will return true if the value is a java primitive with a default value.
Returns:
true if the value is a java primitive with a default value

isElementDefinition

public boolean isElementDefinition()
Returns true if XML schema definition of this Class is that of a global element or element with anonymous type definition.

isPrimitive

(package private) 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
Returns:
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.

setElementDefinition

public void setElementDefinition(boolean elementDefinition)
Set elementDefinition to true to indicate Class XML schema definition is a global element or element with anonymous type.
Parameters:
elementDefinition - flag to indicate XML definition is global element or element with anonymous type

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

public void setJavaClass(Class type)
Sets the Class type being described by this descriptor.
Parameters:
type - 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.

setSubstitutes

public void setSubstitutes(List substitutes)

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)
            throws ValidationException
Validates the given Object
Overrides:
validate in interface Validator
Parameters:
object - the Object to validate

validate

public void validate(Object object,
                     ValidationContext context)
            throws ValidationException
Validates the given object
Specified by:
validate in interface ClassValidator
validate in interface TypeValidator
Overrides:
validate in interface Validator
Parameters:
object - the Object to validate
context - the ValidationContext

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