Class ListContainerPolicy
- java.lang.Object
-
- org.eclipse.persistence.internal.queries.ContainerPolicy
-
- org.eclipse.persistence.internal.queries.InterfaceContainerPolicy
-
- org.eclipse.persistence.internal.queries.CollectionContainerPolicy
-
- org.eclipse.persistence.internal.queries.ListContainerPolicy
-
- All Implemented Interfaces:
Serializable
,Cloneable
,CoreContainerPolicy<AbstractSession>
- Direct Known Subclasses:
ArrayListContainerPolicy
,IndirectListContainerPolicy
,OrderedListContainerPolicy
,VectorContainerPolicy
public class ListContainerPolicy extends CollectionContainerPolicy
Purpose: A ListContainerPolicy is ContainerPolicy whose container class implements the List interface. This signifies that the collection has order
Responsibilities: Provide the functionality to operate on an instance of a List.
- See Also:
ContainerPolicy
,CollectionContainerPolicy
, Serialized Form
-
-
Field Summary
-
Fields inherited from class org.eclipse.persistence.internal.queries.InterfaceContainerPolicy
cloneMethod, containerClass, containerClassName
-
Fields inherited from class org.eclipse.persistence.internal.queries.ContainerPolicy
constructor, defaultContainerClass, elementDescriptor
-
-
Constructor Summary
Constructors Constructor Description ListContainerPolicy()
INTERNAL: Construct a new policy.ListContainerPolicy(Class containerClass)
INTERNAL: Construct a new policy for the specified class.ListContainerPolicy(String containerClassName)
INTERNAL: Construct a new policy for the specified class name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
get(int index, Object container, AbstractSession session)
INTERNAL: Returns the element at the specified position in this list.boolean
hasOrder()
INTERNAL: Returns true if the collection has orderint
indexOf(Object element, Object container, AbstractSession session)
INTERNAL: Returns the index in this list of the first occurrence of the specified element, or -1 if this list does not contain this element The session may be required to unwrap for the wrapper policy.boolean
isListPolicy()
boolean
isValidContainer(Object container)
INTERNAL: Validate the container type.void
recordAddToCollectionInChangeRecord(ObjectChangeSet changeSetToAdd, CollectionChangeRecord collectionChangeRecord)
This method is used to bridge the behavior between Attribute Change Tracking and deferred change tracking with respect to adding the same instance multiple times.void
recordRemoveFromCollectionInChangeRecord(ObjectChangeSet changeSetToRemove, CollectionChangeRecord collectionChangeRecord)
This method is used to bridge the behavior between Attribute Change Tracking and deferred change tracking with respect to adding the same instance multiple times.void
updateChangeRecordForSelfMerge(ChangeRecord changeRecord, Object source, Object target, ForeignReferenceMapping mapping, UnitOfWorkChangeSet parentUOWChangeSet, UnitOfWorkImpl unitOfWork)
INTERNAL: Update a ChangeRecord to replace the ChangeSet for the old entity with the changeSet for the new Entity.Object
valueFromPKList(Object[] pks, AbstractRecord foreignKeys, ForeignReferenceMapping mapping, AbstractSession session)
INTERNAL: This method is used to load a relationship from a list of PKs.-
Methods inherited from class org.eclipse.persistence.internal.queries.CollectionContainerPolicy
addInto, buildContainerFromVector, clear, cloneFor, contains, getInterfaceType, isCollectionPolicy, iteratorFor, removeFrom, sizeFor
-
Methods inherited from class org.eclipse.persistence.internal.queries.InterfaceContainerPolicy
convertClassNamesToClasses, createChangeEvent, createQueryKeyForMapKey, equals, getCloneMethod, getCloneMethod, getContainerClass, getContainerClassName, getDirectKeyField, hashCode, hasNext, invokeCloneMethodOn, isMapKeyAttribute, isValidContainerType, next, setCloneMethod, setContainerClass, setContainerClassName, toStringInfo
-
Methods inherited from class org.eclipse.persistence.internal.queries.ContainerPolicy
addAdditionalFieldsToQuery, addAll, addAll, addFieldsForMapKey, addInto, addInto, addInto, addNestedJoinsQueriesForMapKey, addNextValueFromIteratorInto, buildChangeSetForNewObjectInCollection, buildCloneForKey, buildCollectionEntry, buildDefaultPolicy, buildKey, buildKeyFromJoinedRow, buildPolicyFor, buildPolicyFor, buildReferencesPKList, buildSelectionQueryForDirectCollectionMapping, cascadeDiscoverAndPersistUnregisteredNewObjects, cascadePerformRemoveIfRequired, cascadeRegisterNewIfRequired, clone, clone, collectObjectForNewCollection, compareCollectionsForChange, compareKeys, concatenateContainers, containerInstance, containerInstance, contains, copyMapDataToRow, createChangeSetForKeys, createWrappedObjectFromExistingWrappedObject, deleteWrappedObject, execute, getAdditionalFieldsForJoin, getAdditionalTablesForJoinQuery, getChangeValuesFrom, getCloneDataFromChangeSet, getConstructor, getDefaultContainerClass, getDescriptorForMapKey, getElementDescriptor, getIdentityFieldsForMapKey, getKeyMappingDataForWriteQuery, getKeySelectionCriteria, getKeyType, hasElementDescriptor, initialize, initializeConstructor, isCursoredStreamPolicy, isCursorPolicy, isDirectMapPolicy, isEmpty, isMapKeyObject, isMappedKeyMapPolicy, isMapPolicy, isOrderedListPolicy, isScrollableCursorPolicy, iterateOnMapKey, keyFrom, keyFromEntry, keyFromIterator, mergeCascadeParts, mergeChanges, mergeChanges, next, nextEntry, nextEntry, overridesRead, postCalculateChanges, postCalculateChanges, postInitialize, prepare, prepareForExecution, processAdditionalWritableMapKeyFields, propagatesEventsToCollection, propogatePostDelete, propogatePostInsert, propogatePostUpdate, propogatePreDelete, propogatePreInsert, propogatePreUpdate, recordPrivateOwnedRemovals, recordUpdateToCollectionInChangeRecord, remoteExecute, removeFrom, removeFrom, requiresDataModificationEvents, setConstructor, setDefaultContainerClass, setElementDescriptor, setKeyName, setKeyName, shouldAddAll, shouldIncludeKeyInDeleteEvent, shouldUpdateForeignKeysPostInsert, toString, unwrapElement, unwrapIteratorResult, updateJoinedMappingIndexesForMapKey, vectorFor
-
-
-
-
Constructor Detail
-
ListContainerPolicy
public ListContainerPolicy()
INTERNAL: Construct a new policy.
-
ListContainerPolicy
public ListContainerPolicy(Class containerClass)
INTERNAL: Construct a new policy for the specified class.
-
ListContainerPolicy
public ListContainerPolicy(String containerClassName)
INTERNAL: Construct a new policy for the specified class name.
-
-
Method Detail
-
get
public Object get(int index, Object container, AbstractSession session)
INTERNAL: Returns the element at the specified position in this list. The session may be required to unwrap for the wrapper policy.
-
isValidContainer
public boolean isValidContainer(Object container)
INTERNAL: Validate the container type.- Overrides:
isValidContainer
in classCollectionContainerPolicy
- See Also:
CollectionContainerPolicy.isValidContainer(Object)
,MapContainerPolicy.isValidContainer(Object)
-
hasOrder
public boolean hasOrder()
INTERNAL: Returns true if the collection has order- Overrides:
hasOrder
in classCollectionContainerPolicy
- See Also:
ContainerPolicy.iteratorFor(java.lang.Object)
-
isListPolicy
public boolean isListPolicy()
- Specified by:
isListPolicy
in interfaceCoreContainerPolicy<AbstractSession>
- Overrides:
isListPolicy
in classContainerPolicy
-
indexOf
public int indexOf(Object element, Object container, AbstractSession session)
INTERNAL: Returns the index in this list of the first occurrence of the specified element, or -1 if this list does not contain this element The session may be required to unwrap for the wrapper policy.
-
recordAddToCollectionInChangeRecord
public void recordAddToCollectionInChangeRecord(ObjectChangeSet changeSetToAdd, CollectionChangeRecord collectionChangeRecord)
This method is used to bridge the behavior between Attribute Change Tracking and deferred change tracking with respect to adding the same instance multiple times. Each ContainerPolicy type will implement specific behavior for the collection type it is wrapping. These methods are only valid for collections containing object references- Overrides:
recordAddToCollectionInChangeRecord
in classContainerPolicy
-
recordRemoveFromCollectionInChangeRecord
public void recordRemoveFromCollectionInChangeRecord(ObjectChangeSet changeSetToRemove, CollectionChangeRecord collectionChangeRecord)
This method is used to bridge the behavior between Attribute Change Tracking and deferred change tracking with respect to adding the same instance multiple times. Each ContainerPolicy type will implement specific behavior for the collection type it is wrapping. These methods are only valid for collections containing object references- Overrides:
recordRemoveFromCollectionInChangeRecord
in classContainerPolicy
-
updateChangeRecordForSelfMerge
public void updateChangeRecordForSelfMerge(ChangeRecord changeRecord, Object source, Object target, ForeignReferenceMapping mapping, UnitOfWorkChangeSet parentUOWChangeSet, UnitOfWorkImpl unitOfWork)
INTERNAL: Update a ChangeRecord to replace the ChangeSet for the old entity with the changeSet for the new Entity. This is used when an Entity is merged into itself and the Entity reference new or detached entities.- Overrides:
updateChangeRecordForSelfMerge
in classContainerPolicy
-
valueFromPKList
public Object valueFromPKList(Object[] pks, AbstractRecord foreignKeys, ForeignReferenceMapping mapping, AbstractSession session)
INTERNAL: This method is used to load a relationship from a list of PKs. This list may be available if the relationship has been cached.- Overrides:
valueFromPKList
in classContainerPolicy
-
-