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

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: 8734 $ $Date: 2006-04-13 06:47:36 -0600 (Thu, 13 Apr 2006) $
Author:
Keith Visco
  • Constructor Details

    • 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.
    • XMLClassDescriptorImpl

      protected XMLClassDescriptorImpl()
      Protected constructor used by this class, and subclasses only
  • 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
    • 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.
    • 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.
    • 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 interface XMLClassDescriptor
      Parameters:
      elementDescriptor - The XML field descriptor to be checked
      xmlName - TODO
      Throws:
      ValidationException - If the descriptor is not the one expected
    • getFieldDescriptor

      public XMLFieldDescriptor getFieldDescriptor(String name, String namespace, 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
      nodeType - 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

      public String getNameSpacePrefix()
      Description copied from interface: XMLClassDescriptor
      Returns the namespace prefix to use when marshalling as XML.
      Specified by:
      getNameSpacePrefix in interface XMLClassDescriptor
      Returns:
      the namespace prefix to use when marshalling as XML.
    • getNameSpaceURI

      public String getNameSpaceURI()
      Description copied from interface: XMLClassDescriptor
      Returns the namespace URI used when marshalling and unmarshalling as XML.
      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.
    • 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

      public boolean removeFieldDescriptor(XMLFieldDescriptor descriptor)
      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

      public void setExtends(XMLClassDescriptor classDesc)
      Sets the XMLClassDescriptor that this descriptor inherits from
      Parameters:
      classDesc - the XMLClassDescriptor that this descriptor extends
    • 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
    • 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
    • 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

      public String toString()
      Returns the String representation of this XMLClassDescriptor
      Overrides:
      toString in class Object
      Returns:
      the String representation of this XMLClassDescriptor
    • validate

      public void validate(Object object) throws ValidationException
      Validates the given Object
      Overrides:
      validate in class Validator
      Parameters:
      object - the Object to validate
      Throws:
      ValidationException - if validation fails.
    • validate

      public void validate(Object object, ValidationContext context) throws ValidationException
      Validates the given object
      Specified by:
      validate in interface ClassValidator
      Specified by:
      validate in interface TypeValidator
      Overrides:
      validate in class Validator
      Parameters:
      object - the Object to validate
      context - the ValidationContext
      Throws:
      ValidationException - if validation fails.
    • getJavaClass

      public Class<?> getJavaClass()
      Returns the Java class represented by this descriptor.
      Specified by:
      getJavaClass in interface ClassDescriptor
      Returns:
      The Java class
    • getFields

      public FieldDescriptor[] getFields()
      Returns a list of fields represented by this descriptor.
      Specified by:
      getFields in interface ClassDescriptor
      Returns:
      A list of fields
    • 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
    • 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
    • getAccessMode

      public AccessMode getAccessMode()
      Returns the access mode specified for this class.
      Returns:
      The access mode
    • canAccept

      public boolean canAccept(String name, String namespace, Object object)
      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 interface XMLClassDescriptor
      Parameters:
      name - the xml name of the field to check
      namespace - the namespace uri
      object - 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

      public void setJavaClass(Class<?> type)
      Sets the Class type being described by this descriptor.
      Parameters:
      type - the Class type being described
    • setExtendsWithoutFlatten

      protected void setExtendsWithoutFlatten(XMLClassDescriptor classDesc)
    • 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

      protected void addSequenceElement(XMLFieldDescriptor element)
      Adds a XMLFieldDescriptor instance to the internally maintained list of sequence elements.
      Parameters:
      element - An XMLFieldDescriptor instance for an element definition.
    • getSubstitutes

      public List<String> getSubstitutes()
    • setSubstitutes

      public void setSubstitutes(List<String> substitutes)
    • 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 interface XMLClassDescriptor
      Returns:
      True if the artifact described is a choice.
    • getProperty

      public Object getProperty(String name)
      Description copied from interface: PropertyHolder
      Get a property by its name.
      Specified by:
      getProperty in interface PropertyHolder
      Parameters:
      name - of the property
      Returns:
      value of the property
    • setProperty

      public void setProperty(String name, Object value)
      Description copied from interface: PropertyHolder
      Set a property specified by the name to the passed value.
      Specified by:
      setProperty in interface PropertyHolder
      Parameters:
      name - of the property
      value - of the property
    • addNature

      public void addNature(String nature)
      Description copied from interface: NatureExtendable
      Adds a specified nature.
      Specified by:
      addNature in interface NatureExtendable
      Parameters:
      nature - ID of the Nature
    • hasNature

      public boolean hasNature(String nature)
      Description copied from interface: NatureExtendable
      Checks if a specified nature has been added.
      Specified by:
      hasNature in interface NatureExtendable
      Parameters:
      nature - ID of the Nature
      Returns:
      true if the Nature ID was added.