- All Implemented Interfaces:
Serializable,Cloneable,CoreField,Field<XMLConversionManager,,NamespaceResolver> UnionField<XMLConversionManager,NamespaceResolver>
Subclass of XMLField for fields that are mapped to unions. Maintains a list of schema types instead of just one single schema type. Schema types can be added using the addSchemaType api. XMLConstants has a list of useful constants including a list of QNames for built-in schema types that can be used when adding schema types.
When reading and writing an element that is mapped with an XMLUnionField, a conversion to each of the schema types on the field (in the order they are specified ) is tried until a conversion is successful. The java type to convert to is based on the list of schema type to java conversion pairs specified on the field. These conversion pairs can be modified using the addXMLConversion api.
Code Sample
In this example the age field could be a date or an int.
XMLUnionField field = new XMLUnionField("age/text()");
field.addSchemaType(XMLConstants.DATE_QNAME);
field.addSchemaType(XMLConstants.INT_QNAME)
- See Also:
-
Field Summary
Fields inherited from class org.eclipse.persistence.oxm.XMLField
isTypedTextField, leafElementType, userJavaTypes, userXMLTypesFields inherited from class org.eclipse.persistence.internal.helper.DatabaseField
columnDefinition, index, isCreatable, isInsertable, isNullable, isPrimaryKey, isTranslated, isUnique, isUpdatable, keepInRow, length, name, nameForComparisons, NULL_SQL_TYPE, precision, qualifiedName, scale, sqlType, table, type, typeName, useDelimiters, useUpperCaseForComparisons -
Constructor Summary
ConstructorsConstructorDescriptionConstructs an XMLUnionFieldXMLUnionField(String xPath) Constructs an XMLUnionField with the xpath set to the specified xPath -
Method Summary
Modifier and TypeMethodDescriptionvoidaddSchemaType(QName value) Adds the new type value to the list of typesconvertValueBasedOnSchemaType(Object value, XMLConversionManager xmlConversionManager, AbstractUnmarshalRecord record) INTERNAL:Class<?> getJavaClass(QName qname) Return the class for a given qualified XML Schema type.Class<?> getJavaClass(QName qname, ConversionManager conversionManager) INTERNALReturn the first schema type in the list of schema typesgetSchemaTypeForValue(Object value, CoreAbstractSession session) INTERNAL:Return the list of schema typesprotected QNamegetSingleValueToWriteForUnion(Object value, CoreAbstractSession session) booleanisSchemaType(QName schemaType) INTERNALbooleanINTERNAL: returns true since this is a union fieldvoidsetSchemaType(QName value) Adds the new type value to the list of typesvoidsetSchemaTypes(ArrayList value) Sets the schema types that this attribute can be mapped to Valid QName schema types can be found on org.eclipse.persistence.oxm.XMLConstantsMethods inherited from class org.eclipse.persistence.oxm.XMLField
addConversion, addJavaConversion, addXMLConversion, equals, getLastXPathFragment, getLeafElementType, getNamespaceResolver, getUserJavaTypesForDeploymentXML, getUserXMLTypesForDeploymentXML, getXMLType, getXMLType, getXPath, getXPathFragment, hashCode, hasLastXPathFragment, initialize, isCDATA, isNestedArray, isRequired, isSelfField, isTypedTextField, removeConversion, removeJavaConversion, removeXMLConversion, setIsCDATA, setIsTypedTextField, setLastXPathFragment, setLeafElementType, setName, setName, setNamespaceResolver, setNestedArray, setRequired, setUserJavaTypesForDeploymentXML, setUserXMLTypesForDeploymentXML, setUsesSingleNode, setXPath, setXPathFragment, usesSingleNodeMethods inherited from class org.eclipse.persistence.internal.helper.DatabaseField
clone, convertClassNamesToClasses, equals, getColumnDefinition, getIndex, getLength, getName, getNameDelimited, getNameForComparisons, getPrecision, getQualifiedName, getQualifiedNameDelimited, getScale, getSqlType, getTable, getTableName, getType, getTypeName, getUseUpperCaseForComparisons, hasTableName, initDDLFields, isCreatable, isInsertable, isNullable, isObjectRelationalDatabaseField, isPrimaryKey, isReadOnly, isTranslated, isUnique, isUpdatable, keepInRow, resetQualifiedName, setColumnDefinition, setCreatable, setIndex, setInsertable, setIsTranslated, setKeepInRow, setLength, setName, setNameForComparisons, setNullable, setPrecision, setPrimaryKey, setScale, setSqlType, setTable, setTableName, setType, setTypeName, setUnique, setUpdatable, setUseDelimiters, shouldUseDelimiters, toString, useUpperCaseForComparisonsMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.persistence.internal.core.helper.CoreField
setName, setTypeMethods inherited from interface org.eclipse.persistence.internal.oxm.mappings.Field
getLastXPathFragment, getLeafElementType, getName, getNamespaceResolver, getType, getXMLType, getXPath, getXPathFragment, hasLastXPathFragment, initialize, isCDATA, isNestedArray, isRequired, isSelfField, isTypedTextField, setIsCDATA, setIsTypedTextField, setNamespaceResolver, setNestedArray, setRequired, setUsesSingleNode, setXPath, usesSingleNode
-
Constructor Details
-
XMLUnionField
public XMLUnionField()Constructs an XMLUnionField -
XMLUnionField
Constructs an XMLUnionField with the xpath set to the specified xPath- Parameters:
xPath- The xpath expression for the field
-
-
Method Details
-
getSchemaTypes
Return the list of schema types- Specified by:
getSchemaTypesin interfaceUnionField<XMLConversionManager,NamespaceResolver> - Returns:
- the list of types
-
setSchemaTypes
Sets the schema types that this attribute can be mapped to Valid QName schema types can be found on org.eclipse.persistence.oxm.XMLConstants- Parameters:
value- An ArrayList containing the schema types.- See Also:
-
addSchemaType
Adds the new type value to the list of types- Specified by:
addSchemaTypein interfaceUnionField<XMLConversionManager,NamespaceResolver> - Parameters:
value- QName to be added to the list of schema types
-
getSchemaType
Return the first schema type in the list of schema types- Specified by:
getSchemaTypein interfaceField<XMLConversionManager,NamespaceResolver> - Overrides:
getSchemaTypein classXMLField- Returns:
- the first item in the collection of schema types
-
setSchemaType
Adds the new type value to the list of types- Specified by:
setSchemaTypein interfaceField<XMLConversionManager,NamespaceResolver> - Overrides:
setSchemaTypein classXMLField- Parameters:
value- The value to be added to the list of schema types
-
isUnionField
public boolean isUnionField()INTERNAL: returns true since this is a union field- Specified by:
isUnionFieldin interfaceField<XMLConversionManager,NamespaceResolver> - Overrides:
isUnionFieldin classXMLField
-
getSchemaTypeForValue
Description copied from class:XMLFieldINTERNAL:- Specified by:
getSchemaTypeForValuein interfaceField<XMLConversionManager,NamespaceResolver> - Overrides:
getSchemaTypeForValuein classXMLField
-
getSingleValueToWriteForUnion
-
convertValueBasedOnSchemaType
public Object convertValueBasedOnSchemaType(Object value, XMLConversionManager xmlConversionManager, AbstractUnmarshalRecord record) INTERNAL:- Specified by:
convertValueBasedOnSchemaTypein interfaceField<XMLConversionManager,NamespaceResolver> - Overrides:
convertValueBasedOnSchemaTypein classXMLField
-
getJavaClass
Return the class for a given qualified XML Schema type. If the class is a primitive the corresponding wrapper class is returned- Overrides:
getJavaClassin classXMLField- Parameters:
qname- The qualified name of the XML Schema type to use as a key in the lookup- Returns:
- The class associated with the specified schema type, if no corresponding match found returns null
-
getJavaClass
INTERNAL- Specified by:
getJavaClassin interfaceField<XMLConversionManager,NamespaceResolver> - Overrides:
getJavaClassin classXMLField- Parameters:
qname- The qualified name of the XML Schema type to use as a key in the lookup- Returns:
- the class for a given qualified XML Schema type.
- Since:
- EclipseLink 2.6.0
-
isSchemaType
INTERNAL- Specified by:
isSchemaTypein interfaceField<XMLConversionManager,NamespaceResolver> - Overrides:
isSchemaTypein classXMLField
-