Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
org.exolab.castor.xml.util.XMLFieldDescriptorImpl
FieldDescriptor
and adds
XML-related information, type conversion, etc.
Field Summary | |
boolean |
|
boolean |
|
Constructor Summary | |
| |
| |
| |
|
Method Summary | |
boolean |
|
ClassDescriptor |
|
CollectionHandler |
|
int |
|
ClassDescriptor | |
String |
|
Class |
|
FieldHandler |
|
String |
|
String |
|
String |
|
NodeType |
|
String |
|
String |
|
FieldValidator |
|
String |
|
protected boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
protected static boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
String |
|
public boolean _isReference
True if the field is a reference to another Object in the hierarchy.
public boolean _required
indicates a required field when true
public XMLFieldDescriptorImpl(Class fieldType, String fieldName, String xmlName, NodeType nodeType)
public XMLFieldDescriptorImpl(FieldDescriptor fieldDesc, String xmlName, NodeType nodeType) throws MappingException
Construct a new field descriptor for the specified field. This is an XML field descriptor wrapping a field descriptor and adding XML related properties and methods.
- Parameters:
fieldDesc
- The field descriptorxmlName
- The XML name of the fieldnodeType
- The node type of this field
- Throws:
MappingException
- Invalid mapping information
public XMLFieldDescriptorImpl(FieldDescriptor fieldDesc, String xmlName, NodeType nodeType, NodeType primitiveNodeType) throws MappingException
Construct a new field descriptor for the specified field. This is an XML field descriptor wrapping a field descriptor and adding XML related properties and methods.
- Parameters:
fieldDesc
- The field descriptorxmlName
- The XML name of the fieldnodeType
- The node type of this field
- Throws:
MappingException
- Invalid mapping information
public XMLFieldDescriptorImpl(XMLFieldDescriptor fieldDesc) throws MappingException
Makes a new copy of the given XMLFieldDescriptorImpl
- Parameters:
fieldDesc
- The XMLFieldDescriptor to copy
- Throws:
MappingException
- Invalid mapping information
public boolean equals(Object obj)
Returns true if two XMLFieldDescriptors should be treated as equal. Any XMLFieldDescriptor that handles the same field is considered equal.
public ClassDescriptor getClassDescriptor()
Returns the class descriptor related to the field type. If the field type is a class for which a descriptor exists, this descriptor is returned. If the field type is a class for which no mapping is provided, null is returned.
- Specified by:
- getClassDescriptor in interface FieldDescriptor
- Returns:
- The class descriptor of the field type, or null
public CollectionHandler getCollectionHandler()
Return the collection handler of this field type. Returns null if the field is not a collection.
- Returns:
- The collection handler
public int getConstructorArgumentIndex()
Returns the index within the constructor argument array where the value of this field should be. A value less than zero indicates that the value of this field is set via a normal setter method and not via the constructor. Note: This only applies to attribute mapped fields at this time.
- Specified by:
- getConstructorArgumentIndex in interface XMLFieldDescriptor
- Returns:
- the index within the constructor argument array for this field.
public ClassDescriptor getContainingClassDescriptor()
- Specified by:
- getContainingClassDescriptor in interface FieldDescriptor
- Returns:
- the class which contains this field
public String getFieldName()
Returns the name of the field.
- Specified by:
- getFieldName in interface FieldDescriptor
- Returns:
- Field name
public Class getFieldType()
Returns the Java type of the field.
- Specified by:
- getFieldType in interface FieldDescriptor
- Returns:
- Field type
public FieldHandler getHandler()
Returns the handler of the field. In order to persist or marshal a field descriptor will be associated with a handler.
- Specified by:
- getHandler in interface FieldDescriptor
- Returns:
- The field handler
public String getLocationPath()
Returns the "relative" XML path for the field being described. In most cases, this will be null. However sometimes a field may be mapped to a nested element. In which case the value returned by this method should be the nested element name. If more than one level of nesting is needed each nested element name should be separated by by a path separator (forward slash '/'). The location path name is "relative" to the parent Class. The name of the parent should not be included in the path. For example, give the following two classes:class Root { Bar bar; } class Bar { String value; }
And the following XML:<root> <foo> <bar> value of bar </bar> </foo> </root>
Since foo has no associated class, the path for 'bar' would be: "foo"
- Specified by:
- getLocationPath in interface XMLFieldDescriptor
public String getNameSpacePrefix()
Return the "suggested" namespace prefix to use when marshalling as XML.
- Specified by:
- getNameSpacePrefix in interface XMLFieldDescriptor
- Returns:
- the "suggested" namespace prefix.
public String getNameSpaceURI()
Returns the namespace URI to be used when marshalling and unmarshalling as XML.
- Specified by:
- getNameSpaceURI in interface XMLFieldDescriptor
- Returns:
- the namespace URI.
public NodeType getNodeType()
Returns the NodeType of the Field being described. The NodeType represents the Type of Node that the Field will be marshalled into XML as.
- Specified by:
- getNodeType in interface XMLFieldDescriptor
- Returns:
- the NodeType of the Field being described.
public String getQNamePrefix()
Returns the prefix used in case the value of the field described by this descriptor is of type QName. This is helpful for the Marshaller but not mandatory.
- Returns:
- the prefix used in the QName value.
public String getSchemaType()
Returns the XML Schema type of the value of the field described by this descriptor.
- Specified by:
- getSchemaType in interface XMLFieldDescriptor
public FieldValidator getValidator()
Returns a specific validator for the field described by this descriptor. A null value may be returned if no specific validator exists.
- Specified by:
- getValidator in interface XMLFieldDescriptor
- Returns:
- the type validator for the described field
public String getXMLName()
Returns the XML Name for the field being described.
- Specified by:
- getXMLName in interface XMLFieldDescriptor
- Returns:
- the XML name.
protected boolean hasNonDefaultMatching()
Returns true if a call to #setMatches has been made with a non-null, or non-zero-length value. This method is used by the XML Mapping Loader
- Returns:
- true if a call to #setMatches has been made with a legal value.
public boolean isConstructorArgument()
Returns true if the value of the field represented by this descriptor should be set via the constructor of the containing class. This is only valid for attribute mapped fields.
- Specified by:
- isConstructorArgument in interface XMLFieldDescriptor
- Returns:
- true if the value of the field represented by this descriptor should be set via the constructor of the containing class.
public boolean isContainer()
Returns true if the field described by this descriptor is a container field. A container is a field that should is not a first-class object, and should therefore have no XML representation.
- Specified by:
- isContainer in interface XMLFieldDescriptor
- Returns:
- true if the field is a container
public boolean isImmutable()
Returns true if the field type is immutable.
- Specified by:
- isImmutable in interface FieldDescriptor
- Returns:
- True if the field type is immutable
public boolean isIncremental()
Returns the incremental flag which when true indicates that this member may be safely added before the unmarshaller is finished unmarshalling it.
- Specified by:
- isIncremental in interface XMLFieldDescriptor
- Returns:
- true if the Object can safely be added before the unmarshaller is finished unmarshalling the Object.
public boolean isMapped()
Returns true if the field described by this descriptor is Map or Hashtable. If this method returns true, it must also return true for any call to #isMultivalued.
- Specified by:
- isMapped in interface XMLFieldDescriptor
- Returns:
- true if the field described by this desciptor is a Map or Hashtable, otherwise false.
public boolean isMultivalued()
Returns true if the Object described by this descriptor can contain more than one value
- Specified by:
- isMultivalued in interface XMLFieldDescriptor
- isMultivalued in interface FieldDescriptor
- Returns:
- true if the Object described by this descriptor can contain more than one value
protected 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.
- Returns:
- true if the given class should be treated as a primitive type
public boolean isReference()
Returns true if the field described by this descriptor is a reference (ie. IDREF) to another object in the "Object Model" (XML tree)
- Specified by:
- isReference in interface XMLFieldDescriptor
public boolean isRequired()
Returns true if the field described by this descriptor is a required field
- Specified by:
- isRequired in interface FieldDescriptor
- Returns:
- true if the field described by this descriptor is a required field
public boolean isTransient()
Returns true if the field is transient. Transient fields are never persisted or marshalled.
- Specified by:
- isTransient in interface FieldDescriptor
- Returns:
- True if transient field
public boolean matches(String xmlName)
Returns true if this descriptor can be used to handle elements or attributes with the given XML name. By default this method simply compares the given XML name with the internal XML name. This method can be overridden to provide more complex matching.
- Specified by:
- matches in interface XMLFieldDescriptor
- Parameters:
xmlName
- the XML name to compare
- Returns:
- true if this descriptor can be used to handle elements or attributes with the given XML name.
public boolean matches(String xmlName, String namespace)
Returns true if this descriptor can be used to handle elements or attributes with the given XML name. By default this method simply compares the given XML name with the internal XML name. This method can be overridden to provide more complex matching.
- Specified by:
- matches in interface XMLFieldDescriptor
- Parameters:
xmlName
- the XML name to compare
- Returns:
- true if this descriptor can be used to handle elements or attributes with the given XML name.
public void setClassDescriptor(XMLClassDescriptor classDescriptor)
Sets the XMLClassDescriptor for the described field
- Parameters:
classDescriptor
- the XMLClassDescriptor for the described field.
public void setConstructorArgumentIndex(int index)
Sets whether or not the value of the field represented by this FieldDescriptor should be set via the constructor of the containing ClassDescriptor. The index value greater than 0 specifies the index within the argument array that the value of this field should be. Note: This only applies to attribute mapped fields at this time.
- Parameters:
index
- the index within the argument array. A value less than zero indicates that this field should not be part of the constructor arguments.
public void setContainer(boolean isContainer)
Set if the field is a container field or not.
- Parameters:
isContainer
- a boolean indicating whether or not the field is a container field.
public void setContainingClassDescriptor(ClassDescriptor contClsDesc)
Set the class which contains this field
- Specified by:
- setContainingClassDescriptor in interface FieldDescriptor
public void setHandler(FieldHandler handler)
Sets the FieldHandler for the field being described by this FieldDescriptor
- Parameters:
handler
- the FieldHandler for the field being described by this FieldDescriptor
public void setImmutable(boolean immutable)
Sets the immutable flag which indicates that changes to this Field result in a new Object to be created, such as java.lang.String. It serves to identify fields which should not be constructed...until after all the data is available.
- Parameters:
immutable
- the boolean which if true indicated that this described field is immutable
public void setIncremental(boolean incremental)
Sets the incremental flag which indicates whether this member can be added before the unmarshaller is finished unmarshalling it.
- Parameters:
incremental
- the boolean which if true indicated that this member can safely be added before the unmarshaller is finished unmarshalling it.
public void setLocationPath(String path)
Sets the location path for the field being described. In most cases, this isn't needed. However sometimes a field may be mapped to a nested element. In which case the value of the location path should be the nested element name. If more than one level of nesting is needed each nested element name should be separated by by a path separator (forward slash '/'). The location path name is "relative" to the parent Class. The name of the parent should not be included in the path. For example, give the following two classes:class Root { Bar bar; } class Bar { String value; }
And the following XML:<root> <foo> <bar> value of bar </bar> </foo> </root>
Since foo has no associated class, the path for 'bar' would be: "foo"
- Parameters:
path
- the "relative" location path for the field.
- See Also:
getLocationPath.
public void setMapped(boolean mapped)
Sets whether or not this field has been mapped in a Map or Hashtable.
- Parameters:
mapped
- a boolean that when true indicates this field is a Hashtable or Map.
public void setMatches(String matchExpr)
This is a space separated list of xml names that this Field descriptor matches. A '*' is wild.
- Parameters:
matchExpr
- the space separated list of xml names, matched by this descriptor
public void setMultivalued(boolean multivalued)
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
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.
public void setNodeType(NodeType nodeType)
Sets the XML node type for the described field
- Parameters:
nodeType
- the NodeType for the described field
public void setQNamePrefix(String qNamePrefix)
Sets the prefix used in case the value of the field described by this descriptor is of type QName.
- Parameters:
qNamePrefix
-
public void setReference(boolean isReference)
Sets the flag indicating that the field described by this descriptor is a reference to another field in the object model.
- Parameters:
public void setRequired(boolean required)
Sets the whether or not the described field is required
- Parameters:
required
- the flag indicating whether or not the described field is required
public void setSchemaType(String schemaType)
Sets the type of the XML Schema type of the value for the field being described.
- Parameters:
public void setTransient(boolean isTransient)
Sets whether or not the describled field is transient
- Parameters:
isTransient
- the flag indicating whether or not the described field is "transient".
- See Also:
isTransient()
public void setXMLName(String xmlName)
Sets the xml name for the described field
- Parameters:
public String toString()