Class AbstractCompositeDirectCollectionMapping
- 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.mappings.foundation.AbstractCompositeDirectCollectionMapping
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,ContainerMapping,ArrayCollectionMapping
- Direct Known Subclasses:
ArrayMapping,EISCompositeDirectCollectionMapping,XMLCompositeDirectCollectionMapping,XMLFragmentCollectionMapping
public abstract class AbstractCompositeDirectCollectionMapping extends DatabaseMapping implements ContainerMapping, ArrayCollectionMapping
AbstractCompositeDirectCollectionMappingconsolidates the behavior of mappings that map collections of "native" data objects (e.g.Strings). These are objects that do not have their own descriptor and repeat within the XML record for the containing object.- See Also:
- Serialized Form
- Author:
- Big Country
- Since:
- TOPLink/Java 3.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.persistence.mappings.DatabaseMapping
DatabaseMapping.WriteType
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.StringelementDataTypeNameThis is the "data type" associated with each element in the nested collection.protected org.eclipse.persistence.internal.helper.DatabaseFieldfieldThis is the field holding the nested collection.protected ConvertervalueConverterAllows user defined conversion between the object value and the database value.-
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 AbstractCompositeDirectCollectionMapping()Default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.ObjectbuildAddedElementFromChangeSet(java.lang.Object changeSet, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)INTERNAL: Build and return a new element based on the change set.voidbuildBackupClone(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.java.lang.ObjectbuildChangeSet(java.lang.Object element, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Build and return a change set for the specified element.voidbuildClone(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.voidbuildCloneFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, 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: Extract value from the row and set the attribute to this value in the working copy clone.protected java.lang.ObjectbuildClonePart(java.lang.Object attributeValue, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession)Build and return a clone of the specified attribute value.voidbuildCopy(java.lang.Object copy, java.lang.Object original, CopyGroup group)INTERNAL: Copy of the attribute of the object.protected java.lang.ObjectbuildElementFromChangeSet(java.lang.Object changeSet, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)Build and return a new element based on the change set.java.lang.ObjectbuildElementFromElement(java.lang.Object object, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)INTERNAL: Build and return a new element based on the specified element.java.lang.ObjectbuildRemovedElementFromChangeSet(java.lang.Object changeSet, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)INTERNAL: Build and return a new element based on the change set.voidcascadePerformRemoveIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects)INTERNAL: Cascade perform delete through mappings that require the cascadevoidcascadeRegisterNewIfRequired(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.VectorcollectFields()Return the fields handled by the mapping.booleancompareElements(java.lang.Object element1, java.lang.Object element2, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Compare the non-null elements.booleancompareElementsForChange(java.lang.Object element1, java.lang.Object element2, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Compare the non-null elements and return true if they are alike.org.eclipse.persistence.internal.sessions.ChangeRecordcompareForChange(java.lang.Object clone, java.lang.Object backup, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Build and return the change record that results from comparing the two direct collection attributes.booleancompareObjects(java.lang.Object object1, java.lang.Object object2, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Compare the attributes belonging to this mapping for the objects.voidconvertClassNamesToClasses(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.protected org.eclipse.persistence.internal.sessions.ChangeRecordconvertToChangeRecord(java.lang.Object cloneCollection, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)java.lang.ObjectcreateMapComponentFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord dbRow, ObjectBuildingQuery query, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isTargetProtected)INTERNAL Called when a DatabaseMapping is used to map the key in a collection.voidfixObjectReferences(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.java.lang.ClassgetAttributeElementClass()PUBLIC: Return the class each element in the object's collection should be converted to, before the collection is inserted into the object.org.eclipse.persistence.internal.queries.ContainerPolicygetContainerPolicy()INTERNAL: Return the mapping's containerPolicy.org.eclipse.persistence.internal.helper.DatabaseFieldgetField()INTERNAL: Return the field that holds the nested collection.java.lang.ClassgetFieldClassification(org.eclipse.persistence.internal.helper.DatabaseField fieldToClassify)INTERNAL: Return the classifiction for the field contained in the mapping.java.lang.ClassgetFieldElementClass()PUBLIC: Return the class each element in the database row's collection should be converted to, before the collection is inserted into the database.java.lang.StringgetFieldName()PUBLIC: Return the name of the field that holds the nested collection.java.lang.ObjectgetRealCollectionAttributeValueFromObject(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Convenience method.ConvertergetValueConverter()PUBLIC: Return the converter on the mapping.booleanhasValueConverter()PUBLIC: Indicates if there is a converter on the mapping.voidinitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Initialize the mapping.booleanisAbstractCompositeDirectCollectionMapping()INTERNAL:booleanisCollectionMapping()INTERNAL: Related mapping should implement this method to return true.voiditerate(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator)INTERNAL: Iterate on the appropriate attribute value.booleanmapKeyHasChanged(java.lang.Object element, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Return whether the element's user-defined Map key has changed since it was cloned from the original version.voidmergeChangesIntoObject(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.voidmergeIntoObject(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.voidsetAttributeElementClass(java.lang.Class attributeElementClass)PUBLIC: Set the class each element in the object's collection should be converted to, before the collection is inserted into the object.voidsetAttributeElementClassName(java.lang.String attributeElementClass)PUBLIC: Set the class each element in the object's collection should be converted to, before the collection is inserted into the object.voidsetContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)ADVANCED: Set the mapping's containerPolicy.voidsetField(org.eclipse.persistence.internal.helper.DatabaseField field)Set the field that holds the nested collection.voidsetFieldElementClass(java.lang.Class fieldElementClass)PUBLIC: Set the class each element in the database row's collection should be converted to, before the collection is inserted into the database.voidsetUsesSingleNode(boolean usesSingleNode)PUBLIC: Sets whether the mapping uses a single node.voidsetValueConverter(Converter valueConverter)PUBLIC: Set the converter on the mapping.voidsimpleAddToCollectionChangeRecord(java.lang.Object referenceKey, java.lang.Object changeSetToAdd, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)ADVANCED: This method is used to have an object add to a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.voidsimpleRemoveFromCollectionChangeRecord(java.lang.Object referenceKey, java.lang.Object changeSetToRemove, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)ADVANCED: This method is used to have an object removed from a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.voiduseCollectionClass(java.lang.Class concreteClass)PUBLIC: Configure the mapping to use an instance of the specified container class to hold the nested objects.voiduseCollectionClassName(java.lang.String concreteClassName)INTERNAL: Used to set the collection class by name.voiduseListClassName(java.lang.String concreteClassName)INTERNAL: Used to set the collection class by name.voiduseMapClass(java.lang.Class concreteClass, java.lang.String methodName)PUBLIC: Mapping does not support Map containers.voiduseMapClassName(java.lang.String concreteContainerClassName, java.lang.String methodName)PUBLIC: Configure the mapping to use an instance of the specified container class to hold the target objects.booleanusesSingleNode()PUBLIC: Checks whether the mapping uses a single node.java.lang.ObjectvalueFromRow(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: Build the nested collection from the database row.voidwriteFromObjectIntoRow(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType)INTERNAL: Get the attribute value from the object and store it in the appropriate field of the row.voidwriteFromObjectIntoRowForUpdate(WriteObjectQuery writeQuery, org.eclipse.persistence.internal.sessions.AbstractRecord row)INTERNAL: If any part of the nested collection has changed, the whole thing is written.voidwriteFromObjectIntoRowWithChangeRecord(org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType)INTERNAL: Get the appropriate attribute value from the object and put it in the appropriate field of the database row.voidwriteInsertFieldsIntoRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Write the fields needed for insert into the template with null values.-
Methods inherited from class org.eclipse.persistence.mappings.DatabaseMapping
addUnconvertedProperty, buildBackupCloneForPartObject, buildChangeRecord, buildCloneForPartObject, buildContainerClone, buildExpression, buildObjectJoinExpression, buildObjectJoinExpression, buildShallowOriginalFromRow, calculateDeferredChanges, cascadeDiscoverAndPersistUnregisteredNewObjects, cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired, clone, cloneFields, collectQueryParameters, convertConverterClassNamesToClasses, createCloneValueHolder, derivesId, earlyPreDelete, extractNestedExpressions, extractNestedNonAggregateExpressions, fixRealObjectReferences, getAttributeAccessor, getAttributeClassification, getAttributeName, getAttributeValueFromObject, getDerivedIdMapping, getDescriptor, getFields, getGetMethodName, getMapsIdValue, getObjectCorrespondingTo, getOrderByNormalizedExpressions, getProperties, getProperty, getRealAttributeValueFromAttribute, getRealAttributeValueFromObject, getReferenceDescriptor, getRelationshipPartner, getSelectFields, getSelectTables, getSetMethodName, getUnconvertedProperties, getValueFromRemoteValueHolder, getWeight, hasConstraintDependency, hasDependency, hasInverseConstraintDependency, hasMapsIdValue, hasNestedIdentityReference, hasRootExpressionThatShouldUseOuterJoin, hasUnconvertedProperties, instantiateAttribute, isAbstractColumnMapping, isAbstractCompositeCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isAggregateCollectionMapping, isAggregateMapping, isAggregateObjectMapping, isAttributeValueFromObjectInstantiated, isCacheable, isCandidateForPrivateOwnedRemoval, isCascadedLockingSupported, isChangeTrackingSupported, isCloningRequired, 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, isWriteOnly, isXMLMapping, iterateOnRealAttributeValue, load, loadAll, performDataModificationEvent, postCalculateChanges, postCalculateChangesOnDeleted, postDelete, postInitialize, postInitializeSourceAndTargetExpressions, postInsert, postUpdate, preDelete, preInitialize, preInsert, prepareCascadeLockingPolicy, preUpdate, readFromResultSetIntoObject, readFromRowIntoObject, readOnly, readWrite, recordPrivateOwnedRemovals, rehashFieldDependancies, remoteInitialization, remotelyInitialized, replaceValueHoldersIn, setAttributeAccessor, setAttributeName, setAttributeValueInObject, setChangeListener, setDerivedIdMapping, setDerivesId, setDescriptor, setFields, setGetMethodName, setIsCacheable, setIsInAndOutSopObject, setIsInSopObject, setIsJPAId, setIsLazy, setIsMapKeyMapping, setIsOptional, setIsOutSopObject, setIsPrimaryKeyMapping, setIsReadOnly, setMapsIdValue, setProperties, setProperty, setRealAttributeValueInObject, setSetMethodName, setWeight, toString, updateChangeRecord, updateCollectionChangeRecord, validateAfterInitialization, validateBeforeInitialization, valueFromObject, valueFromResultSet, valueFromRow, verifyDelete, writeFromAttributeIntoRow, writeFromObjectIntoRowForShallowInsert, writeFromObjectIntoRowForShallowInsertWithChangeRecord, writeFromObjectIntoRowForUpdateAfterShallowInsert, writeFromObjectIntoRowForUpdateBeforeShallowDelete, writeFromObjectIntoRowForWhereClause, writeUpdateFieldsIntoRow
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.persistence.mappings.structures.ArrayCollectionMapping
getAttributeName, setRealAttributeValueInObject
-
-
-
-
Field Detail
-
field
protected org.eclipse.persistence.internal.helper.DatabaseField field
This is the field holding the nested collection.
-
elementDataTypeName
protected java.lang.String elementDataTypeName
This is the "data type" associated with each element in the nested collection. Depending on the data store, this could be optional.
-
valueConverter
protected Converter valueConverter
Allows user defined conversion between the object value and the database value.
-
-
Method Detail
-
getValueConverter
public Converter getValueConverter()
PUBLIC: Return the converter on the mapping. A converter can be used to convert between the direct collection's object value and database value.
-
hasValueConverter
public boolean hasValueConverter()
PUBLIC: Indicates if there is a converter on the mapping.
-
setValueConverter
public void setValueConverter(Converter valueConverter)
PUBLIC: Set the converter on the mapping. A converter can be used to convert between the direct collection's object value and database value.
-
buildAddedElementFromChangeSet
public java.lang.Object buildAddedElementFromChangeSet(java.lang.Object changeSet, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)INTERNAL: Build and return a new element based on the change set.- Specified by:
buildAddedElementFromChangeSetin interfaceArrayCollectionMapping
-
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. For these mappings, this is the same as building the first clone.- Specified by:
buildBackupClonein classDatabaseMapping
-
buildChangeSet
public java.lang.Object buildChangeSet(java.lang.Object element, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Build and return a change set for the specified element. Direct collections simply store the element itself, since it is immutable.- Specified by:
buildChangeSetin interfaceArrayCollectionMapping
-
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:
buildClonein classDatabaseMapping
-
buildCloneFromRow
public void buildCloneFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, 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: 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:
buildCloneFromRowin classDatabaseMapping
-
buildClonePart
protected java.lang.Object buildClonePart(java.lang.Object attributeValue, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession)Build and return a clone of the specified attribute value.
-
buildCopy
public void buildCopy(java.lang.Object copy, java.lang.Object original, CopyGroup group)INTERNAL: Copy of the attribute of the object. This is NOT used for unit of work but for templatizing an object.- Overrides:
buildCopyin classDatabaseMapping
-
buildElementFromChangeSet
protected java.lang.Object buildElementFromChangeSet(java.lang.Object changeSet, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)Build and return a new element based on the change set. Direct collections simply store the element itself, since it is immutable.
-
buildElementFromElement
public java.lang.Object buildElementFromElement(java.lang.Object object, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)INTERNAL: Build and return a new element based on the specified element. Direct collections simply return the element itself, since it is immutable.- Specified by:
buildElementFromElementin interfaceArrayCollectionMapping
-
buildRemovedElementFromChangeSet
public java.lang.Object buildRemovedElementFromChangeSet(java.lang.Object changeSet, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)INTERNAL: Build and return a new element based on the change set.- Specified by:
buildRemovedElementFromChangeSetin interfaceArrayCollectionMapping
-
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:
cascadePerformRemoveIfRequiredin 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:
cascadeRegisterNewIfRequiredin classDatabaseMapping
-
collectFields
protected java.util.Vector collectFields()
Return the fields handled by the mapping.- Overrides:
collectFieldsin classDatabaseMapping
-
compareElements
public boolean compareElements(java.lang.Object element1, java.lang.Object element2, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Compare the non-null elements. Return true if they are alike. Use #equals() to determine if two elements are the same.- Specified by:
compareElementsin interfaceArrayCollectionMapping
-
compareElementsForChange
public boolean compareElementsForChange(java.lang.Object element1, java.lang.Object element2, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Compare the non-null elements and return true if they are alike.- Specified by:
compareElementsForChangein interfaceArrayCollectionMapping
-
convertToChangeRecord
protected org.eclipse.persistence.internal.sessions.ChangeRecord convertToChangeRecord(java.lang.Object cloneCollection, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
-
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:
fixObjectReferencesin classDatabaseMapping
-
getAttributeElementClass
public java.lang.Class getAttributeElementClass()
PUBLIC: Return the class each element in the object's collection should be converted to, before the collection is inserted into the object. This is optional - if left null, the elements will be added to the object's collection unconverted.
-
getContainerPolicy
public org.eclipse.persistence.internal.queries.ContainerPolicy getContainerPolicy()
INTERNAL: Return the mapping's containerPolicy.- Specified by:
getContainerPolicyin interfaceContainerMapping- Overrides:
getContainerPolicyin classDatabaseMapping
-
getField
public org.eclipse.persistence.internal.helper.DatabaseField getField()
INTERNAL: Return the field that holds the nested collection.- Overrides:
getFieldin classDatabaseMapping
-
isAbstractCompositeDirectCollectionMapping
public boolean isAbstractCompositeDirectCollectionMapping()
INTERNAL:- Overrides:
isAbstractCompositeDirectCollectionMappingin classDatabaseMapping
-
getFieldElementClass
public java.lang.Class getFieldElementClass()
PUBLIC: Return the class each element in the database row's collection should be converted to, before the collection is inserted into the database. This is optional - if left null, the elements will be added to the database row's collection unconverted.
-
getFieldName
public java.lang.String getFieldName()
PUBLIC: Return the name of the field that holds the nested collection.
-
getRealCollectionAttributeValueFromObject
public java.lang.Object getRealCollectionAttributeValueFromObject(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorExceptionINTERNAL: Convenience method. Return the value of an attribute, unwrapping value holders if necessary. If the value is null, build a new container.- Specified by:
getRealCollectionAttributeValueFromObjectin interfaceArrayCollectionMapping- Overrides:
getRealCollectionAttributeValueFromObjectin classDatabaseMapping- Throws:
DescriptorException
-
initialize
public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorExceptionINTERNAL: Initialize the mapping.- Overrides:
initializein classDatabaseMapping- Throws:
DescriptorException
-
iterate
public void iterate(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator)
INTERNAL: Iterate on the appropriate attribute value.- Specified by:
iteratein classDatabaseMapping
-
mapKeyHasChanged
public boolean mapKeyHasChanged(java.lang.Object element, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Return whether the element's user-defined Map key has changed since it was cloned from the original version. Direct elements are not allowed to have keys.- Specified by:
mapKeyHasChangedin interfaceArrayCollectionMapping
-
setAttributeElementClass
public void setAttributeElementClass(java.lang.Class attributeElementClass)
PUBLIC: Set the class each element in the object's collection should be converted to, before the collection is inserted into the object. This is optional - if left null, the elements will be added to the object's collection unconverted.
-
setAttributeElementClassName
public void setAttributeElementClassName(java.lang.String attributeElementClass)
PUBLIC: Set the class each element in the object's collection should be converted to, before the collection is inserted into the object. This is optional - if left null, the elements will be added to the object's collection unconverted.
-
setContainerPolicy
public void setContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
ADVANCED: Set the mapping's containerPolicy.- Specified by:
setContainerPolicyin interfaceContainerMapping
-
setField
public void setField(org.eclipse.persistence.internal.helper.DatabaseField field)
Set the field that holds the nested collection.
-
setFieldElementClass
public void setFieldElementClass(java.lang.Class fieldElementClass)
PUBLIC: Set the class each element in the database row's collection should be converted to, before the collection is inserted into the database. This is optional - if left null, the elements will be added to the database row's collection unconverted.
-
useCollectionClass
public void useCollectionClass(java.lang.Class concreteClass)
PUBLIC: Configure the mapping to use an instance of the specified container class to hold the nested objects.jdk1.2.x: The container class must implement (directly or indirectly) the Collection interface.
jdk1.1.x: The container class must be a subclass of Vector.
- Specified by:
useCollectionClassin interfaceContainerMapping
-
useCollectionClassName
public void useCollectionClassName(java.lang.String concreteClassName)
INTERNAL: Used to set the collection class by name. This is required when building from metadata to allow the correct class loader to be used.- Specified by:
useCollectionClassNamein interfaceContainerMapping
-
useListClassName
public void useListClassName(java.lang.String concreteClassName)
INTERNAL: Used to set the collection class by name. This is required when building from metadata to allow the correct class loader to be used.- Specified by:
useListClassNamein interfaceContainerMapping
-
useMapClass
public void useMapClass(java.lang.Class concreteClass, java.lang.String methodName)PUBLIC: Mapping does not support Map containers. It supports only Collection containers.- Specified by:
useMapClassin interfaceContainerMapping
-
useMapClassName
public void useMapClassName(java.lang.String concreteContainerClassName, java.lang.String methodName)Description copied from interface:ContainerMappingPUBLIC: Configure the mapping to use an instance of the specified container class to hold the target objects. The key used to index a value in theMapis the value returned by a call to the specified zero-argument method. The method must be implemented by the class (or a superclass) of any value to be inserted into theMap.The container class must implement (directly or indirectly) the
java.util.Mapinterface.To facilitate resolving the method, the mapping's referenceClass must set before calling this method.
- Specified by:
useMapClassNamein interfaceContainerMapping
-
setUsesSingleNode
public void setUsesSingleNode(boolean usesSingleNode)
PUBLIC: Sets whether the mapping uses a single node.- Parameters:
usesSingleNode- true if the items in the collection are in a single node or false if each of the items in the collection is in its own node
-
usesSingleNode
public boolean usesSingleNode()
PUBLIC: Checks whether the mapping uses a single node.- Returns:
- True if the items in the collection are in a single node or false if each of the items in the collection is in its own node.
-
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 DatabaseExceptionINTERNAL: Build the nested collection from the database row.- Overrides:
valueFromRowin 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)INTERNAL: Get the attribute value from the object and store it in the appropriate field of the row.- Overrides:
writeFromObjectIntoRowin classDatabaseMapping
-
writeFromObjectIntoRowForUpdate
public void writeFromObjectIntoRowForUpdate(WriteObjectQuery writeQuery, org.eclipse.persistence.internal.sessions.AbstractRecord row) throws DescriptorException
INTERNAL: If any part of the nested collection has changed, the whole thing is written.- Overrides:
writeFromObjectIntoRowForUpdatein classDatabaseMapping- Throws:
DescriptorException
-
writeFromObjectIntoRowWithChangeRecord
public void writeFromObjectIntoRowWithChangeRecord(org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType)INTERNAL: Get the appropriate attribute value from the object and put it in the appropriate field of the database row. Loop through the reference objects and extract the primary keys and put them in the vector of "nested" rows.- Overrides:
writeFromObjectIntoRowWithChangeRecordin classDatabaseMapping
-
writeInsertFieldsIntoRow
public void writeInsertFieldsIntoRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Write the fields needed for insert into the template with null values.- Overrides:
writeInsertFieldsIntoRowin classDatabaseMapping
-
getFieldClassification
public java.lang.Class getFieldClassification(org.eclipse.persistence.internal.helper.DatabaseField fieldToClassify)
INTERNAL: Return the classifiction for the field contained in the mapping. This is used to convert the row value to a consistent java value. By default this is unknown.- Overrides:
getFieldClassificationin classDatabaseMapping
-
isCollectionMapping
public boolean isCollectionMapping()
Description copied from class:DatabaseMappingINTERNAL: Related mapping should implement this method to return true.- Overrides:
isCollectionMappingin classDatabaseMapping
-
convertClassNamesToClasses
public void convertClassNamesToClasses(java.lang.ClassLoader classLoader)
Description copied from class:DatabaseMappingINTERNAL: Convert all the class-name-based settings in this mapping to actual class-based settings This method is implemented by subclasses as necessary.- Overrides:
convertClassNamesToClassesin 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: Build and return the change record that results from comparing the two direct collection attributes.- Specified by:
compareForChangein classDatabaseMapping- Returns:
- prototype.changeset.ChangeRecord
-
compareObjects
public boolean compareObjects(java.lang.Object object1, java.lang.Object object2, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Compare the attributes belonging to this mapping for the objects.- Specified by:
compareObjectsin 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:
mergeChangesIntoObjectin 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. Simply replace the entire target collection.- Specified by:
mergeIntoObjectin classDatabaseMapping
-
simpleAddToCollectionChangeRecord
public void simpleAddToCollectionChangeRecord(java.lang.Object referenceKey, java.lang.Object changeSetToAdd, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)ADVANCED: This method is used to have an object add to a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.- Overrides:
simpleAddToCollectionChangeRecordin classDatabaseMapping
-
simpleRemoveFromCollectionChangeRecord
public void simpleRemoveFromCollectionChangeRecord(java.lang.Object referenceKey, java.lang.Object changeSetToRemove, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)ADVANCED: This method is used to have an object removed from a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.- Overrides:
simpleRemoveFromCollectionChangeRecordin classDatabaseMapping
-
createMapComponentFromRow
public java.lang.Object createMapComponentFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord dbRow, ObjectBuildingQuery query, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isTargetProtected)INTERNAL Called when a DatabaseMapping is used to map the key in a collection. Returns the key.
-
-