Module org.eclipse.persistence.core
Class XMLObjectReferenceMapping
java.lang.Object
org.eclipse.persistence.core.mappings.CoreMapping<AttributeAccessor,AbstractSession,ContainerPolicy,ClassDescriptor,DatabaseField>
org.eclipse.persistence.mappings.DatabaseMapping
org.eclipse.persistence.mappings.AggregateMapping
org.eclipse.persistence.oxm.mappings.XMLObjectReferenceMapping
- All Implemented Interfaces:
Serializable,Cloneable,Mapping<AbstractSession,,AttributeAccessor, ContainerPolicy, ClassDescriptor, DatabaseField, XMLRecord> ObjectReferenceMapping<AbstractSession,,AttributeAccessor, ContainerPolicy, ClassDescriptor, DatabaseField, UnmarshalRecord, XMLField, XMLRecord> XMLMapping
- Direct Known Subclasses:
XMLCollectionReferenceMapping
public class XMLObjectReferenceMapping
extends AggregateMapping
implements ObjectReferenceMapping<AbstractSession,AttributeAccessor,ContainerPolicy,ClassDescriptor,DatabaseField,UnmarshalRecord,XMLField,XMLRecord>, XMLMapping
TopLink OXM version of a 1-1 mapping. A list of source-target key field
associations is used to link the source xpaths to their related target xpaths,
and hence their primary key (unique identifier) values used when (un)marshalling.
This mapping has a Vector of XMLFields as opposed to a single XMLField.
It is important to note that each target xpath is assumed to be set as a primary
key field on the target (reference) class descriptor - this is necessary in order
to locate the correct target object instance in the session cache when resolving
mapping references.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.eclipse.persistence.mappings.DatabaseMapping
DatabaseMapping.WriteType -
Field Summary
FieldsFields inherited from class org.eclipse.persistence.mappings.AggregateMapping
hasNestedIdentityReference, referenceClass, referenceClassName, referenceDescriptorFields 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
ConstructorsConstructorDescriptionPUBLIC: The default constructor initializes the sourceToTargetKeyFieldAssociations and sourceToTargetKeys data structures. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddSourceToTargetKeyFieldAssociation(String srcXPath, String tgtXPath) PUBLIC: Add a source-target xpath pair to the map.voidaddSourceToTargetKeyFieldAssociation(XMLField srcField, XMLField tgtField) buildFieldValue(Object targetObject, XMLField xmlFld, AbstractSession session) INTERNAL: Retrieve the target object's primary key value that is mapped to a given source xpath (in the source-target key field association list).voidbuildReference(UnmarshalRecord record, XMLField xmlField, Object object, AbstractSession session) INTERNAL: Create (if necessary) and populate a reference object that will be used during the mapping reference resolution phase after unmarshalling is complete.voidcascadePerformRemoveIfRequired(Object object, UnitOfWorkImpl uow, Map visitedObjects) INTERNAL: Cascade perform delete through mappings that require the cascadevoidcascadeRegisterNewIfRequired(Object object, UnitOfWorkImpl uow, Map visitedObjects) INTERNAL: Cascade registerNew for Create through mappings that require the cascadeINTERNAL: Return a list of XMLFields based on the source XPath values in the source-target key field associations list.protected QNamegetSchemaType(XMLField xmlField, Object value, AbstractSession session) Return a QName representation the schema type for a given XMLField, if applicable.protected QNamegetSingleValueToWriteForUnion(XMLUnionField xmlField, Object value, AbstractSession session) Return a single QName representation for a given XMLUnionField, if applicable.INTERNAL: Return a list of source-target xmlfield pairs.protected StringgetValueToWrite(QName schemaType, Object value, AbstractSession session) Return a string representation of a given value, based on a given schema type.voidinitialize(AbstractSession session) INTERNAL: Register a ReferenceResolver as an event listener on the session, if one doesn't already exist.booleanINTERNAL: Related mapping should implement this method to return true.booleanINTERNAL: Some mappings support no attribute (transformation and multitenant primary key).booleanINTERNAL: Indicates that this is an XML mapping.voidpreInitialize(AbstractSession session) INTERNAL: Allow for initialization of properties and validation.readFromRowIntoObject(AbstractRecord databaseRow, JoinedAttributeManager joinManager, Object targetObject, CacheKey parentCacheKey, ObjectBuildingQuery sourceQuery, AbstractSession executionSession, boolean isTargetProtected) INTERNAL: Extract the primary key values from the row, then create an org.eclipse.persistence.internal.oxm.Reference instance and store it on the session's org.eclipse.persistence.internal.oxm.ReferenceResolver.voidsetAttributeValueInObject(Object object, Object value) INTERNAL: Set the value of the attribute mapped by this mapping.voidsetField(DatabaseField field) voidsetIsWriteOnly(boolean b) voidsetSourceToTargetKeyFieldAssociations(HashMap sourceToTargetKeyFieldAssociations) INTERNAL: Set the list of source-target xmlfield pairs.voidwriteFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session, DatabaseMapping.WriteType writeType) INTERNAL: Write the attribute value from the object to the row.voidwriteSingleValue(Object value, Object parent, XMLRecord row, 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.AggregateMapping
buildAggregateDeleteQuery, buildAggregateModifyQuery, buildAggregateWriteQuery, buildBackupClone, buildBackupClonePart, buildClone, buildCloneFromRow, buildClonePart, buildClonePart, buildCopy, buildCopyOfAttributeValue, buildExpression, buildNewMergeInstanceOf, compareAttributeValues, compareForChange, compareObjects, convertClassNamesToClasses, executeEvent, fixAttributeValue, fixObjectReferences, getAttributeValueFromBackupClone, getObjectBuilder, getObjectBuilderForClass, getQueryManager, getReferenceClass, getReferenceClassName, getReferenceDescriptor, getReferenceDescriptor, getReferenceDescriptor, hasNestedIdentityReference, isAggregateMapping, iterate, iterateOnAttributeValue, load, loadAll, mergeAttributeValue, mergeChangesIntoObject, mergeIntoObject, postDelete, postDeleteAttributeValue, postInsert, postInsertAttributeValue, postUpdate, postUpdateAttributeValue, preDelete, preDeleteAttributeValue, preInsert, preInsertAttributeValue, preUpdate, preUpdateAttributeValue, remoteInitialization, setReferenceClass, setReferenceClassName, setReferenceDescriptor, updateChangeRecord, verifyDelete, verifyDeleteOfAttributeValueMethods inherited from class org.eclipse.persistence.mappings.DatabaseMapping
addUnconvertedProperty, buildBackupCloneForPartObject, buildChangeRecord, buildCloneForPartObject, buildContainerClone, buildObjectJoinExpression, buildObjectJoinExpression, buildShallowOriginalFromRow, calculateDeferredChanges, cascadeDiscoverAndPersistUnregisteredNewObjects, cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired, clone, cloneFields, collectFields, collectQueryParameters, convertConverterClassNamesToClasses, createCloneValueHolder, derivesId, earlyPreDelete, extractNestedExpressions, extractNestedNonAggregateExpressions, fixRealObjectReferences, getAttributeAccessor, getAttributeClassification, getAttributeName, getAttributeValueFromObject, getContainerPolicy, getDerivedIdMapping, getDescriptor, getField, getFieldClassification, getGetMethodName, getMapsIdValue, getObjectCorrespondingTo, getOrderByNormalizedExpressions, getProperties, getProperty, getRealAttributeValueFromAttribute, getRealAttributeValueFromObject, getRealCollectionAttributeValueFromObject, getRelationshipPartner, getSelectFields, getSelectTables, getSetMethodName, getUnconvertedProperties, getValueFromRemoteValueHolder, getWeight, hasConstraintDependency, hasDependency, hasInverseConstraintDependency, hasMapsIdValue, hasRootExpressionThatShouldUseOuterJoin, hasUnconvertedProperties, instantiateAttribute, isAbstractColumnMapping, isAbstractCompositeCollectionMapping, isAbstractCompositeDirectCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isAggregateCollectionMapping, 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, isOneToManyMapping, isOneToOneMapping, isOptional, isOutOnlySopObject, isOutSopObject, isOwned, isPrimaryKeyMapping, isPrivateOwned, isReadOnly, isReferenceMapping, isRelationalMapping, isRemotelyInitialized, isStructureMapping, isTransformationMapping, isUnidirectionalOneToManyMapping, isUsingMethodAccess, isVariableOneToOneMapping, iterateOnRealAttributeValue, performDataModificationEvent, postCalculateChanges, postCalculateChangesOnDeleted, postInitialize, postInitializeSourceAndTargetExpressions, prepareCascadeLockingPolicy, readFromResultSetIntoObject, readOnly, readWrite, recordPrivateOwnedRemovals, rehashFieldDependancies, 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, updateCollectionChangeRecord, validateAfterInitialization, validateBeforeInitialization, valueFromObject, valueFromResultSet, valueFromRow, valueFromRow, writeFromAttributeIntoRow, writeFromObjectIntoRowForShallowInsert, writeFromObjectIntoRowForShallowInsertWithChangeRecord, writeFromObjectIntoRowForUpdate, writeFromObjectIntoRowForUpdateAfterShallowInsert, writeFromObjectIntoRowForUpdateBeforeShallowDelete, writeFromObjectIntoRowForWhereClause, writeFromObjectIntoRowWithChangeRecord, writeInsertFieldsIntoRow, writeUpdateFieldsIntoRowMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.persistence.internal.oxm.mappings.Mapping
getAttributeAccessor, getAttributeClassification, getAttributeName, getAttributeValueFromObject, getContainerPolicy, getDescriptor, getField, getReferenceDescriptor, isAbstractCompositeCollectionMapping, isAbstractCompositeDirectCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isCollectionMapping, isReadOnly, isReferenceMapping, isTransformationMapping, setAttributeAccessor, setAttributeName, setGetMethodName, setIsReadOnly, setProperties, setSetMethodNameMethods inherited from interface org.eclipse.persistence.internal.oxm.mappings.ObjectReferenceMapping
getReferenceClass, getReferenceClassName, setReferenceClassNameMethods inherited from interface org.eclipse.persistence.oxm.mappings.XMLMapping
convertClassNamesToClasses
-
Field Details
-
sourceToTargetKeyFieldAssociations
-
sourceToTargetKeys
-
-
Constructor Details
-
XMLObjectReferenceMapping
public XMLObjectReferenceMapping()PUBLIC: The default constructor initializes the sourceToTargetKeyFieldAssociations and sourceToTargetKeys data structures.
-
-
Method Details
-
addSourceToTargetKeyFieldAssociation
PUBLIC: Add a source-target xpath pair to the map. -
addSourceToTargetKeyFieldAssociation
-
buildFieldValue
INTERNAL: Retrieve the target object's primary key value that is mapped to a given source xpath (in the source-target key field association list).- Specified by:
buildFieldValuein interfaceObjectReferenceMapping<AbstractSession,AttributeAccessor, ContainerPolicy, ClassDescriptor, DatabaseField, UnmarshalRecord, XMLField, XMLRecord> - Returns:
- null if the target object is null, the reference class is null, or a primary key field name does not exist on the reference descriptor that matches the target field name - otherwise, return the associated primary key value
-
buildReference
public void buildReference(UnmarshalRecord record, XMLField xmlField, Object object, AbstractSession session) INTERNAL: Create (if necessary) and populate a reference object that will be used during the mapping reference resolution phase after unmarshalling is complete.- Specified by:
buildReferencein interfaceObjectReferenceMapping<AbstractSession,AttributeAccessor, ContainerPolicy, ClassDescriptor, DatabaseField, UnmarshalRecord, XMLField, XMLRecord>
-
cascadePerformRemoveIfRequired
INTERNAL: Cascade perform delete through mappings that require the cascade- Specified by:
cascadePerformRemoveIfRequiredin classDatabaseMapping- Parameters:
object- TODOuow- TODOvisitedObjects- TODO
-
cascadeRegisterNewIfRequired
INTERNAL: Cascade registerNew for Create through mappings that require the cascade- Specified by:
cascadeRegisterNewIfRequiredin classDatabaseMapping- Parameters:
object- TODOuow- TODOvisitedObjects- TODO
-
getFields
INTERNAL: Return a list of XMLFields based on the source XPath values in the source-target key field associations list.- Specified by:
getFieldsin interfaceObjectReferenceMapping<AbstractSession,AttributeAccessor, ContainerPolicy, ClassDescriptor, DatabaseField, UnmarshalRecord, XMLField, XMLRecord> - Overrides:
getFieldsin classDatabaseMapping- Returns:
- TODO
-
getSchemaType
Return a QName representation the schema type for a given XMLField, if applicable. Note: This method performs the same functionality as 'getSchemaType' in org.eclipse.persistence.internal.oxm.XMLSimpleMappingNodeValue. -
getSingleValueToWriteForUnion
protected QName getSingleValueToWriteForUnion(XMLUnionField xmlField, Object value, AbstractSession session) Return a single QName representation for a given XMLUnionField, if applicable. Note: This method performs the same functionality as 'getSingleValueToWriteForUnion' in org.eclipse.persistence.internal.oxm.XMLSimpleMappingNodeValue. -
getSourceToTargetKeyFieldAssociations
INTERNAL: Return a list of source-target xmlfield pairs. -
getValueToWrite
Return a string representation of a given value, based on a given schema type. Note: This method performs the same functionality as 'getValueToWrite' in org.eclipse.persistence.internal.oxm.XMLSimpleMappingNodeValue. -
initialize
INTERNAL: Register a ReferenceResolver as an event listener on the session, if one doesn't already exist. Each source/target field will have a namespace resolver set as well.- Overrides:
initializein classAggregateMapping- Throws:
DescriptorException- See Also:
-
preInitialize
Description copied from class:DatabaseMappingINTERNAL: Allow for initialization of properties and validation.- Overrides:
preInitializein classDatabaseMapping- Throws:
DescriptorException
-
isXMLMapping
public boolean isXMLMapping()INTERNAL: Indicates that this is an XML mapping.- Overrides:
isXMLMappingin classDatabaseMapping
-
readFromRowIntoObject
public Object readFromRowIntoObject(AbstractRecord databaseRow, JoinedAttributeManager joinManager, Object targetObject, CacheKey parentCacheKey, ObjectBuildingQuery sourceQuery, AbstractSession executionSession, boolean isTargetProtected) throws DatabaseException INTERNAL: Extract the primary key values from the row, then create an org.eclipse.persistence.internal.oxm.Reference instance and store it on the session's org.eclipse.persistence.internal.oxm.ReferenceResolver.- Overrides:
readFromRowIntoObjectin classDatabaseMapping- Throws:
DatabaseException
-
setField
-
setSourceToTargetKeyFieldAssociations
INTERNAL: Set the list of source-target xmlfield pairs. -
writeFromObjectIntoRow
public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session, DatabaseMapping.WriteType writeType) INTERNAL: Write the attribute value from the object to the row.- Overrides:
writeFromObjectIntoRowin classDatabaseMapping
-
writeSingleValue
Description copied from interface:XMLMappingINTERNAL: A method that marshals a single value to the provided Record based on this mapping's XPath. Used for Sequenced marshalling.- Specified by:
writeSingleValuein interfaceMapping<AbstractSession,AttributeAccessor, ContainerPolicy, ClassDescriptor, DatabaseField, XMLRecord> - Specified by:
writeSingleValuein interfaceXMLMapping- Parameters:
value- - The value to be marshalledrow- - The Record the value is being marshalled too.
-
setIsWriteOnly
public void setIsWriteOnly(boolean b) - Specified by:
setIsWriteOnlyin interfaceObjectReferenceMapping<AbstractSession,AttributeAccessor, ContainerPolicy, ClassDescriptor, DatabaseField, UnmarshalRecord, XMLField, XMLRecord> - Specified by:
setIsWriteOnlyin interfaceXMLMapping
-
isWriteOnly
public boolean isWriteOnly()Description copied from class:DatabaseMappingINTERNAL: Some mappings support no attribute (transformation and multitenant primary key).- Specified by:
isWriteOnlyin interfaceObjectReferenceMapping<AbstractSession,AttributeAccessor, ContainerPolicy, ClassDescriptor, DatabaseField, UnmarshalRecord, XMLField, XMLRecord> - Specified by:
isWriteOnlyin interfaceXMLMapping- Overrides:
isWriteOnlyin classDatabaseMapping- Returns:
- TODO
-
setAttributeValueInObject
Description copied from class:DatabaseMappingINTERNAL: Set the value of the attribute mapped by this mapping.- Specified by:
setAttributeValueInObjectin interfaceMapping<AbstractSession,AttributeAccessor, ContainerPolicy, ClassDescriptor, DatabaseField, XMLRecord> - Overrides:
setAttributeValueInObjectin classDatabaseMapping- Parameters:
object- TODOvalue- TODO- Throws:
DescriptorException
-
getInverseReferenceMapping
-
isObjectReferenceMapping
public boolean isObjectReferenceMapping()Description copied from class:DatabaseMappingINTERNAL: Related mapping should implement this method to return true.- Overrides:
isObjectReferenceMappingin classDatabaseMapping
-