The core implementation of XMLClassDescriptor. This
class is used by both generated source code as well
as the XMLMappingLoader.
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.
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.
- canAccept in interface XMLClassDescriptor
fieldName
- the name of the field to checkobject
- the object represented by this XMLCLassDescriptor
- 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.
- true if the XMLFieldDescriptor is part of this
XMLClassDescriptor, otherwise false.
getAttributeDescriptors
public XMLFieldDescriptor[] getAttributeDescriptors()
Returns the set of XMLFieldDescriptors for all members
that should be marshalled as XML attributes.
- getAttributeDescriptors in interface XMLClassDescriptor
- 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.
- getContentDescriptor in interface XMLClassDescriptor
- 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.
- getElementDescriptors in interface XMLClassDescriptor
- an array of XMLFieldDescriptors for all members
that should be marshalled as XML elements.
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'
- getFieldDescriptor in interface XMLClassDescriptor
name
- the xml name to match against
- the matching descriptor, or null if no matching
descriptor is available.
getJavaClass
public Class getJavaClass()
Returns the Java class represented by this descriptor.
- getJavaClass in interface ClassDescriptor
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.
- getValidator in interface XMLClassDescriptor
- the type validator for the class described by this
ClassDescriptor.
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.
- 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.
- 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.
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
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
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.
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.
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
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
- the String representation of this XMLClassDescriptor
toXMLName
protected String toXMLName(String className)