Class XMLChoiceCollectionMapping
- java.lang.Object
-
- org.eclipse.persistence.core.mappings.CoreMapping<AttributeAccessor,org.eclipse.persistence.internal.sessions.AbstractSession,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
-
- org.eclipse.persistence.mappings.DatabaseMapping
-
- org.eclipse.persistence.oxm.mappings.XMLChoiceCollectionMapping
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,org.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
,org.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
,org.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
,org.eclipse.persistence.internal.oxm.mappings.XMLConverterMapping<XMLMarshaller,Session,XMLUnmarshaller>
,XMLMapping
public class XMLChoiceCollectionMapping extends DatabaseMapping implements org.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>, XMLMapping
PUBLIC:Purpose:Provide a mapping that can map a single attribute to a number of different elements in an XML Document. This will be used to map to Choices or Substitution Groups in an XML Schema
Responsibilities:
- Allow the user to specify XPath -> Type mappings
- Handle reading and writing of XML Documents containing a collection of choice or substitution group elements
The XMLChoiceCollectionMapping is the collection version of the XMLChoiceMapping. This mapping allows the user to specify a number of different xpaths, and types associated with those xpaths. When any of these elements are encountered in the XML Document, they are read in as the correct type and added to the collection.
Setting up XPath mappings:Unlike other OXM Mappings, instead of setting a single xpath, the addChoiceElement method is used to specify an xpath and the type associated with this xpath.
xmlChoiceCollectionMapping.addChoiceElement("mystring/text()", String.class);
xmlChoiceCollectionMapping.addChoiceElement("myaddress", Address.class);- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.persistence.mappings.DatabaseMapping
DatabaseMapping.WriteType
-
-
Field Summary
-
Fields inherited from class org.eclipse.persistence.mappings.DatabaseMapping
attributeAccessor, attributeName, derivedIdMapping, derivesId, descriptor, fields, isCacheable, isInSopObject, isJPAId, isLazy, isMapKeyMapping, isOptional, isPrimaryKeyMapping, isReadOnly, isRemotelyInitialized, mapsIdValue, NO_FIELDS, NO_WEIGHT, properties, unconvertedProperties, weight, WEIGHT_AGGREGATE, WEIGHT_DIRECT, WEIGHT_TO_ONE, WEIGHT_TRANSFORM
-
-
Constructor Summary
Constructors Constructor Description XMLChoiceCollectionMapping()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addChoiceElement(java.lang.String xpath, java.lang.Class elementType)
void
addChoiceElement(java.lang.String srcXPath, java.lang.Class elementType, java.lang.String tgtXPath)
void
addChoiceElement(java.lang.String xpath, java.lang.String elementTypeName)
void
addChoiceElement(java.lang.String srcXpath, java.lang.String elementTypeName, java.lang.String tgtXpath)
void
addChoiceElement(java.util.List<XMLField> srcFields, java.lang.Class elementType, java.util.List<XMLField> tgtFields)
void
addChoiceElement(java.util.List<XMLField> srcFields, java.lang.String elementTypeName, java.util.List<XMLField> tgtFields)
void
addChoiceElement(XMLField xmlField, java.lang.Class elementType)
void
addChoiceElement(XMLField sourceField, java.lang.Class elementType, XMLField targetField)
void
addChoiceElement(XMLField field, java.lang.String elementTypeName)
void
addConverter(XMLField field, Converter converter)
void
buildBackupClone(java.lang.Object clone, java.lang.Object backup, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork)
INTERNAL: Clone the attribute from the clone and assign it to the backup.void
buildClone(java.lang.Object original, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, java.lang.Object clone, java.lang.Integer refreshCascade, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession)
INTERNAL: Clone the attribute from the original and assign it to the clone.void
buildCloneFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, java.lang.Object clone, org.eclipse.persistence.internal.identitymaps.CacheKey sharedCacheKey, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, org.eclipse.persistence.internal.sessions.AbstractSession executionSession)
INTERNAL: A combination of readFromRowIntoObject and buildClone.void
cascadePerformRemoveIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects)
INTERNAL: Cascade perform delete through mappings that require the cascadevoid
cascadeRegisterNewIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects)
INTERNAL: Cascade registerNew for Create through mappings that require the cascadeprotected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField>
collectFields()
This method must be overwritten in the subclasses to return a vector of all the fields this mapping represents.org.eclipse.persistence.internal.sessions.ChangeRecord
compareForChange(java.lang.Object clone, java.lang.Object backup, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method was created in VisualAge.boolean
compareObjects(java.lang.Object firstObject, java.lang.Object secondObject, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Compare the attributes belonging to this mapping for the objects.void
convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL: Convert all the class-name-based settings in this mapping to actual class-based settings This method is implemented by subclasses as necessary.java.lang.Object
convertDataValueToObjectValue(java.lang.Object fieldValue, Session session, XMLUnmarshaller unmarshaller)
INTERNALjava.lang.Object
convertObjectValueToDataValue(java.lang.Object value, Session session, XMLMarshaller marshaller)
INTERNALvoid
fixObjectReferences(java.lang.Object object, java.util.Map objectDescriptors, java.util.Map processedObjects, ObjectLevelReadQuery query, DistributedSession session)
INTERNAL: An object has been serialized from the server to the client.XMLAnyCollectionMapping
getAnyMapping()
java.util.Map<XMLField,XMLMapping>
getChoiceElementMappings()
java.util.Map<java.lang.Class,XMLMapping>
getChoiceElementMappingsByClass()
java.util.ArrayList
getChoiceFieldToClassAssociations()
java.util.Map<java.lang.String,XMLField>
getClassNameToFieldMappings()
java.util.Map<java.lang.Class,XMLField>
getClassToFieldMappings()
java.util.Map<java.lang.Class,java.util.List<XMLField>>
getClassToSourceFieldsMappings()
org.eclipse.persistence.internal.queries.ContainerPolicy
getContainerPolicy()
INTERNAL: Return the mapping's containerPolicy.Converter
getConverter()
Return the converter on the mapping.Converter
getConverter(XMLField field)
java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField>
getFields()
INTERNAL: Returns a vector of all the fields this mapping represents.java.util.Map<XMLField,java.lang.Class>
getFieldToClassMappings()
XMLCompositeDirectCollectionMapping
getMixedContentMapping()
boolean
getReuseContainer()
Return true if the original container on the object should be used if present.AbstractNullPolicy
getWrapperNullPolicy()
void
initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Allow for initialization of properties and validation.boolean
isAny()
boolean
isDefaultEmptyContainer()
INTERNAL Return true if an empty container should be set on the object if there is no presence of the collection in the XML document.boolean
isMixedContent()
boolean
isWriteOnly()
INTERNAL: Some mappings support no attribute (transformation and multitenant primary key).boolean
isXMLMapping()
INTERNAL: All relational mappings should implement this method to return true.void
iterate(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator)
INTERNAL: Iterate on the appropriate attribute value.void
mergeChangesIntoObject(java.lang.Object target, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, java.lang.Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
INTERNAL: Merge changes from the source to the target object.void
mergeIntoObject(java.lang.Object target, boolean isTargetUninitialized, java.lang.Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
INTERNAL: Merge changes from the source to the target object.void
preInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Allow for initialization of properties and validation.void
setAttributeValueInObject(java.lang.Object object, java.lang.Object value)
INTERNAL: Set the value of the attribute mapped by this mapping.void
setChoiceElementMappingsByClass(java.util.Map<java.lang.Class,XMLMapping> choiceElementMappingsByClass)
void
setChoiceFieldToClassAssociations(java.util.ArrayList associations)
void
setContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy cp)
void
setConverter(Converter converter)
Set the converter on the mapping.void
setDefaultEmptyContainer(boolean defaultEmptyContainer)
INTERNAL Indicate whether by default an empty container should be set on the field/property if the collection is not present in the XML document.void
setIsAny(boolean b)
void
setIsWriteOnly(boolean b)
void
setMixedContent(boolean mixed)
PUBLIC: Allows the user to indicate that this mapping should also allow for mixed content in addition to any of the elements in the choice.void
setMixedContent(java.lang.String groupingElement)
PUBLIC: Allows the user to indicate that this mapping should also allow for mixed content in addition to any of the elements in the choice.void
setReuseContainer(boolean reuseContainer)
Specify whether the original container on the object should be used if present.void
setWrapperNullPolicy(AbstractNullPolicy policy)
void
useCollectionClass(java.lang.Class concreteContainerClass)
void
useCollectionClassName(java.lang.String concreteContainerClassName)
java.lang.Object
valueFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, org.eclipse.persistence.internal.sessions.AbstractSession executionSession, boolean isTargetProtected, java.lang.Boolean[] wasCacheUsed)
INTERNAL: A subclass should implement this method if it wants different behavior.void
writeFromObjectIntoRow(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType)
INTERNAL: A subclass should implement this method if it wants different behavior.void
writeSingleValue(java.lang.Object value, java.lang.Object parent, XMLRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: A method that marshals a single value to the provided Record based on this mapping's XPath.-
Methods inherited from class org.eclipse.persistence.mappings.DatabaseMapping
addUnconvertedProperty, buildBackupCloneForPartObject, buildChangeRecord, buildCloneForPartObject, buildContainerClone, buildCopy, buildExpression, buildObjectJoinExpression, buildObjectJoinExpression, buildShallowOriginalFromRow, calculateDeferredChanges, cascadeDiscoverAndPersistUnregisteredNewObjects, cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired, clone, cloneFields, collectQueryParameters, convertConverterClassNamesToClasses, createCloneValueHolder, derivesId, earlyPreDelete, extractNestedExpressions, extractNestedNonAggregateExpressions, fixRealObjectReferences, getAttributeAccessor, getAttributeClassification, getAttributeName, getAttributeValueFromObject, getDerivedIdMapping, getDescriptor, getField, getFieldClassification, getGetMethodName, getMapsIdValue, getObjectCorrespondingTo, getOrderByNormalizedExpressions, getProperties, getProperty, getRealAttributeValueFromAttribute, getRealAttributeValueFromObject, getRealCollectionAttributeValueFromObject, getReferenceDescriptor, getRelationshipPartner, getSelectFields, getSelectTables, getSetMethodName, getUnconvertedProperties, getValueFromRemoteValueHolder, getWeight, hasConstraintDependency, hasDependency, hasInverseConstraintDependency, hasMapsIdValue, hasNestedIdentityReference, hasRootExpressionThatShouldUseOuterJoin, hasUnconvertedProperties, instantiateAttribute, isAbstractColumnMapping, isAbstractCompositeCollectionMapping, isAbstractCompositeDirectCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isAggregateCollectionMapping, isAggregateMapping, isAggregateObjectMapping, isAttributeValueFromObjectInstantiated, isCacheable, isCandidateForPrivateOwnedRemoval, isCascadedLockingSupported, isChangeTrackingSupported, isCloningRequired, isCollectionMapping, isDatabaseMapping, isDirectCollectionMapping, isDirectMapMapping, isDirectToFieldMapping, isDirectToXMLTypeMapping, isEISMapping, isElementCollectionMapping, isForeignReferenceMapping, isInAndOutSopObject, isInOnlySopObject, isInSopObject, isJoiningSupported, isJPAId, isLazy, isLockableMapping, isManyToManyMapping, isManyToOneMapping, isMapKeyMapping, isMultitenantPrimaryKeyMapping, isNestedTableMapping, isObjectReferenceMapping, isOneToManyMapping, isOneToOneMapping, isOptional, isOutOnlySopObject, isOutSopObject, isOwned, isPrimaryKeyMapping, isPrivateOwned, isReadOnly, isReferenceMapping, isRelationalMapping, isRemotelyInitialized, isStructureMapping, isTransformationMapping, isUnidirectionalOneToManyMapping, isUsingMethodAccess, isVariableOneToOneMapping, iterateOnRealAttributeValue, load, loadAll, performDataModificationEvent, postCalculateChanges, postCalculateChangesOnDeleted, postDelete, postInitialize, postInitializeSourceAndTargetExpressions, postInsert, postUpdate, preDelete, preInsert, prepareCascadeLockingPolicy, preUpdate, readFromResultSetIntoObject, readFromRowIntoObject, readOnly, readWrite, recordPrivateOwnedRemovals, rehashFieldDependancies, remoteInitialization, remotelyInitialized, replaceValueHoldersIn, setAttributeAccessor, setAttributeName, setChangeListener, setDerivedIdMapping, setDerivesId, setDescriptor, setFields, setGetMethodName, setIsCacheable, setIsInAndOutSopObject, setIsInSopObject, setIsJPAId, setIsLazy, setIsMapKeyMapping, setIsOptional, setIsOutSopObject, setIsPrimaryKeyMapping, setIsReadOnly, setMapsIdValue, setProperties, setProperty, setRealAttributeValueInObject, setSetMethodName, setWeight, simpleAddToCollectionChangeRecord, simpleRemoveFromCollectionChangeRecord, toString, updateChangeRecord, updateCollectionChangeRecord, validateAfterInitialization, validateBeforeInitialization, valueFromObject, valueFromResultSet, valueFromRow, verifyDelete, writeFromAttributeIntoRow, writeFromObjectIntoRowForShallowInsert, writeFromObjectIntoRowForShallowInsertWithChangeRecord, writeFromObjectIntoRowForUpdate, writeFromObjectIntoRowForUpdateAfterShallowInsert, writeFromObjectIntoRowForUpdateBeforeShallowDelete, writeFromObjectIntoRowForWhereClause, writeFromObjectIntoRowWithChangeRecord, writeInsertFieldsIntoRow, writeUpdateFieldsIntoRow
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.persistence.internal.oxm.mappings.Mapping
getAttributeAccessor, getAttributeClassification, getAttributeName, getAttributeValueFromObject, getDescriptor, getField, getReferenceDescriptor, isAbstractCompositeCollectionMapping, isAbstractCompositeDirectCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isCollectionMapping, isReadOnly, isReferenceMapping, isTransformationMapping, setAttributeAccessor, setAttributeName, setGetMethodName, setIsReadOnly, setProperties, setSetMethodName
-
-
-
-
Method Detail
-
getConverter
public Converter getConverter()
Return the converter on the mapping. A converter can be used to convert between the object's value and database value of the attribute.- Specified by:
getConverter
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
setConverter
public void setConverter(Converter converter)
Set the converter on the mapping. A converter can be used to convert between the object's value and database value of the attribute.- Specified by:
setConverter
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
buildBackupClone
public void buildBackupClone(java.lang.Object clone, java.lang.Object backup, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork)
INTERNAL: Clone the attribute from the clone and assign it to the backup.- Specified by:
buildBackupClone
in classDatabaseMapping
-
buildClone
public void buildClone(java.lang.Object original, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, java.lang.Object clone, java.lang.Integer refreshCascade, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession)
INTERNAL: Clone the attribute from the original and assign it to the clone.- Specified by:
buildClone
in classDatabaseMapping
-
buildCloneFromRow
public void buildCloneFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, java.lang.Object clone, org.eclipse.persistence.internal.identitymaps.CacheKey sharedCacheKey, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, org.eclipse.persistence.internal.sessions.AbstractSession executionSession)
Description copied from class:DatabaseMapping
INTERNAL: A combination of readFromRowIntoObject and buildClone.buildClone assumes the attribute value exists on the original and can simply be copied.
readFromRowIntoObject assumes that one is building an original.
Both of the above assumptions are false in this method, and actually attempts to do both at the same time.
Extract value from the row and set the attribute to this value in the working copy clone. In order to bypass the shared cache when in transaction a UnitOfWork must be able to populate working copies directly from the row.
- Specified by:
buildCloneFromRow
in classDatabaseMapping
-
cascadePerformRemoveIfRequired
public void cascadePerformRemoveIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects)
INTERNAL: Cascade perform delete through mappings that require the cascade- Specified by:
cascadePerformRemoveIfRequired
in classDatabaseMapping
-
cascadeRegisterNewIfRequired
public void cascadeRegisterNewIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects)
INTERNAL: Cascade registerNew for Create through mappings that require the cascade- Specified by:
cascadeRegisterNewIfRequired
in classDatabaseMapping
-
compareForChange
public org.eclipse.persistence.internal.sessions.ChangeRecord compareForChange(java.lang.Object clone, java.lang.Object backup, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method was created in VisualAge.- Specified by:
compareForChange
in classDatabaseMapping
- Returns:
- prototype.changeset.ChangeRecord
-
compareObjects
public boolean compareObjects(java.lang.Object firstObject, java.lang.Object secondObject, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Compare the attributes belonging to this mapping for the objects.- Specified by:
compareObjects
in classDatabaseMapping
-
fixObjectReferences
public void fixObjectReferences(java.lang.Object object, java.util.Map objectDescriptors, java.util.Map processedObjects, ObjectLevelReadQuery query, DistributedSession session)
INTERNAL: An object has been serialized from the server to the client. Replace the transient attributes of the remote value holders with client-side objects.- Specified by:
fixObjectReferences
in classDatabaseMapping
-
iterate
public void iterate(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator)
INTERNAL: Iterate on the appropriate attribute value.- Specified by:
iterate
in classDatabaseMapping
-
mergeChangesIntoObject
public void mergeChangesIntoObject(java.lang.Object target, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, java.lang.Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
INTERNAL: Merge changes from the source to the target object.- Specified by:
mergeChangesIntoObject
in classDatabaseMapping
-
mergeIntoObject
public void mergeIntoObject(java.lang.Object target, boolean isTargetUninitialized, java.lang.Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
INTERNAL: Merge changes from the source to the target object.- Specified by:
mergeIntoObject
in classDatabaseMapping
-
valueFromRow
public java.lang.Object valueFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, org.eclipse.persistence.internal.sessions.AbstractSession executionSession, boolean isTargetProtected, java.lang.Boolean[] wasCacheUsed) throws DatabaseException
Description copied from class:DatabaseMapping
INTERNAL: A subclass should implement this method if it wants different behavior. Returns the value for the mapping from the database row. The execution session is the session the query was executed on, and its platform should be used for data conversion.- Overrides:
valueFromRow
in classDatabaseMapping
- Throws:
DatabaseException
-
writeFromObjectIntoRow
public void writeFromObjectIntoRow(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType) throws DescriptorException
Description copied from class:DatabaseMapping
INTERNAL: A subclass should implement this method if it wants different behavior. Write the attribute value from the object to the row.- Overrides:
writeFromObjectIntoRow
in classDatabaseMapping
- Throws:
DescriptorException
-
writeSingleValue
public void writeSingleValue(java.lang.Object value, java.lang.Object parent, XMLRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
Description copied from interface:XMLMapping
INTERNAL: A method that marshals a single value to the provided Record based on this mapping's XPath. Used for Sequenced marshalling.- Specified by:
writeSingleValue
in interfaceorg.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
- Specified by:
writeSingleValue
in interfaceXMLMapping
- Parameters:
value
- - The value to be marshalledrow
- - The Record the value is being marshalled too.
-
isXMLMapping
public boolean isXMLMapping()
Description copied from class:DatabaseMapping
INTERNAL: All relational mappings should implement this method to return true.- Overrides:
isXMLMapping
in classDatabaseMapping
-
getFields
public java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> getFields()
Description copied from class:DatabaseMapping
INTERNAL: Returns a vector of all the fields this mapping represents.- Overrides:
getFields
in classDatabaseMapping
-
collectFields
protected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> collectFields()
Description copied from class:DatabaseMapping
This method must be overwritten in the subclasses to return a vector of all the fields this mapping represents.- Overrides:
collectFields
in classDatabaseMapping
-
addChoiceElement
public void addChoiceElement(java.lang.String xpath, java.lang.Class elementType)
-
addChoiceElement
public void addChoiceElement(java.lang.String xpath, java.lang.String elementTypeName)
- Specified by:
addChoiceElement
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
addChoiceElement
public void addChoiceElement(XMLField xmlField, java.lang.Class elementType)
-
addChoiceElement
public void addChoiceElement(java.util.List<XMLField> srcFields, java.lang.Class elementType, java.util.List<XMLField> tgtFields)
-
addChoiceElement
public void addChoiceElement(java.util.List<XMLField> srcFields, java.lang.String elementTypeName, java.util.List<XMLField> tgtFields)
- Specified by:
addChoiceElement
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
addChoiceElement
public void addChoiceElement(java.lang.String srcXPath, java.lang.Class elementType, java.lang.String tgtXPath)
-
addChoiceElement
public void addChoiceElement(java.lang.String srcXpath, java.lang.String elementTypeName, java.lang.String tgtXpath)
- Specified by:
addChoiceElement
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
addChoiceElement
public void addChoiceElement(XMLField sourceField, java.lang.Class elementType, XMLField targetField)
-
addChoiceElement
public void addChoiceElement(XMLField field, java.lang.String elementTypeName)
- Specified by:
addChoiceElement
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
getFieldToClassMappings
public java.util.Map<XMLField,java.lang.Class> getFieldToClassMappings()
- Specified by:
getFieldToClassMappings
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
initialize
public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
Description copied from class:DatabaseMapping
INTERNAL: Allow for initialization of properties and validation.- Overrides:
initialize
in classDatabaseMapping
- Throws:
DescriptorException
-
getClassToFieldMappings
public java.util.Map<java.lang.Class,XMLField> getClassToFieldMappings()
- Specified by:
getClassToFieldMappings
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
getChoiceElementMappings
public java.util.Map<XMLField,XMLMapping> getChoiceElementMappings()
- Specified by:
getChoiceElementMappings
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
getContainerPolicy
public org.eclipse.persistence.internal.queries.ContainerPolicy getContainerPolicy()
Description copied from class:DatabaseMapping
INTERNAL: Return the mapping's containerPolicy.- Specified by:
getContainerPolicy
in interfaceorg.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
- Overrides:
getContainerPolicy
in classDatabaseMapping
-
setContainerPolicy
public void setContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy cp)
-
useCollectionClass
public void useCollectionClass(java.lang.Class concreteContainerClass)
-
useCollectionClassName
public void useCollectionClassName(java.lang.String concreteContainerClassName)
- Specified by:
useCollectionClassName
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
convertClassNamesToClasses
public void convertClassNamesToClasses(java.lang.ClassLoader classLoader)
Description copied from class:DatabaseMapping
INTERNAL: Convert all the class-name-based settings in this mapping to actual class-based settings This method is implemented by subclasses as necessary.- Specified by:
convertClassNamesToClasses
in interfaceorg.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
- Specified by:
convertClassNamesToClasses
in interfaceXMLMapping
- Overrides:
convertClassNamesToClasses
in classDatabaseMapping
-
addConverter
public void addConverter(XMLField field, Converter converter)
- Specified by:
addConverter
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
getConverter
public Converter getConverter(XMLField field)
- Specified by:
getConverter
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
getChoiceFieldToClassAssociations
public java.util.ArrayList getChoiceFieldToClassAssociations()
- Specified by:
getChoiceFieldToClassAssociations
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
setChoiceFieldToClassAssociations
public void setChoiceFieldToClassAssociations(java.util.ArrayList associations)
-
isWriteOnly
public boolean isWriteOnly()
Description copied from class:DatabaseMapping
INTERNAL: Some mappings support no attribute (transformation and multitenant primary key).- Specified by:
isWriteOnly
in interfaceXMLMapping
- Overrides:
isWriteOnly
in classDatabaseMapping
-
setIsWriteOnly
public void setIsWriteOnly(boolean b)
- Specified by:
setIsWriteOnly
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
- Specified by:
setIsWriteOnly
in interfaceXMLMapping
-
isAny
public boolean isAny()
- Specified by:
isAny
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
setIsAny
public void setIsAny(boolean b)
-
preInitialize
public void preInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
Description copied from class:DatabaseMapping
INTERNAL: Allow for initialization of properties and validation.- Overrides:
preInitialize
in classDatabaseMapping
- Throws:
DescriptorException
-
setAttributeValueInObject
public void setAttributeValueInObject(java.lang.Object object, java.lang.Object value) throws DescriptorException
Description copied from class:DatabaseMapping
INTERNAL: Set the value of the attribute mapped by this mapping.- Specified by:
setAttributeValueInObject
in interfaceorg.eclipse.persistence.internal.oxm.mappings.Mapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLRecord>
- Overrides:
setAttributeValueInObject
in classDatabaseMapping
- Throws:
DescriptorException
-
getReuseContainer
public boolean getReuseContainer()
Return true if the original container on the object should be used if present. If it is not present then the container policy will be used to create the container.- Specified by:
getReuseContainer
in interfaceorg.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
-
setReuseContainer
public void setReuseContainer(boolean reuseContainer)
Specify whether the original container on the object should be used if present. If it is not present then the container policy will be used to create the container.- Specified by:
setReuseContainer
in interfaceorg.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
-
getClassToSourceFieldsMappings
public java.util.Map<java.lang.Class,java.util.List<XMLField>> getClassToSourceFieldsMappings()
- Specified by:
getClassToSourceFieldsMappings
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
getClassNameToFieldMappings
public java.util.Map<java.lang.String,XMLField> getClassNameToFieldMappings()
- Specified by:
getClassNameToFieldMappings
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
isMixedContent
public boolean isMixedContent()
- Specified by:
isMixedContent
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
setMixedContent
public void setMixedContent(java.lang.String groupingElement)
PUBLIC: Allows the user to indicate that this mapping should also allow for mixed content in addition to any of the elements in the choice. The grouping element parameter is used in the case that there is a common grouping element to all the other elements in this choice. If so, that grouping element can be specified here to allow the mixed content to be written/detected inside the wrapper element.- Specified by:
setMixedContent
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
- Since:
- EclipseLink 2.3.1
-
setMixedContent
public void setMixedContent(boolean mixed)
PUBLIC: Allows the user to indicate that this mapping should also allow for mixed content in addition to any of the elements in the choice.- Specified by:
setMixedContent
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
- Since:
- EclipseLink 2.3.1
-
getMixedContentMapping
public XMLCompositeDirectCollectionMapping getMixedContentMapping()
- Specified by:
getMixedContentMapping
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
getAnyMapping
public XMLAnyCollectionMapping getAnyMapping()
- Specified by:
getAnyMapping
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
isDefaultEmptyContainer
public boolean isDefaultEmptyContainer()
INTERNAL Return true if an empty container should be set on the object if there is no presence of the collection in the XML document.- Specified by:
isDefaultEmptyContainer
in interfaceorg.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
- Since:
- EclipseLink 2.3.3
-
setDefaultEmptyContainer
public void setDefaultEmptyContainer(boolean defaultEmptyContainer)
INTERNAL Indicate whether by default an empty container should be set on the field/property if the collection is not present in the XML document.- Specified by:
setDefaultEmptyContainer
in interfaceorg.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
- Since:
- EclipseLink 2.3.3
-
getWrapperNullPolicy
public AbstractNullPolicy getWrapperNullPolicy()
- Specified by:
getWrapperNullPolicy
in interfaceorg.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
-
setWrapperNullPolicy
public void setWrapperNullPolicy(AbstractNullPolicy policy)
- Specified by:
setWrapperNullPolicy
in interfaceorg.eclipse.persistence.internal.oxm.mappings.XMLContainerMapping
-
getChoiceElementMappingsByClass
public java.util.Map<java.lang.Class,XMLMapping> getChoiceElementMappingsByClass()
- Specified by:
getChoiceElementMappingsByClass
in interfaceorg.eclipse.persistence.internal.oxm.mappings.ChoiceCollectionMapping<org.eclipse.persistence.internal.sessions.AbstractSession,AttributeAccessor,org.eclipse.persistence.internal.queries.ContainerPolicy,Converter,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField,XMLMarshaller,Session,XMLUnmarshaller,XMLField,XMLMapping,XMLRecord>
-
setChoiceElementMappingsByClass
public void setChoiceElementMappingsByClass(java.util.Map<java.lang.Class,XMLMapping> choiceElementMappingsByClass)
-
convertObjectValueToDataValue
public java.lang.Object convertObjectValueToDataValue(java.lang.Object value, Session session, XMLMarshaller marshaller)
INTERNAL- Specified by:
convertObjectValueToDataValue
in interfaceorg.eclipse.persistence.internal.oxm.mappings.XMLConverterMapping<XMLMarshaller,Session,XMLUnmarshaller>
- Since:
- EclipseLink 2.5.0
-
convertDataValueToObjectValue
public java.lang.Object convertDataValueToObjectValue(java.lang.Object fieldValue, Session session, XMLUnmarshaller unmarshaller)
INTERNAL- Specified by:
convertDataValueToObjectValue
in interfaceorg.eclipse.persistence.internal.oxm.mappings.XMLConverterMapping<XMLMarshaller,Session,XMLUnmarshaller>
- Since:
- EclipseLink 2.5.0
-
-