Package org.exolab.castor.xml.util
Class XMLClassDescriptorImpl
java.lang.Object
org.exolab.castor.xml.Validator
org.exolab.castor.xml.util.XMLClassDescriptorImpl
- All Implemented Interfaces:
NatureExtendable
,PropertyHolder
,ClassDescriptor
,TypeValidator
,ClassValidator
,XMLClassDescriptor
- Direct Known Subclasses:
AutomaticNamingTypeDescriptor
,BindingDescriptor
,BindingTypeDescriptor
,BindXmlAutoNamingTypeDescriptor
,BindXmlDescriptor
,BindXmlNodeTypeDescriptor
,CacheTypeMappingDescriptor
,ClassChoiceDescriptor
,ClassMappingAccessTypeDescriptor
,ClassMappingDescriptor
,ClassTypeDescriptor
,ComponentBindingTypeChoiceDescriptor
,ComponentBindingTypeDescriptor
,ContainerDescriptor
,ContentMemberTypeDescriptor
,EnumBindingTypeDescriptor
,EnumClassNameDescriptor
,EnumerationDescriptor
,EnumMemberDescriptor
,ExcludeDescriptor
,ExcludesDescriptor
,FieldDescriptor
,FieldHandlerDefDescriptor
,FieldMappingCollectionTypeDescriptor
,FieldMappingDescriptor
,FieldTypeCollectionTypeDescriptor
,FieldTypeDescriptor
,FieldTypeVisibilityTypeDescriptor
,ForcesDescriptor
,IncludeDescriptor
,IncludeTypeDescriptor
,InterfaceDescriptor
,KeyGeneratorDefDescriptor
,LdapDescriptor
,ManyToManyDescriptor
,MappingRootDescriptor
,MapToDescriptor
,NamedNativeQueryDescriptor
,NamedQueryDescriptor
,NamingTypeDescriptor
,NamingXMLTypeDescriptor
,PackageTypeChoiceDescriptor
,PackageTypeDescriptor
,ParamDescriptor
,PkTypeDescriptor
,PropertyTypeDescriptor
,QueryHintDescriptor
,ReadonlyDirtyTypeDescriptor
,SqlDescriptor
,SqlDirtyTypeDescriptor
,TableAccessModeTypeDescriptor
,TableDescriptor
,VisibilityTypeDescriptor
,XMLClassDescriptorAdapter
The core implementation of XMLClassDescriptor. This class is used by both
generated source code as well as the XMLMappingLoader.
- Version:
- $Revision: 8734 $ $Date: 2006-04-13 06:47:36 -0600 (Thu, 13 Apr 2006) $
- Author:
- Keith Visco
-
Field Summary
Fields inherited from class org.exolab.castor.xml.Validator
resourceBundle
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Protected constructor used by this class, and subclasses onlyXMLClassDescriptorImpl
(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
Modifier and TypeMethodDescriptionvoid
addFieldDescriptor
(XMLFieldDescriptor descriptor) Adds the given XMLFieldDescriptor to the list of descriptors.void
Adds a specified nature.protected void
addSequenceElement
(XMLFieldDescriptor element) Adds a XMLFieldDescriptor instance to the internally maintained list of sequence elements.boolean
Returns true if the given object, represented by this XMLClassDescriptor, can accept a value for the member associated with the given xml name and namespace.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 definitionboolean
contains
(XMLFieldDescriptor descriptor) Returns true if the given XMLFieldDescriptor is contained within this XMLClassDescriptor.Returns the access mode specified for this class.Returns the set of XMLFieldDescriptors for all members that should be marshalled as XML attributes.Returns the XMLFieldDescriptor for the member that should be marshalled as text content.Returns the set of XMLFieldDescriptors for all members that should be marshalled as XML elements.Returns the class descriptor of the class extended by this class.getFieldDescriptor
(String name, String namespace, NodeType nodeType) Returns the XML field descriptor matching the given xml name and nodeType.Returns a list of fields represented by this descriptor.Returns the identity field, null if this class has no identity.Class<?>
Returns the Java class represented by this descriptor.Returns the namespace prefix to use when marshalling as XML.Returns the namespace URI used when marshalling and unmarshalling as XML.getProperty
(String name) Get a property by its name.Returns a specific validator for the class described by this ClassDescriptor.Returns the XML Name for the Class being described.boolean
Returns true if this XMLClassDescriptorImpl has any fields which are container objects.boolean
Checks if a specified nature has been added.boolean
isChoice()
Indicates whether the XML artifact described by this descriptor is a invalid input: '<'xsd:choice>.boolean
Returns true if XML schema definition of this Class is that of a global element or element with anonymous type definition.boolean
removeFieldDescriptor
(XMLFieldDescriptor descriptor) Removes the given XMLFieldDescriptor from the list of descriptors.void
Sets the compositor for the fields of the described class to be ALL.void
Sets the compositor for the fields of the described class to be CHOICE.void
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 fromprotected 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 addedprotected void
setIntrospected
(boolean introspected) Sets a flag to indicate whether or not this XMLClassDescriptorImpl was created via introspectionvoid
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
setProperty
(String name, Object value) Set a property specified by the name to the passed value.void
setSubstitutes
(List<String> substitutes) void
setXMLName
(String xmlName) Sets the XML name for the Class described by this XMLClassDescriptorvoid
This method is used to keep the set of descriptors in the proper sorted lists.toString()
Returns the String representation of this XMLClassDescriptorvoid
Validates the given Objectvoid
validate
(Object object, ValidationContext context) Validates the given objectMethods inherited from class org.exolab.castor.xml.Validator
checkUnresolvedIdrefs
-
Constructor Details
-
XMLClassDescriptorImpl
Creates an XMLClassDescriptor class used by the Marshalling Framework.- Parameters:
type
- the Class type with which this ClassDescriptor describes.
-
XMLClassDescriptorImpl
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 Details
-
addFieldDescriptor
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
-
contains
Returns true if the given XMLFieldDescriptor is contained within this XMLClassDescriptor.- Returns:
- true if the XMLFieldDescriptor is part of this XMLClassDescriptor, otherwise false.
-
getAttributeDescriptors
Returns the set of XMLFieldDescriptors for all members that should be marshalled as XML attributes.- Specified by:
getAttributeDescriptors
in interfaceXMLClassDescriptor
- Returns:
- an array of XMLFieldDescriptors for all members that should be marshalled as XML attributes.
-
getContentDescriptor
Returns the XMLFieldDescriptor for the member that should be marshalled as text content.- Specified by:
getContentDescriptor
in interfaceXMLClassDescriptor
- Returns:
- the XMLFieldDescriptor for the member that should be marshalled as text content.
-
getElementDescriptors
Returns the set of XMLFieldDescriptors for all members that should be marshalled as XML elements.- Specified by:
getElementDescriptors
in interfaceXMLClassDescriptor
- Returns:
- an array of XMLFieldDescriptors for all members that should be marshalled as XML elements.
-
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 interfaceXMLClassDescriptor
- Parameters:
elementDescriptor
- The XML field descriptor to be checkedxmlName
- TODO- Throws:
ValidationException
- If the descriptor is not the one expected
-
getFieldDescriptor
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 interfaceXMLClassDescriptor
- Parameters:
name
- the xml name to match againstnodeType
- 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.
-
getNameSpacePrefix
Description copied from interface:XMLClassDescriptor
Returns the namespace prefix to use when marshalling as XML.- Specified by:
getNameSpacePrefix
in interfaceXMLClassDescriptor
- Returns:
- the namespace prefix to use when marshalling as XML.
-
getNameSpaceURI
Description copied from interface:XMLClassDescriptor
Returns the namespace URI used when marshalling and unmarshalling as XML.- Specified by:
getNameSpaceURI
in interfaceXMLClassDescriptor
- Returns:
- the namespace URI used when marshalling and unmarshalling as XML.
-
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 interfaceXMLClassDescriptor
- Returns:
- the type validator for the class described by this ClassDescriptor.
-
getXMLName
Returns the XML Name for the Class being described.- Specified by:
getXMLName
in interfaceXMLClassDescriptor
- Returns:
- the XML name.
-
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. -
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.
-
removeFieldDescriptor
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. -
setExtends
Sets the XMLClassDescriptor that this descriptor inherits from- Parameters:
classDesc
- the XMLClassDescriptor that this descriptor extends
-
setIdentity
Sets the Identity FieldDescriptor, if the FieldDescriptor is not already a contained in this ClassDescriptor, it will be added -
setNameSpacePrefix
Sets the namespace prefix used when marshalling as XML.- Parameters:
nsPrefix
- the namespace prefix used when marshalling the "described" object
-
setNameSpaceURI
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
Sets the XML name for the Class described by this XMLClassDescriptor- Parameters:
xmlName
- the XML name for the Class described by this XMLClassDescriptor
-
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
-
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
Returns the String representation of this XMLClassDescriptor -
validate
Validates the given Object- Overrides:
validate
in classValidator
- Parameters:
object
- the Object to validate- Throws:
ValidationException
- if validation fails.
-
validate
Validates the given object- Specified by:
validate
in interfaceClassValidator
- Specified by:
validate
in interfaceTypeValidator
- Overrides:
validate
in classValidator
- Parameters:
object
- the Object to validatecontext
- the ValidationContext- Throws:
ValidationException
- if validation fails.
-
getJavaClass
Returns the Java class represented by this descriptor.- Specified by:
getJavaClass
in interfaceClassDescriptor
- Returns:
- The Java class
-
getFields
Returns a list of fields represented by this descriptor.- Specified by:
getFields
in interfaceClassDescriptor
- Returns:
- A list of fields
-
getExtends
Returns the class descriptor of the class extended by this class.- Specified by:
getExtends
in interfaceClassDescriptor
- Returns:
- The extended class descriptor
-
getIdentity
Returns the identity field, null if this class has no identity.- Specified by:
getIdentity
in interfaceClassDescriptor
- Returns:
- The identity field
-
getAccessMode
Returns the access mode specified for this class.- Returns:
- The access mode
-
canAccept
Description copied from interface:XMLClassDescriptor
Returns true if the given object, represented by this XMLClassDescriptor, can accept a value for the member associated with the given xml name and namespace.
An XMLClassDescriptor can accept a value for a field if it contains a descriptor that matches the given xml name and namespace and if the given object can hold this field (i.e a value is not already set for this field).
- Specified by:
canAccept
in interfaceXMLClassDescriptor
- Parameters:
name
- the xml name of the field to checknamespace
- the namespace uriobject
- the object instance represented by this XMLCLassDescriptor- Returns:
- true if the given object represented by this XMLClassDescriptor can accept a member whose name is given.
- See Also:
-
setJavaClass
Sets the Class type being described by this descriptor.- Parameters:
type
- the Class type being described
-
setExtendsWithoutFlatten
-
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
-
addSequenceElement
Adds a XMLFieldDescriptor instance to the internally maintained list of sequence elements.- Parameters:
element
- AnXMLFieldDescriptor
instance for an element definition.
-
getSubstitutes
-
setSubstitutes
-
isChoice
public boolean isChoice()Description copied from interface:XMLClassDescriptor
Indicates whether the XML artifact described by this descriptor is a invalid input: '<'xsd:choice>.- Specified by:
isChoice
in interfaceXMLClassDescriptor
- Returns:
- True if the artifact described is a choice.
-
getProperty
Description copied from interface:PropertyHolder
Get a property by its name.- Specified by:
getProperty
in interfacePropertyHolder
- Parameters:
name
- of the property- Returns:
- value of the property
-
setProperty
Description copied from interface:PropertyHolder
Set a property specified by the name to the passed value.- Specified by:
setProperty
in interfacePropertyHolder
- Parameters:
name
- of the propertyvalue
- of the property
-
addNature
Description copied from interface:NatureExtendable
Adds a specified nature.- Specified by:
addNature
in interfaceNatureExtendable
- Parameters:
nature
- ID of the Nature
-
hasNature
Description copied from interface:NatureExtendable
Checks if a specified nature has been added.- Specified by:
hasNature
in interfaceNatureExtendable
- Parameters:
nature
- ID of the Nature- Returns:
- true if the Nature ID was added.
-