org.exolab.castor.xml.util

Class XMLClassDescriptorImpl

Implemented Interfaces:
ClassDescriptor, ClassValidator, TypeValidator, XMLClassDescriptor
Known Direct Subclasses:
AccessTypeDescriptor, BindingDescriptor, BindingTypeDescriptor, BindXmlAutoNamingTypeDescriptor, BindXmlDescriptor, BindXmlNodeTypeDescriptor, CacheTypeMappingDescriptor, ClassMappingDescriptor, ClassTypeDescriptor, CollectionTypeDescriptor, ComponentBindingTypeChoiceDescriptor, ComponentBindingTypeDescriptor, ContainerDescriptor, DirtyTypeDescriptor, FieldMappingDescriptor, FieldTypeCollectionTypeDescriptor, FieldTypeDescriptor, IncludeDescriptor, IncludeTypeDescriptor, InterfaceDescriptor, IntrospectedXMLClassDescriptor, KeyGeneratorDefDescriptor, LdapDescriptor, MappingRootDescriptor, MapToDescriptor, NamingTypeDescriptor, NamingXMLTypeDescriptor, PackageTypeChoiceDescriptor, PackageTypeDescriptor, ParamDescriptor, PathTypeDescriptor, SqlDescriptor, TypeTypeDescriptor, 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: 1.1.1.1 $ $Date: 2003/03/03 07:09:49 $
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.
boolean
canAccept(String fieldName, Object object)
Returns true if the given object represented by this XMLClassDescriptor can accept a member whose name is given.
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, 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()
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.
(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
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
protected 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
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

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

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:
  • an XMLFieldDescriptor of this XMLClassDescriptorImpl that matches the given field name exists.
  • A value has not already been set for the field.
  • If the XMLClassDescriptorImpl represents a CHOICE then no other value must have been set.
Specified by:
canAccept in interface XMLClassDescriptor
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.
Specified by:
getAccessMode in interface ClassDescriptor
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,
                                             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
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.

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.

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

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.

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)
            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-2003. All rights reserved http://www.intalio.com