public class MapContainerPolicy extends InterfaceContainerPolicy
Purpose: A MapContainerPolicy is ContainerPolicy whose container class implements the Map interface.
Responsibilities: Provide the functionality to operate on an instance of a Map.
ContainerPolicy
,
CollectionContainerPolicy
,
Serialized FormModifier and Type | Class and Description |
---|---|
static class |
MapContainerPolicy.MapContainerPolicyIterator
INTERNAL:
This inner class is used to iterate through the Map.Entry s of a Map.
|
Constructor and Description |
---|
MapContainerPolicy()
INTERNAL:
Construct a new policy.
|
MapContainerPolicy(java.lang.Class containerClass)
INTERNAL:
Construct a new policy for the specified class.
|
MapContainerPolicy(java.lang.String containerClassName)
INTERNAL:
Construct a new policy for the specified class name.
|
Modifier and Type | Method and Description |
---|---|
boolean |
addInto(java.lang.Object element,
java.lang.Object container,
AbstractSession session)
INTERNAL:
Add element to container.
|
boolean |
addInto(java.lang.Object key,
java.lang.Object element,
java.lang.Object container,
AbstractSession session)
INTERNAL:
Add element into container which implements the Map interface.
|
void |
addNextValueFromIteratorInto(java.lang.Object valuesIterator,
java.lang.Object parent,
CacheKey parentCacheKey,
java.lang.Object toCollection,
CollectionMapping mapping,
java.lang.Integer refreshCascade,
AbstractSession cloningSession,
boolean isExisting,
boolean isFromSharedCache)
INTERNAL:
This method is used to add the next value from an iterator built using ContainerPolicy's iteratorFor() method
into the toCollection.
|
void |
buildChangeSetForNewObjectInCollection(java.lang.Object object,
ClassDescriptor referenceDescriptor,
UnitOfWorkChangeSet uowChangeSet,
AbstractSession session)
INTERNAL:
Ensure the new key is set for the change set for a new map object
|
java.lang.Object |
buildCollectionEntry(java.lang.Object objectAdded,
ObjectChangeSet changeSet)
INTERNAL:
Return an object representing an entry in the collection represented by this container policy
This method will returns an Association containing the key and the value for a Map
|
java.lang.Object[] |
buildReferencesPKList(java.lang.Object container,
AbstractSession session)
INTERNAL:
This method will access the target relationship and create a list of information to rebuild the collection.
|
void |
clear(java.lang.Object container)
INTERNAL:
Remove all the elements from container.
|
java.lang.Object |
cloneFor(java.lang.Object container)
INTERNAL:
Return a clone of the specified container.
|
boolean |
compareKeys(java.lang.Object sourceValue,
AbstractSession session)
INTERNAL:
Return true if keys are the same in the source as the backup.
|
java.lang.Object |
concatenateContainers(java.lang.Object firstContainer,
java.lang.Object secondContainer,
AbstractSession session)
INTERNAL:
Build a new container, add the contents of each of the specified containers
to it, and return it.
|
void |
convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL:
Convert all the class-name-based settings in this ContainerPolicy to
actual class-based settings.
|
CollectionChangeEvent |
createChangeEvent(java.lang.Object collectionOwner,
java.lang.String propertyName,
java.lang.Object collectionChanged,
java.lang.Object elementChanged,
int changeType,
java.lang.Integer index,
boolean isChangeApplied)
INTERNAL:
Creates a CollectionChangeEvent for the container
|
QueryKey |
createQueryKeyForMapKey()
INTERNAL:
Create a query key that links to the map key.
|
java.lang.Object |
createWrappedObjectFromExistingWrappedObject(java.lang.Object wrappedObject,
java.lang.Object parent,
ClassDescriptor referenceDescriptor,
MergeManager mergeManager,
AbstractSession targetSession)
INTERNAL:
This method will actually potentially wrap an object in two ways.
|
DatabaseField |
getDirectKeyField(CollectionMapping baseMapping)
INTERNAL:
Return the DatabaseField that represents the key in a DirectMapMapping.
|
java.lang.Class |
getElementClass()
INTERNAL:
Returns the element class which defines the map key.
|
java.lang.String |
getElementClassName()
INTERNAL:
Returns the element class name which defines the map key.
|
java.lang.Class |
getInterfaceType()
INTERNAL:
|
java.lang.String |
getKeyName()
INTERNAL:
Returns the key name which will return the value of the key to be used
in the container.
|
java.lang.Object |
getKeyType()
INTERNAL:
Return the type of the map key, this will be overridden by container policies that allow maps.
|
boolean |
hasNext(java.lang.Object iterator)
INTERNAL:
Return whether the iterator has more objects.
|
boolean |
isMapKeyAttribute()
INTERNAL:
Return whether a map key this container policy represents is an attribute.
|
boolean |
isMapPolicy()
INTERNAL
Yes this is a MapPolicy
|
boolean |
isValidContainer(java.lang.Object container)
INTERNAL:
Validate the container type.
|
java.lang.Object |
iteratorFor(java.lang.Object container)
INTERNAL:
Return an Iterator for the given container.
|
java.lang.Object |
keyFrom(java.lang.Object element,
AbstractSession session)
INTERNAL:
Return the key for the specified element.
|
java.lang.Object |
keyFromEntry(java.lang.Object entry)
Get the key from the passed in Map.Entry.
|
java.lang.Object |
keyFromIterator(java.lang.Object iterator) |
java.lang.Object |
nextEntry(java.lang.Object iterator)
INTERNAL:
Return the next object on the queue.
|
java.lang.Object |
nextEntry(java.lang.Object iterator,
AbstractSession session)
INTERNAL:
Return the next object on the queue.
|
void |
prepare(DatabaseQuery query,
AbstractSession session)
Prepare and validate.
|
void |
recordUpdateToCollectionInChangeRecord(CollectionChangeEvent event,
ObjectChangeSet changeSet,
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.
|
boolean |
removeFrom(java.lang.Object key,
java.lang.Object element,
java.lang.Object container,
AbstractSession session)
INTERNAL:
Remove element from container which implements the Map interface.
|
void |
setElementClass(java.lang.Class elementClass)
INTERNAL:
Sets the element class which defines the method.
|
void |
setKeyMethod(java.lang.String keyMethodName,
java.lang.Class elementClass)
INTERNAL:
Sets the Method to be used to generate the key in a Map type container class.
|
void |
setKeyMethod(java.lang.String keyMethodName,
java.lang.String elementClassName)
INTERNAL:
Sets the Method to be used to generate the key in a Map type container class.
|
void |
setKeyMethodName(java.lang.String keyMethodName)
INTERNAL:
Sets the Method to be used to generate the key in a Map type container class.
|
void |
setKeyName(java.lang.String keyName)
INTERNAL:
Sets the key name to be used to generate the key in a Map type container
class.
|
void |
setKeyName(java.lang.String keyName,
java.lang.Class elementClass)
INTERNAL:
Sets the key name to be used to generate the key in a Map type container
class.
|
void |
setKeyName(java.lang.String keyName,
java.lang.String elementClassName)
INTERNAL:
Sets the key name to be used to generate the key in a Map type container
class.
|
int |
sizeFor(java.lang.Object container)
INTERNAL:
Return the size of container.
|
java.lang.Object |
unwrapElement(java.lang.Object object)
INTERNAL:
MapContainerPolicy's iterator iterates on the Entries of a Map.
|
java.lang.Object |
unwrapIteratorResult(java.lang.Object object)
INTERNAL:
MapContainerPolicy's iterator iterates on the Entries of a Map.
|
java.lang.Object |
unwrapKey(java.lang.Object key,
AbstractSession session)
INTERNAL:
Allow the key to be unwrapped.
|
java.lang.Object |
valueFromPKList(java.lang.Object[] pks,
AbstractRecord foreignKeys,
ForeignReferenceMapping mapping,
AbstractSession session)
INTERNAL:
This method is used to load a relationship from a list of PKs.
|
buildContainerFromVector, equals, getCloneMethod, getContainerClass, getContainerClassName, isValidContainerType, setCloneMethod, setContainerClass, setContainerClassName
addAdditionalFieldsToQuery, addAll, addAll, addFieldsForMapKey, addInto, addInto, addNestedJoinsQueriesForMapKey, buildCloneForKey, buildDefaultPolicy, buildKey, buildKeyFromJoinedRow, buildPolicyFor, buildPolicyFor, buildSelectionQueryForDirectCollectionMapping, cascadeDiscoverAndPersistUnregisteredNewObjects, cascadePerformRemoveIfRequired, cascadeRegisterNewIfRequired, clone, clone, compareCollectionsForChange, containerInstance, containerInstance, contains, copyMapDataToRow, deleteWrappedObject, execute, getAdditionalFieldsForJoin, getAdditionalTablesForJoinQuery, getChangeValuesFrom, getCloneDataFromChangeSet, getDefaultContainerClass, getDescriptorForMapKey, getElementDescriptor, getIdentityFieldsForMapKey, getKeyMappingDataForWriteQuery, getKeySelectionCriteria, hasElementDescriptor, hasOrder, initialize, initializeConstructor, isCollectionPolicy, isCursoredStreamPolicy, isCursorPolicy, isDirectMapPolicy, isEmpty, isListPolicy, isMapKeyObject, isMappedKeyMapPolicy, isOrderedListPolicy, isScrollableCursorPolicy, iterateOnMapKey, mergeCascadeParts, mergeChanges, next, overridesRead, postCalculateChanges, postCalculateChanges, postInitialize, prepareForExecution, processAdditionalWritableMapKeyFields, propagatesEventsToCollection, propogatePostDelete, propogatePostInsert, propogatePostUpdate, propogatePreDelete, propogatePreInsert, propogatePreUpdate, recordAddToCollectionInChangeRecord, recordPrivateOwnedRemovals, recordRemoveFromCollectionInChangeRecord, remoteExecute, removeFrom, requiresDataModificationEvents, setDefaultContainerClass, setElementDescriptor, shouldAddAll, shouldIncludeKeyInDeleteEvent, shouldUpdateForeignKeysPostInsert, toString, updateChangeRecordForSelfMerge, updateJoinedMappingIndexesForMapKey, vectorFor
public MapContainerPolicy()
public MapContainerPolicy(java.lang.Class containerClass)
public MapContainerPolicy(java.lang.String containerClassName)
public void prepare(DatabaseQuery query, AbstractSession session) throws QueryException
prepare
in class ContainerPolicy
QueryException
public boolean addInto(java.lang.Object element, java.lang.Object container, AbstractSession session)
addInto
in interface CoreContainerPolicy<AbstractSession>
addInto
in class ContainerPolicy
public boolean addInto(java.lang.Object key, java.lang.Object element, java.lang.Object container, AbstractSession session)
addInto
in interface CoreContainerPolicy<AbstractSession>
addInto
in class ContainerPolicy
public void addNextValueFromIteratorInto(java.lang.Object valuesIterator, java.lang.Object parent, CacheKey parentCacheKey, java.lang.Object toCollection, CollectionMapping mapping, java.lang.Integer refreshCascade, AbstractSession cloningSession, boolean isExisting, boolean isFromSharedCache)
addNextValueFromIteratorInto
in class ContainerPolicy
MappedKeyMapContainerPolicy
public java.lang.Object buildCollectionEntry(java.lang.Object objectAdded, ObjectChangeSet changeSet)
buildCollectionEntry
in class ContainerPolicy
MappedKeyMapContainerPolicy
public java.lang.Object[] buildReferencesPKList(java.lang.Object container, AbstractSession session)
buildReferencesPKList
in class ContainerPolicy
ObjectReferenceMapping.buildReferencesPKList
,
ContainerPolicy.buildReferencesPKList
public void buildChangeSetForNewObjectInCollection(java.lang.Object object, ClassDescriptor referenceDescriptor, UnitOfWorkChangeSet uowChangeSet, AbstractSession session)
buildChangeSetForNewObjectInCollection
in class ContainerPolicy
public void clear(java.lang.Object container)
clear
in interface CoreContainerPolicy<AbstractSession>
clear
in class ContainerPolicy
public java.lang.Object cloneFor(java.lang.Object container)
cloneFor
in class InterfaceContainerPolicy
public boolean compareKeys(java.lang.Object sourceValue, AbstractSession session)
compareKeys
in class ContainerPolicy
public java.lang.Object concatenateContainers(java.lang.Object firstContainer, java.lang.Object secondContainer, AbstractSession session)
concatenateContainers
in class ContainerPolicy
public void convertClassNamesToClasses(java.lang.ClassLoader classLoader)
convertClassNamesToClasses
in class InterfaceContainerPolicy
classLoader
- public CollectionChangeEvent createChangeEvent(java.lang.Object collectionOwner, java.lang.String propertyName, java.lang.Object collectionChanged, java.lang.Object elementChanged, int changeType, java.lang.Integer index, boolean isChangeApplied)
createChangeEvent
in class InterfaceContainerPolicy
public QueryKey createQueryKeyForMapKey()
createQueryKeyForMapKey
in class InterfaceContainerPolicy
public java.lang.Object createWrappedObjectFromExistingWrappedObject(java.lang.Object wrappedObject, java.lang.Object parent, ClassDescriptor referenceDescriptor, MergeManager mergeManager, AbstractSession targetSession)
createWrappedObjectFromExistingWrappedObject
in class ContainerPolicy
parent
- if this is an aggregate, the owner of the aggregateMappedKeyMapContainerPolicy
public DatabaseField getDirectKeyField(CollectionMapping baseMapping)
getDirectKeyField
in class InterfaceContainerPolicy
public java.lang.Class getElementClass()
public java.lang.String getElementClassName()
public java.lang.Class getInterfaceType()
getInterfaceType
in class InterfaceContainerPolicy
public java.lang.String getKeyName()
public java.lang.Object getKeyType()
getKeyType
in class ContainerPolicy
public boolean isMapPolicy()
isMapPolicy
in class ContainerPolicy
public boolean isMapKeyAttribute()
isMapKeyAttribute
in class InterfaceContainerPolicy
public boolean hasNext(java.lang.Object iterator)
hasNext
in interface CoreContainerPolicy<AbstractSession>
hasNext
in class InterfaceContainerPolicy
ContainerPolicy.iteratorFor(java.lang.Object)
public java.lang.Object iteratorFor(java.lang.Object container)
iteratorFor
in interface CoreContainerPolicy<AbstractSession>
iteratorFor
in class ContainerPolicy
ContainerPolicy.hasNext(java.lang.Object)
,
ContainerPolicy.next(java.lang.Object)
public java.lang.Object keyFrom(java.lang.Object element, AbstractSession session)
keyFrom
in class ContainerPolicy
public java.lang.Object keyFromEntry(java.lang.Object entry)
keyFromEntry
in class ContainerPolicy
public java.lang.Object keyFromIterator(java.lang.Object iterator)
keyFromIterator
in class ContainerPolicy
public java.lang.Object nextEntry(java.lang.Object iterator)
nextEntry
in interface CoreContainerPolicy<AbstractSession>
nextEntry
in class ContainerPolicy
ContainerPolicy.iteratorFor(java.lang.Object)
,
MapContainerPolicy.unwrapIteratorResult(Object object)
public java.lang.Object nextEntry(java.lang.Object iterator, AbstractSession session)
nextEntry
in interface CoreContainerPolicy<AbstractSession>
nextEntry
in class ContainerPolicy
ContainerPolicy#iteratorFor(Object iterator, AbstractSession session)
,
MapContainerPolicy.unwrapIteratorResult(Object object)
public java.lang.Object unwrapElement(java.lang.Object object)
unwrapElement
in class ContainerPolicy
MapContainerPolicy.nextWrapped(Object iterator)
public java.lang.Object unwrapIteratorResult(java.lang.Object object)
unwrapIteratorResult
in class ContainerPolicy
MapContainerPolicy.nextWrapped(Object iterator)
public java.lang.Object unwrapKey(java.lang.Object key, AbstractSession session)
public void recordUpdateToCollectionInChangeRecord(CollectionChangeEvent event, ObjectChangeSet changeSet, CollectionChangeRecord collectionChangeRecord)
recordUpdateToCollectionInChangeRecord
in class ContainerPolicy
public boolean removeFrom(java.lang.Object key, java.lang.Object element, java.lang.Object container, AbstractSession session)
removeFrom
in class ContainerPolicy
public void setElementClass(java.lang.Class elementClass)
public boolean isValidContainer(java.lang.Object container)
isValidContainer
in class ContainerPolicy
CollectionContainerPolicy.isValidContainer(Object)
,
isValidContainer(Object)
public void setKeyName(java.lang.String keyName, java.lang.String elementClassName)
setKeyName
in class ContainerPolicy
MapContainerPolicy
public void setKeyName(java.lang.String keyName, java.lang.Class elementClass)
setKeyName
in class ContainerPolicy
public void setKeyName(java.lang.String keyName)
public void setKeyMethod(java.lang.String keyMethodName, java.lang.Class elementClass)
public void setKeyMethod(java.lang.String keyMethodName, java.lang.String elementClassName)
public void setKeyMethodName(java.lang.String keyMethodName)
public int sizeFor(java.lang.Object container)
sizeFor
in interface CoreContainerPolicy<AbstractSession>
sizeFor
in class ContainerPolicy
public java.lang.Object valueFromPKList(java.lang.Object[] pks, AbstractRecord foreignKeys, ForeignReferenceMapping mapping, AbstractSession session)
valueFromPKList
in class ContainerPolicy
EclipseLink 2.6.3, "build v20160428-59c81c5" API Reference