EclipseLink1.0 - 20080707 API Reference

org.eclipse.persistence.oxm.mappings
Class XMLObjectReferenceMapping

java.lang.Object
  extended by org.eclipse.persistence.mappings.DatabaseMapping
      extended by org.eclipse.persistence.mappings.AggregateMapping
          extended by org.eclipse.persistence.oxm.mappings.XMLObjectReferenceMapping
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, XMLMapping
Direct Known Subclasses:
XMLCollectionReferenceMapping

public class XMLObjectReferenceMapping
extends AggregateMapping
implements 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:
Serialized Form

Field Summary
protected  java.util.HashMap sourceToTargetKeyFieldAssociations
           
protected  java.util.Vector sourceToTargetKeys
           
 
Fields inherited from class org.eclipse.persistence.mappings.AggregateMapping
referenceClass, referenceClassName, referenceDescriptor
 
Fields inherited from class org.eclipse.persistence.mappings.DatabaseMapping
attributeAccessor, attributeName, descriptor, fields, isLazy, isOptional, isReadOnly, isRemotelyInitialized, NO_FIELDS, NO_WEIGHT, primaryKeyMapping, properties, weight, WEIGHT_1
 
Constructor Summary
XMLObjectReferenceMapping()
          PUBLIC: The default constructor initializes the sourceToTargetKeyFieldAssociations and sourceToTargetKeys data structures.
 
