ElementDescriptor describes the XML elements
to be created for a bean instance.
It contains AttributeDescriptor's for all it's attributes
and ElementDescriptor's for it's child elements.
author: James Strachan author: Martin van den Bemt
Constructor Summary
public
ElementDescriptor() Constructs an ElementDescriptor that refers to a primitive type.
ElementDescriptor(String localName) Creates a ElementDescriptor with no namespace URI or prefix.
Parameters: localName - the (xml) local name of this node.
getAttributeDescriptor(String name) Returns an attribute descriptor with a given name or null.
Parameters: name - to search for; will be checked against the attributes' qualified name.
getElementDescriptor(String name) Gets a child ElementDescriptor matching the given name if one exists.
Note that (so long as there are no better matches), a null name
acts as a wildcard.
A hollow descriptor is one which gives only the class that the subgraph
is mapped to rather than describing the entire subgraph.
A new XMLBeanInfo should be introspected
and that used to describe the subgraph.
A hollow descriptor should not have any child descriptors.
Is the bind time type to be used to determine the mapping?
The mapping for an object property value can either be the
introspection time type (based on the logical type of the property)
or the bind time type (based on the type of the actual instance).
public boolean
isWrapCollectionsInElement() Returns true if collective bean properties should wrap the items in a parent element.
setHollow(boolean isHollow) Sets whether this descriptor is hollow.
A hollow descriptor is one which gives only the class that the subgraph
is mapped to rather than describing the entire subgraph.
A new XMLBeanInfo should be introspected
and that used to describe the subgraph.
A hollow descriptor should not have any child descriptors.
Creates a ElementDescriptor with no namespace URI or prefix.
Parameters: localName - the (xml) local name of this node. This will be used to set both qualified and local name for this name.
Creates a ElementDescriptor with namespace URI and qualified name
Parameters: localName - the (xml) local name of this node Parameters: qualifiedName - the (xml) qualified name of this node Parameters: uri - the (xml) namespace prefix of this node
Adds an attribute to the element this ElementDescriptor describes
Parameters: descriptor - the AttributeDescriptor that will be added to the attributes associated with element this ElementDescriptor describes
Returns an attribute descriptor with a given name or null.
Parameters: name - to search for; will be checked against the attributes' qualified name. AttributeDescriptor with the given name,or null if no descriptor has that name since: 0.8
Lazily creates the mutable List.
This nullifies the attributeDescriptors array so that
as items are added to the list the Array is ignored until it is
explicitly asked for.
list of AttributeDescriptors's describing the attributesof the element that this ElementDescriptor describes
Returns descriptors for the child content of the element this describes.
the Descriptor describing the child elementsof the element that this ElementDescriptor describes since: 0.5
Lazily creates the mutable List of child content descriptors.
This nullifies the contentDescriptors array so that
as items are added to the list the Array is ignored until it is
explicitly asked for.
list of Descriptor's describe the child content of the element that this Descriptor describes since: 0.5
Gets a child ElementDescriptor matching the given name if one exists.
Note that (so long as there are no better matches), a null name
acts as a wildcard. In other words, an
ElementDescriptor the first descriptor
with a null name will match any name
passed in, unless some other matches the name exactly.
Parameters: name - the localname to be matched, not null the child ElementDescriptor with the given name if one exists, otherwise null
Returns descriptors for the child elements of the element this describes.
the ElementDescriptor describing the child elementsof the element that this ElementDescriptor describes
Lazily creates the mutable List of child elements.
This nullifies the elementDescriptors array so that
as items are added to the list the Array is ignored until it is
explicitly asked for.
list of ElementDescriptor's describe the child elements of the element that this ElementDescriptor describes
Gets the class which should be used for instantiation.
the class which should be used for instantiation of beans mapped from this element, null if the standard class should be used
Gets the primary descriptor for body text of this element.
Betwixt collects all body text for any element together.
This makes it rounds tripping difficult for beans that write more than one
mixed content property.
The algorithm used in the default implementation is that the first TextDescriptor
found amongst the descriptors is returned.
the primary descriptor or null if this element has no mixed body content since: 0.5
Returns true if this element has child content.
true if this element has either child mixed content or child elements See Also:ElementDescriptor.getContentDescriptors since: 0.5
A hollow descriptor is one which gives only the class that the subgraph
is mapped to rather than describing the entire subgraph.
A new XMLBeanInfo should be introspected
and that used to describe the subgraph.
A hollow descriptor should not have any child descriptors.
TODO: consider whether a subclass would be better
A simple element is one without child elements or attributes.
This corresponds to the simple type concept used in XML Schema.
TODO: need to consider whether it's sufficient to calculate
which are simple types (and so don't get IDs assigned etc).
true if it is a SimpleType element
isUseBindTimeTypeForMapping
public boolean isUseBindTimeTypeForMapping()(Code)
Is the bind time type to be used to determine the mapping?
The mapping for an object property value can either be the
introspection time type (based on the logical type of the property)
or the bind time type (based on the type of the actual instance).
since: 0.7 true if the bind time type is to be used to determine the mapping,false if the introspection time type is to be used
Returns true if collective bean properties should wrap the items in a parent element.
In other words, should the mapping for bean properties which are Collections
enclosed the item elements within a parent element.
Normally only used when this describes a collection bean property.
true if the elements for the items in the collection should be contained in a parent element
Sets the AttributesDescriptors for this element.
This sets descriptors for the attributes of the element describe by the
ElementDescriptor.
Parameters: attributeDescriptors - the AttributeDescriptor describe the attributesof the element described by this ElementDescriptor
setCollective
public void setCollective(boolean isCollectiveType)(Code)
Sets whether the element described is a collective.
since: 0.7 Parameters: isCollectiveType -
setContentDescriptors
public void setContentDescriptors(Descriptor[] contentDescriptors)(Code)
Sets the descriptors for the child content of the element this describes.
Parameters: contentDescriptors - the Descriptors of the element that this describes since: 0.5
setContextExpression
public void setContextExpression(Expression contextExpression)(Code)
Sets the expression used to evaluate the new context of this element
Parameters: contextExpression - the expression used to evaluate the new context of this element
Sets the descriptors for the child element of the element this describes.
Also sets the child content descriptors for this element
Parameters: elementDescriptors - the ElementDescriptors of the element that this describes
Sets whether this descriptor is hollow.
A hollow descriptor is one which gives only the class that the subgraph
is mapped to rather than describing the entire subgraph.
A new XMLBeanInfo should be introspected
and that used to describe the subgraph.
A hollow descriptor should not have any child descriptors.
TODO: consider whether a subclass would be better
Parameters: isHollow - true if this is hollow
setImplementationClass
public void setImplementationClass(Class implementationClass)(Code)
Sets the class which should be used for instantiation.
Parameters: implementationClass - the class which should be used for instantiationor null to use the mapped type since: 0.5
setPrimitiveType
public void setPrimitiveType(boolean primitiveType)(Code)
Sets whether this element refers to a primitive type (or property of a parent object)
Parameters: primitiveType - true if this element refers to a primitive type
setUseBindTimeTypeForMapping
public void setUseBindTimeTypeForMapping(boolean useBindTimeTypeForMapping)(Code)
Sets whether the bind time type to be used to determine the mapping.
The mapping for an object property value can either be the
introspection time type (based on the logical type of the property)
or the bind time type (based on the type of the actual instance).
Note: this property is write once, read many.
So, the first time that this method is called the value will be set
but subsequent calls will be ignored.
since: 0.7 Parameters: useBindTimeTypeForMapping - true if the bind time type is to be used to determine the mapping, false if the introspection time type is to be used
setWrapCollectionsInElement
public void setWrapCollectionsInElement(boolean wrapCollectionsInElement)(Code)
Sets whether Collection bean properties should wrap items in a parent element.
In other words, should the mapping for bean properties which are Collections
enclosed the item elements within a parent element.
Normally only used when this describes a collection bean property.
Parameters: wrapCollectionsInElement - true if the elements for the items in the collection should be contained in a parent element