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
ConstructorsModifierConstructorDescriptionprotectedProtected 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 TypeMethodDescriptionvoidaddFieldDescriptor(XMLFieldDescriptor descriptor) Adds the given XMLFieldDescriptor to the list of descriptors.voidAdds a specified nature.protected voidaddSequenceElement(XMLFieldDescriptor element) Adds a XMLFieldDescriptor instance to the internally maintained list of sequence elements.booleanReturns true if the given object, represented by this XMLClassDescriptor, can accept a value for the member associated with the given xml name and namespace.voidcheckDescriptorForCorrectOrderWithinSequence(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 definitionbooleancontains(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.booleanReturns true if this XMLClassDescriptorImpl has any fields which are container objects.booleanChecks if a specified nature has been added.booleanisChoice()Indicates whether the XML artifact described by this descriptor is a invalid input: '<'xsd:choice>.booleanReturns true if XML schema definition of this Class is that of a global element or element with anonymous type definition.booleanremoveFieldDescriptor(XMLFieldDescriptor descriptor) Removes the given XMLFieldDescriptor from the list of descriptors.voidSets the compositor for the fields of the described class to be ALL.voidSets the compositor for the fields of the described class to be CHOICE.voidSets the compositor for the fields of the described class to be a Sequence.voidsetElementDefinition(boolean elementDefinition) Set elementDefinition to true to indicate Class XML schema definition is a global element or element with anonymous type.voidsetExtends(XMLClassDescriptor classDesc) Sets the XMLClassDescriptor that this descriptor inherits fromprotected voidsetExtendsWithoutFlatten(XMLClassDescriptor classDesc) voidsetIdentity(XMLFieldDescriptor fieldDesc) Sets the Identity FieldDescriptor, if the FieldDescriptor is not already a contained in this ClassDescriptor, it will be addedprotected voidsetIntrospected(boolean introspected) Sets a flag to indicate whether or not this XMLClassDescriptorImpl was created via introspectionvoidsetJavaClass(Class<?> type) Sets the Class type being described by this descriptor.voidsetNameSpacePrefix(String nsPrefix) Sets the namespace prefix used when marshalling as XML.voidsetNameSpaceURI(String nsURI) Sets the namespace URI used when marshalling and unmarshalling as XML.voidsetProperty(String name, Object value) Set a property specified by the name to the passed value.voidsetSubstitutes(List<String> substitutes) voidsetXMLName(String xmlName) Sets the XML name for the Class described by this XMLClassDescriptorvoidThis method is used to keep the set of descriptors in the proper sorted lists.toString()Returns the String representation of this XMLClassDescriptorvoidValidates the given Objectvoidvalidate(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
-
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:
getAttributeDescriptorsin 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:
getContentDescriptorin 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:
getElementDescriptorsin 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:
checkDescriptorForCorrectOrderWithinSequencein 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:
getFieldDescriptorin 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:XMLClassDescriptorReturns the namespace prefix to use when marshalling as XML.- Specified by:
getNameSpacePrefixin interfaceXMLClassDescriptor- Returns:
- the namespace prefix to use when marshalling as XML.
-
getNameSpaceURI
Description copied from interface:XMLClassDescriptorReturns the namespace URI used when marshalling and unmarshalling as XML.- Specified by:
getNameSpaceURIin 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:
getValidatorin interfaceXMLClassDescriptor- Returns:
- the type validator for the class described by this ClassDescriptor.
-
getXMLName
Returns the XML Name for the Class being described.- Specified by:
getXMLNamein 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
-
validate
Validates the given Object- Overrides:
validatein classValidator- Parameters:
object- the Object to validate- Throws:
ValidationException- if validation fails.
-
validate
Validates the given object- Specified by:
validatein interfaceClassValidator- Specified by:
validatein interfaceTypeValidator- Overrides:
validatein 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:
getJavaClassin interfaceClassDescriptor- Returns:
- The Java class
-
getFields
Returns a list of fields represented by this descriptor.- Specified by:
getFieldsin interfaceClassDescriptor- Returns:
- A list of fields
-
getExtends
Returns the class descriptor of the class extended by this class.- Specified by:
getExtendsin interfaceClassDescriptor- Returns:
- The extended class descriptor
-
getIdentity
Returns the identity field, null if this class has no identity.- Specified by:
getIdentityin interfaceClassDescriptor- Returns:
- The identity field
-
getAccessMode
Returns the access mode specified for this class.- Returns:
- The access mode
-
canAccept
Description copied from interface:XMLClassDescriptorReturns 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:
canAcceptin 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- AnXMLFieldDescriptorinstance for an element definition.
-
getSubstitutes
-
setSubstitutes
-
isChoice
public boolean isChoice()Description copied from interface:XMLClassDescriptorIndicates whether the XML artifact described by this descriptor is a invalid input: '<'xsd:choice>.- Specified by:
isChoicein interfaceXMLClassDescriptor- Returns:
- True if the artifact described is a choice.
-
getProperty
Description copied from interface:PropertyHolderGet a property by its name.- Specified by:
getPropertyin interfacePropertyHolder- Parameters:
name- of the property- Returns:
- value of the property
-
setProperty
Description copied from interface:PropertyHolderSet a property specified by the name to the passed value.- Specified by:
setPropertyin interfacePropertyHolder- Parameters:
name- of the propertyvalue- of the property
-
addNature
Description copied from interface:NatureExtendableAdds a specified nature.- Specified by:
addNaturein interfaceNatureExtendable- Parameters:
nature- ID of the Nature
-
hasNature
Description copied from interface:NatureExtendableChecks if a specified nature has been added.- Specified by:
hasNaturein interfaceNatureExtendable- Parameters:
nature- ID of the Nature- Returns:
- true if the Nature ID was added.
-