Class CacheKeyInterceptor
java.lang.Object
org.eclipse.persistence.internal.helper.ConcurrencyManager
org.eclipse.persistence.internal.identitymaps.CacheKey
org.eclipse.persistence.sessions.interceptors.CacheKeyInterceptor
- All Implemented Interfaces:
Serializable
,Cloneable
public class CacheKeyInterceptor
extends org.eclipse.persistence.internal.identitymaps.CacheKey
The CacheKeyInterceptor allows a Cache Interceptor implementation to wrap the EclipseLink CacheKey.
The CacheKey is an object that wraps the object and maintains cached based information about the object
like primary key, write lock value and locking. The EclipseLink runtime will access the CacheKey and directly
when releasing locks.
- See Also:
- Author:
- Gordon Yorke
-
Field Summary
Modifier and TypeFieldDescriptionprotected org.eclipse.persistence.internal.identitymaps.CacheKey
Fields inherited from class org.eclipse.persistence.internal.identitymaps.CacheKey
CACHE_KEY_INVALID, CHECK_INVALIDATION_POLICY, CREATION_THREAD_HASHCODE, CREATION_THREAD_ID, CREATION_THREAD_NAME, invalidationState, isIsolated, isWrapper, key, lastUpdatedQueryId, mapOwner, MAX_WAIT_TRIES, object, protectedForeignKeys, readTime, record, transactionId, wrapper, writeLockValue
Fields inherited from class org.eclipse.persistence.internal.helper.ConcurrencyManager
activeThread, DEFERRED_LOCK_MANAGERS, depth, lockedByMergeManager, numberOfReaders, numberOfWritersWaiting, shouldTrackStack, stack
-
Constructor Summary
ConstructorDescriptionCacheKeyInterceptor
(org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey) -
Method Summary
Modifier and TypeMethodDescriptionvoid
acquire()
Acquire the lock on the cache key object.void
acquire
(boolean forMerge) Acquire the lock on the cache key object.void
Acquire the deferred lock.boolean
Acquire the lock on the cache key object.boolean
Acquire the lock on the cache key object.boolean
acquireNoWait
(boolean forMerge) Acquire the lock on the cache key object.void
Acquire the read lock on the cache key object.boolean
Acquire the read lock on the cache key object.void
Check the deferred lock on the cache key object.void
Check the read lock on the cache key object.clone()
INTERNAL: Clones itself.boolean
equals
(org.eclipse.persistence.internal.identitymaps.CacheKey key) Determine if the receiver is equal to key.Return the active thread.int
INTERNAL: Return the value of the invalidationState Variable The return value will be a constant CHECK_INVALIDATION_POLICY - The Invalidation policy is must be checked for this cache key's sate CACHE_KEY_INVALID - This cache key has been labeled invalid.getKey()
long
INTERNAL: This method returns the system time in millis seconds at which this object was last refreshed CR #4365 CR #2698903 ...org.eclipse.persistence.internal.identitymaps.IdentityMap
long
INTERNAL: Return the current value of the Read Time variableorg.eclipse.persistence.internal.identitymaps.CacheKey
If a Wrapper subclasses this CacheKey this method will be used to unwrap the cache key.int
hashCode()
Overrides hashCode() in Object to use the primaryKey's hashCode for storage in data structures.boolean
Return if a thread has acquire this manager.void
release()
Release the lock on the cache key object.void
Release the deferred lockvoid
Release the read lock on the cache key object.Removes this cacheKey from the owning mapvoid
setInvalidationState
(int invalidationState) INTERNAL: Set the value of the invalidationState Variable The possible values are from an enumeration of constants CHECK_INVALIDATION_POLICY - The invalidation policy is must be checked for this cache key's sate CACHE_KEY_INVALID - This cache key has been labelled invalid.void
void
setLastUpdatedQueryId
(long id) INTERNAL: This method sets the system time in millis seconds at which this object was last refreshed CR #4365 CR #2698903 ...void
void
setOwningMap
(org.eclipse.persistence.internal.identitymaps.AbstractIdentityMap map) void
setReadTime
(long readTime) INTERNAL: Set the read time of this cache keyvoid
void
setWrapper
(Object wrapper) void
setWriteLockValue
(Object writeLockValue) toString()
Print the nested depth.void
Notifies that cache key that it has been accessed.Methods inherited from class org.eclipse.persistence.internal.identitymaps.CacheKey
acquireLock, acquireWithWait, equals, getProtectedForeignKeys, getTransactionId, hasProtectedForeignKeys, isIsolated, isWrapper, setIsolated, setIsWrapper, setOwningMap, setProtectedForeignKeys, setTransactionId, waitForObject
Methods inherited from class org.eclipse.persistence.internal.helper.ConcurrencyManager
acquireIfUnownedNoWait, addReadLockToReadLockManager, clearJustificationWhyMethodIsBuildingObjectCompleteReturnsFalse, enrichStringBuildingExplainWhyThreadIsStuckInIsBuildObjectOnThreadComplete, getConcurrencyManagerCreationDate, getConcurrencyManagerId, getDeferredLockManager, getDeferredLockManagers, getDepth, getNumberOfReaders, getNumberOfWritersWaiting, getReadLockManager, getReadLockManagerEnsureResultIsNotNull, getReadLockManagers, getStack, getThreadsToWaitOnAcquire, getThreadsToWaitOnAcquireMethodName, getThreadsToWaitOnAcquireReadLock, getThreadsToWaitOnAcquireReadLockMethodName, getThreadsWaitingToReleaseDeferredLocks, getThreadsWaitingToReleaseDeferredLocksJustification, getTotalNumberOfKeysAcquiredForReading, getTotalNumberOfKeysReleasedForReading, getTotalNumberOfKeysReleasedForReadingBlewUpExceptionDueToCacheKeyHavingReachedCounterZero, initializeDeferredLockManagers, isBuildObjectOnThreadComplete, isLockedByMergeManager, isNested, putDeferredLock, putThreadAsWaitingToAcquireLockForReading, putThreadAsWaitingToAcquireLockForWriting, releaseAllLocksAcquiredByThread, removeDeferredLockManager, removeReadLockFromReadLockManager, removeReadLockManagerIfEmpty, removeThreadNoLongerWaitingToAcquireLockForReading, removeThreadNoLongerWaitingToAcquireLockForWriting, setActiveThread, setDepth, setIsLockedByMergeManager, setJustificationWhyMethodIsBuildingObjectCompleteReturnsFalse, setNumberOfReaders, setNumberOfWritersWaiting, setShouldTrackStack, setStack, shouldTrackStack, transitionToDeferredLock
-
Field Details
-
wrappedKey
protected org.eclipse.persistence.internal.identitymaps.CacheKey wrappedKey
-
-
Constructor Details
-
CacheKeyInterceptor
public CacheKeyInterceptor(org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey)
-
-
Method Details
-
acquire
public void acquire()Acquire the lock on the cache key object.- Overrides:
acquire
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquire
public void acquire(boolean forMerge) Acquire the lock on the cache key object. For the merge process called with true from the merge process, if true then the refresh will not refresh the object- Overrides:
acquire
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquireNoWait
public boolean acquireNoWait()Acquire the lock on the cache key object. But only if the object has no lock on it Added for CR 2317- Overrides:
acquireNoWait
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquireIfUnownedNoWait
public boolean acquireIfUnownedNoWait()Acquire the lock on the cache key object. Only acquire a lock if the cache key's active thread is not set. Added for Bug 5840635- Overrides:
acquireIfUnownedNoWait
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquireNoWait
public boolean acquireNoWait(boolean forMerge) Acquire the lock on the cache key object. But only if the object has no lock on it Added for CR 2317 called with true from the merge process, if true then the refresh will not refresh the object- Overrides:
acquireNoWait
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquireDeferredLock
public void acquireDeferredLock()Acquire the deferred lock.- Overrides:
acquireDeferredLock
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
checkReadLock
public void checkReadLock()Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
Check the read lock on the cache key object. This can be called to ensure the cache key has a valid built object. It does not hold a lock, so the object could be refreshed afterwards.- Overrides:
checkReadLock
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
checkDeferredLock
public void checkDeferredLock()Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
Check the deferred lock on the cache key object. This can be called to ensure the cache key has a valid built object. It does not hold a lock, so the object could be refreshed afterwards.- Overrides:
checkDeferredLock
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquireReadLock
public void acquireReadLock()Acquire the read lock on the cache key object.- Overrides:
acquireReadLock
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquireReadLockNoWait
public boolean acquireReadLockNoWait()Acquire the read lock on the cache key object.- Overrides:
acquireReadLockNoWait
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getActiveThread
Return the active thread.- Overrides:
getActiveThread
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
clone
Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
INTERNAL: Clones itself.- Overrides:
clone
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
equals
public boolean equals(org.eclipse.persistence.internal.identitymaps.CacheKey key) Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
Determine if the receiver is equal to key. Use an index compare, because it is much faster than enumerations.- Overrides:
equals
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getLastUpdatedQueryId
public long getLastUpdatedQueryId()Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
INTERNAL: This method returns the system time in millis seconds at which this object was last refreshed CR #4365 CR #2698903 ... instead of using millis we will now use id's instead. Method renamed appropriately.- Overrides:
getLastUpdatedQueryId
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getKey
- Overrides:
getKey
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getObject
- Overrides:
getObject
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getOwningMap
public org.eclipse.persistence.internal.identitymaps.IdentityMap getOwningMap()- Overrides:
getOwningMap
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getReadTime
public long getReadTime()INTERNAL: Return the current value of the Read Time variable- Overrides:
getReadTime
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getRecord
- Overrides:
getRecord
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getWrappedCacheKey
public org.eclipse.persistence.internal.identitymaps.CacheKey getWrappedCacheKey()If a Wrapper subclasses this CacheKey this method will be used to unwrap the cache key.- Overrides:
getWrappedCacheKey
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
- Returns:
-
getWrapper
- Overrides:
getWrapper
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getWriteLockValue
- Overrides:
getWriteLockValue
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
hashCode
public int hashCode()Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
Overrides hashCode() in Object to use the primaryKey's hashCode for storage in data structures.- Overrides:
hashCode
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
isAcquired
public boolean isAcquired()Description copied from class:org.eclipse.persistence.internal.helper.ConcurrencyManager
Return if a thread has acquire this manager.- Overrides:
isAcquired
in classorg.eclipse.persistence.internal.helper.ConcurrencyManager
-
getInvalidationState
public int getInvalidationState()Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
INTERNAL: Return the value of the invalidationState Variable The return value will be a constant CHECK_INVALIDATION_POLICY - The Invalidation policy is must be checked for this cache key's sate CACHE_KEY_INVALID - This cache key has been labeled invalid.- Overrides:
getInvalidationState
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
release
public void release()Release the lock on the cache key object.- Overrides:
release
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
releaseDeferredLock
public void releaseDeferredLock()Release the deferred lock- Overrides:
releaseDeferredLock
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
releaseReadLock
public void releaseReadLock()Release the read lock on the cache key object.- Overrides:
releaseReadLock
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
removeFromOwningMap
Removes this cacheKey from the owning map- Overrides:
removeFromOwningMap
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setInvalidationState
public void setInvalidationState(int invalidationState) Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
INTERNAL: Set the value of the invalidationState Variable The possible values are from an enumeration of constants CHECK_INVALIDATION_POLICY - The invalidation policy is must be checked for this cache key's sate CACHE_KEY_INVALID - This cache key has been labelled invalid.- Overrides:
setInvalidationState
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setLastUpdatedQueryId
public void setLastUpdatedQueryId(long id) Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
INTERNAL: This method sets the system time in millis seconds at which this object was last refreshed CR #4365 CR #2698903 ... instead of using millis we will now use ids instead. Method renamed appropriately.- Overrides:
setLastUpdatedQueryId
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setKey
- Overrides:
setKey
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setObject
- Overrides:
setObject
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setOwningMap
public void setOwningMap(org.eclipse.persistence.internal.identitymaps.AbstractIdentityMap map) -
setReadTime
public void setReadTime(long readTime) Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
INTERNAL: Set the read time of this cache key- Overrides:
setReadTime
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setRecord
- Overrides:
setRecord
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setWrapper
- Overrides:
setWrapper
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setWriteLockValue
- Overrides:
setWriteLockValue
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
toString
Description copied from class:org.eclipse.persistence.internal.helper.ConcurrencyManager
Print the nested depth.- Overrides:
toString
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
updateAccess
public void updateAccess()Description copied from class:org.eclipse.persistence.internal.identitymaps.CacheKey
Notifies that cache key that it has been accessed. Allows the LRU sub-cache to be maintained.- Overrides:
updateAccess
in classorg.eclipse.persistence.internal.identitymaps.CacheKey
-