Method Summary
 void addSourceToTargetKeyFieldAssociation(java.lang.String srcXPath, java.lang.String tgtXPath)
          PUBLIC: Add a source-target xpath pair to the map.
 java.lang.Object buildFieldValue(java.lang.Object targetObject, XMLField xmlFld, org.eclipse.persistence.internal.sessions.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).
 void buildReference(UnmarshalRecord record, XMLField xmlField, java.lang.Object object, org.eclipse.persistence.internal.sessions.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.
 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
 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
 java.util.Vector getFields()
          INTERNAL: Return a list of XMLFields based on the source XPath values in the source-target key field associations list.
protected  javax.xml.namespace.QName getSchemaType(XMLField xmlField, java.lang.Object value, org.eclipse.persistence.internal.sessions.AbstractSession session)
          Return a QName representation the schema type for a given XMLField, if applicable.
protected  javax.xml.namespace.QName getSingleValueToWriteForUnion(XMLUnionField xmlField, java.lang.Object value, org.eclipse.persistence.internal.sessions.AbstractSession session)
          Return a single QName representation for a given XMLUnionField, if applicable.
 java.util.HashMap getSourceToTargetKeyFieldAssociations()
          INTERNAL: Return a list of source-target xmlfield pairs.
protected  java.lang.String getValueToWrite(javax.xml.namespace.QName schemaType, java.lang.Object value, org.eclipse.persistence.internal.sessions.AbstractSession session)
          Return a string representation of a given value, based on a given schema type.
 void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Register a ReferenceResolver as an event listener on the session, if one doesn't already exist.
 boolean isXMLMapping()
          INTERNAL: Indicates that this is an XML mapping.
 java.lang.Object readFromRowIntoObject(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, java.lang.Object targetObject, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.sessions.AbstractSession executionSession)
          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.
 void setField(org.eclipse.persistence.internal.helper.DatabaseField field)
           
 void setSourceToTargetKeyFieldAssociations(java.util.HashMap sourceToTargetKeyFieldAssociations)
          INTERNAL: Set the list of source-target xmlfield pairs.
 void writeFromObjectIntoRow(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Write the attribute value from the object to the row.
 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.AggregateMapping
buildAggregateDeleteQuery, buildAggregateModifyQuery, buildAggregateWriteQuery, buildBackupClone, buildBackupClonePart, buildClone, buildCloneFromRow, buildClonePart, buildCopy, buildCopyOfAttributeValue, buildExpression, buildNewMergeInstanceOf, compareAttributeValues, compareForChange, compareObjects, convertClassNamesToClasses, executeEvent, fixAttributeValue, fixObjectReferences, getAttributeValueFromBackupClone, getObjectBuilder, getObjectBuilderForClass, getQueryManager, getReferenceClass, getReferenceClassName, getReferenceDescriptor, getReferenceDescriptor, getReferenceDescriptor, isAggregateMapping, iterate, iterateOnAttributeValue, mergeAttributeValue, mergeChangesIntoObject, mergeIntoObject, postDelete, postDeleteAttributeValue, postInsert, postInsertAttributeValue, postUpdate, postUpdateAttributeValue, preDelete, preDeleteAttributeValue, preInsert, preInsertAttributeValue, preUpdate, preUpdateAttributeValue, remoteInitialization, setReferenceClass, setReferenceClassName, setReferenceDescriptor, updateChangeRecord, verifyDelete, verifyDeleteOfAttributeValue
 
Methods inherited from class org.eclipse.persistence.mappings.DatabaseMapping
addToCollectionChangeRecord, buildBackupCloneForPartObject, buildChangeRecord, buildCloneForPartObject, buildObjectJoinExpression, buildObjectJoinExpression, buildShallowOriginalFromRow, calculateDeferredChanges, cascadeDiscoverAndPersistUnregisteredNewObjects, cascadeMerge, clone, cloneFields, collectFields, createUnitOfWorkValueHolder, extractNestedExpressions, fixRealObjectReferences, getAttributeAccessor, getAttributeClassification, getAttributeName, getAttributeValueFromObject, getContainerPolicy, getDescriptor, getField, getFieldClassification, getGetMethodName, getObjectCorrespondingTo, getProperties, getProperty, getRealAttributeValueFromObject, getRealCollectionAttributeValueFromObject, getRelationshipPartner, getSelectFields, getSelectTables, getSetMethodName, getValueFromRemoteValueHolder, getWeight, hasConstraintDependency, hasDependency, hasInverseConstraintDependency, hasRootExpressionThatShouldUseOuterJoin, instantiateAttribute, isAbstractCompositeCollectionMapping, isAbstractCompositeDirectCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isAggregateCollectionMapping, isAggregateObjectMapping, isCascadedLockingSupported, isChangeTrackingSupported, isCloningRequired, isCollectionMapping, isDatabaseMapping, isDirectCollectionMapping, isDirectMapMapping, isDirectToFieldMapping, isDirectToXMLTypeMapping, isEISMapping, isForeignReferenceMapping, isJoiningSupported, isLazy, isManyToManyMapping, isNestedTableMapping, isObjectReferenceMapping, isOneToManyMapping, isOneToOneMapping, isOptional, isPrimaryKeyMapping, isPrivateOwned, isReadOnly, isReferenceMapping, isRelationalMapping, isRemotelyInitialized, isStructureMapping, isTransformationMapping, isUsingMethodAccess, isVariableOneToOneMapping, isWriteOnly, iterateOnRealAttributeValue, performDataModificationEvent, postInitialize, preInitialize, prepareCascadeLockingPolicy, readFromResultSetIntoObject, readFromRowIntoObject, readOnly, readWrite, rehashFieldDependancies, remotelyInitialized, removeFromCollectionChangeRecord, replaceValueHoldersIn, setAttributeAccessor, setAttributeName, setAttributeValueInObject, setChangeListener, setDescriptor, setFields, setGetMethodName, setIsLazy, setIsOptional, setIsPrimaryKeyMapping, setIsReadOnly, setProperties, setProperty, setRealAttributeValueInObject, setSetMethodName, setWeight, simpleAddToCollectionChangeRecord, simpleRemoveFromCollectionChangeRecord, toString, validateAfterInitialization, validateBeforeInitialization, valueFromObject, valueFromResultSet, valueFromRow, valueFromRow, writeFromAttributeIntoRow, writeFromObjectIntoRowForShallowInsert, writeFromObjectIntoRowForShallowInsertWithChangeRecord, writeFromObjectIntoRowForUpdate, writeFromObjectIntoRowForWhereClause, writeFromObjectIntoRowWithChangeRecord, writeInsertFieldsIntoRow, writeUpdateFieldsIntoRow
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

sourceToTargetKeyFieldAssociations

protected java.util.HashMap sourceToTargetKeyFieldAssociations

sourceToTargetKeys

protected java.util.Vector sourceToTargetKeys
Constructor Detail

XMLObjectReferenceMapping

public XMLObjectReferenceMapping()
PUBLIC: The default constructor initializes the sourceToTargetKeyFieldAssociations and sourceToTargetKeys data structures.

Method Detail

addSourceToTargetKeyFieldAssociation

public void addSourceToTargetKeyFieldAssociation(java.lang.String srcXPath,
                                                 java.lang.String tgtXPath)
PUBLIC: Add a source-target xpath pair to the map.

Parameters:
srcXPath -
tgtXPath -

buildFieldValue

public java.lang.Object buildFieldValue(java.lang.Object targetObject,
                                        XMLField xmlFld,
                                        org.eclipse.persistence.internal.sessions.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).

Parameters:
sourceObject -
xmlFld -
session -
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,
                           java.lang.Object object,
                           org.eclipse.persistence.internal.sessions.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.

Parameters:
record -
xmlField -
object -
session -

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 class DatabaseMapping

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 class DatabaseMapping

getFields

public java.util.Vector getFields()
INTERNAL: Return a list of XMLFields based on the source XPath values in the source-target key field associations list.

Overrides:
getFields in class DatabaseMapping

getSchemaType

protected javax.xml.namespace.QName getSchemaType(XMLField xmlField,
                                                  java.lang.Object value,
                                                  org.eclipse.persistence.internal.sessions.AbstractSession session)
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.

Parameters:
xmlField -
value -
Returns:

getSingleValueToWriteForUnion

protected javax.xml.namespace.QName getSingleValueToWriteForUnion(XMLUnionField xmlField,
                                                                  java.lang.Object value,
                                                                  org.eclipse.persistence.internal.sessions.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.

Parameters:
xmlField -
value -
Returns:

getSourceToTargetKeyFieldAssociations

public java.util.HashMap getSourceToTargetKeyFieldAssociations()
INTERNAL: Return a list of source-target xmlfield pairs.

Returns:

getValueToWrite

protected java.lang.String getValueToWrite(javax.xml.namespace.QName schemaType,
                                           java.lang.Object value,
                                           org.eclipse.persistence.internal.sessions.AbstractSession session)
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.

Parameters:
schemaType -
value -
Returns:

initialize

public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
                throws DescriptorException
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:
initialize in class AggregateMapping
Throws:
DescriptorException
See Also:
ReferenceResolver, NamespaceResolver

isXMLMapping

public boolean isXMLMapping()
INTERNAL: Indicates that this is an XML mapping.

Overrides:
isXMLMapping in class DatabaseMapping

readFromRowIntoObject

public java.lang.Object readFromRowIntoObject(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
                                              org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager,
                                              java.lang.Object targetObject,
                                              ObjectBuildingQuery sourceQuery,
                                              org.eclipse.persistence.internal.sessions.AbstractSession executionSession)
                                       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:
readFromRowIntoObject in class DatabaseMapping
Throws:
DatabaseException

setField

public void setField(org.eclipse.persistence.internal.helper.DatabaseField field)
Parameters:
field -

setSourceToTargetKeyFieldAssociations

public void setSourceToTargetKeyFieldAssociations(java.util.HashMap sourceToTargetKeyFieldAssociations)
INTERNAL: Set the list of source-target xmlfield pairs.


writeFromObjectIntoRow

public void writeFromObjectIntoRow(java.lang.Object object,
                                   org.eclipse.persistence.internal.sessions.AbstractRecord row,
                                   org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Write the attribute value from the object to the row.

Overrides:
writeFromObjectIntoRow in class DatabaseMapping

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 interface XMLMapping
Parameters:
value - - The value to be marshalled
row - - The Record the value is being marshalled too.

EclipseLink1.0 - 20080707 API Reference