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 Form| Modifier 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, setContainerClassNameaddAdditionalFieldsToQuery, 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, vectorForpublic 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 ContainerPolicyQueryExceptionpublic boolean addInto(java.lang.Object element,
java.lang.Object container,
AbstractSession session)
addInto in interface CoreContainerPolicy<AbstractSession>addInto in class ContainerPolicypublic boolean addInto(java.lang.Object key,
java.lang.Object element,
java.lang.Object container,
AbstractSession session)
addInto in interface CoreContainerPolicy<AbstractSession>addInto in class ContainerPolicypublic 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 ContainerPolicyMappedKeyMapContainerPolicypublic java.lang.Object buildCollectionEntry(java.lang.Object objectAdded,
ObjectChangeSet changeSet)
buildCollectionEntry in class ContainerPolicyMappedKeyMapContainerPolicypublic java.lang.Object[] buildReferencesPKList(java.lang.Object container,
AbstractSession session)
buildReferencesPKList in class ContainerPolicyObjectReferenceMapping.buildReferencesPKList,
ContainerPolicy.buildReferencesPKListpublic void buildChangeSetForNewObjectInCollection(java.lang.Object object,
ClassDescriptor referenceDescriptor,
UnitOfWorkChangeSet uowChangeSet,
AbstractSession session)
buildChangeSetForNewObjectInCollection in class ContainerPolicypublic void clear(java.lang.Object container)
clear in interface CoreContainerPolicy<AbstractSession>clear in class ContainerPolicypublic java.lang.Object cloneFor(java.lang.Object container)
cloneFor in class InterfaceContainerPolicypublic boolean compareKeys(java.lang.Object sourceValue,
AbstractSession session)
compareKeys in class ContainerPolicypublic java.lang.Object concatenateContainers(java.lang.Object firstContainer,
java.lang.Object secondContainer,
AbstractSession session)
concatenateContainers in class ContainerPolicypublic void convertClassNamesToClasses(java.lang.ClassLoader classLoader)
convertClassNamesToClasses in class InterfaceContainerPolicyclassLoader - 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 InterfaceContainerPolicypublic QueryKey createQueryKeyForMapKey()
createQueryKeyForMapKey in class InterfaceContainerPolicypublic java.lang.Object createWrappedObjectFromExistingWrappedObject(java.lang.Object wrappedObject,
java.lang.Object parent,
ClassDescriptor referenceDescriptor,
MergeManager mergeManager,
AbstractSession targetSession)
createWrappedObjectFromExistingWrappedObject in class ContainerPolicyparent - if this is an aggregate, the owner of the aggregateMappedKeyMapContainerPolicypublic DatabaseField getDirectKeyField(CollectionMapping baseMapping)
getDirectKeyField in class InterfaceContainerPolicypublic java.lang.Class getElementClass()
public java.lang.String getElementClassName()
public java.lang.Class getInterfaceType()
getInterfaceType in class InterfaceContainerPolicypublic java.lang.String getKeyName()
public java.lang.Object getKeyType()
getKeyType in class ContainerPolicypublic boolean isMapPolicy()
isMapPolicy in class ContainerPolicypublic boolean isMapKeyAttribute()
isMapKeyAttribute in class InterfaceContainerPolicypublic boolean hasNext(java.lang.Object iterator)
hasNext in interface CoreContainerPolicy<AbstractSession>hasNext in class InterfaceContainerPolicyContainerPolicy.iteratorFor(java.lang.Object)public java.lang.Object iteratorFor(java.lang.Object container)
iteratorFor in interface CoreContainerPolicy<AbstractSession>iteratorFor in class ContainerPolicyContainerPolicy.hasNext(java.lang.Object),
ContainerPolicy.next(java.lang.Object)public java.lang.Object keyFrom(java.lang.Object element,
AbstractSession session)
keyFrom in class ContainerPolicypublic java.lang.Object keyFromEntry(java.lang.Object entry)
keyFromEntry in class ContainerPolicypublic java.lang.Object keyFromIterator(java.lang.Object iterator)
keyFromIterator in class ContainerPolicypublic java.lang.Object nextEntry(java.lang.Object iterator)
nextEntry in interface CoreContainerPolicy<AbstractSession>nextEntry in class ContainerPolicyContainerPolicy.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 ContainerPolicyContainerPolicy#iteratorFor(Object iterator, AbstractSession session),
MapContainerPolicy.unwrapIteratorResult(Object object)public java.lang.Object unwrapElement(java.lang.Object object)
unwrapElement in class ContainerPolicyMapContainerPolicy.nextWrapped(Object iterator)public java.lang.Object unwrapIteratorResult(java.lang.Object object)
unwrapIteratorResult in class ContainerPolicyMapContainerPolicy.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 ContainerPolicypublic boolean removeFrom(java.lang.Object key,
java.lang.Object element,
java.lang.Object container,
AbstractSession session)
removeFrom in class ContainerPolicypublic void setElementClass(java.lang.Class elementClass)
public boolean isValidContainer(java.lang.Object container)
isValidContainer in class ContainerPolicyCollectionContainerPolicy.isValidContainer(Object),
isValidContainer(Object)public void setKeyName(java.lang.String keyName,
java.lang.String elementClassName)
setKeyName in class ContainerPolicyMapContainerPolicypublic void setKeyName(java.lang.String keyName,
java.lang.Class elementClass)
setKeyName in class ContainerPolicypublic 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 ContainerPolicypublic java.lang.Object valueFromPKList(java.lang.Object[] pks,
AbstractRecord foreignKeys,
ForeignReferenceMapping mapping,
AbstractSession session)
valueFromPKList in class ContainerPolicyEclipseLink 2.6.3, "build v20160428-59c81c5" API Reference