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:
java.io.Serializable,java.lang.Cloneable
public class CacheKeyInterceptor extends org.eclipse.persistence.internal.identitymaps.CacheKeyThe 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:
- Serialized Form
- Author:
- Gordon Yorke
-
-
Field Summary
Fields Modifier and Type Field Description protected org.eclipse.persistence.internal.identitymaps.CacheKeywrappedKey-
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
-
-
Constructor Summary
Constructors Constructor Description CacheKeyInterceptor(org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidacquire()Acquire the lock on the cache key object.voidacquire(boolean forMerge)Acquire the lock on the cache key object.voidacquireDeferredLock()Acquire the deferred lock.booleanacquireIfUnownedNoWait()Acquire the lock on the cache key object.booleanacquireNoWait()Acquire the lock on the cache key object.booleanacquireNoWait(boolean forMerge)Acquire the lock on the cache key object.voidacquireReadLock()Acquire the read lock on the cache key object.booleanacquireReadLockNoWait()Acquire the read lock on the cache key object.voidcheckDeferredLock()voidcheckReadLock()java.lang.Objectclone()booleanequals(org.eclipse.persistence.internal.identitymaps.CacheKey key)java.lang.ThreadgetActiveThread()Return the active thread.intgetInvalidationState()java.lang.ObjectgetKey()longgetLastUpdatedQueryId()java.lang.ObjectgetObject()org.eclipse.persistence.internal.identitymaps.IdentityMapgetOwningMap()longgetReadTime()INTERNAL: Return the current value of the Read Time variableRecordgetRecord()org.eclipse.persistence.internal.identitymaps.CacheKeygetWrappedCacheKey()If a Wrapper subclasses this CacheKey this method will be used to unwrap the cache key.java.lang.ObjectgetWrapper()java.lang.ObjectgetWriteLockValue()inthashCode()booleanisAcquired()voidrelease()Release the lock on the cache key object.voidreleaseDeferredLock()Release the deferred lockvoidreleaseReadLock()Release the read lock on the cache key object.java.lang.ObjectremoveFromOwningMap()Removes this cacheKey from the owning mapvoidsetInvalidationState(int invalidationState)voidsetKey(java.lang.Object key)voidsetLastUpdatedQueryId(long id)voidsetObject(java.lang.Object object)voidsetOwningMap(org.eclipse.persistence.internal.identitymaps.AbstractIdentityMap map)voidsetReadTime(long readTime)voidsetRecord(Record newRecord)voidsetWrapper(java.lang.Object wrapper)voidsetWriteLockValue(java.lang.Object writeLockValue)java.lang.StringtoString()voidupdateAccess()-
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
-
-
-
-
Method Detail
-
acquire
public void acquire()
Acquire the lock on the cache key object.- Overrides:
acquirein 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:
acquirein 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:
acquireNoWaitin 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:
acquireIfUnownedNoWaitin 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:
acquireNoWaitin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquireDeferredLock
public void acquireDeferredLock()
Acquire the deferred lock.- Overrides:
acquireDeferredLockin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
checkReadLock
public void checkReadLock()
- Overrides:
checkReadLockin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
checkDeferredLock
public void checkDeferredLock()
- Overrides:
checkDeferredLockin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquireReadLock
public void acquireReadLock()
Acquire the read lock on the cache key object.- Overrides:
acquireReadLockin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
acquireReadLockNoWait
public boolean acquireReadLockNoWait()
Acquire the read lock on the cache key object.- Overrides:
acquireReadLockNoWaitin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getActiveThread
public java.lang.Thread getActiveThread()
Return the active thread.- Overrides:
getActiveThreadin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
clone
public java.lang.Object clone()
- Overrides:
clonein classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
equals
public boolean equals(org.eclipse.persistence.internal.identitymaps.CacheKey key)
- Overrides:
equalsin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getLastUpdatedQueryId
public long getLastUpdatedQueryId()
- Overrides:
getLastUpdatedQueryIdin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getKey
public java.lang.Object getKey()
- Overrides:
getKeyin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getObject
public java.lang.Object getObject()
- Overrides:
getObjectin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getOwningMap
public org.eclipse.persistence.internal.identitymaps.IdentityMap getOwningMap()
- Overrides:
getOwningMapin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getReadTime
public long getReadTime()
INTERNAL: Return the current value of the Read Time variable- Overrides:
getReadTimein classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getRecord
public Record getRecord()
- Overrides:
getRecordin 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:
getWrappedCacheKeyin classorg.eclipse.persistence.internal.identitymaps.CacheKey- Returns:
-
getWrapper
public java.lang.Object getWrapper()
- Overrides:
getWrapperin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
getWriteLockValue
public java.lang.Object getWriteLockValue()
- Overrides:
getWriteLockValuein classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
hashCode
public int hashCode()
- Overrides:
hashCodein classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
isAcquired
public boolean isAcquired()
- Overrides:
isAcquiredin classorg.eclipse.persistence.internal.helper.ConcurrencyManager
-
getInvalidationState
public int getInvalidationState()
- Overrides:
getInvalidationStatein classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
release
public void release()
Release the lock on the cache key object.- Overrides:
releasein classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
releaseDeferredLock
public void releaseDeferredLock()
Release the deferred lock- Overrides:
releaseDeferredLockin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
releaseReadLock
public void releaseReadLock()
Release the read lock on the cache key object.- Overrides:
releaseReadLockin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
removeFromOwningMap
public java.lang.Object removeFromOwningMap()
Removes this cacheKey from the owning map- Overrides:
removeFromOwningMapin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setInvalidationState
public void setInvalidationState(int invalidationState)
- Overrides:
setInvalidationStatein classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setLastUpdatedQueryId
public void setLastUpdatedQueryId(long id)
- Overrides:
setLastUpdatedQueryIdin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setKey
public void setKey(java.lang.Object key)
- Overrides:
setKeyin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setObject
public void setObject(java.lang.Object object)
- Overrides:
setObjectin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setOwningMap
public void setOwningMap(org.eclipse.persistence.internal.identitymaps.AbstractIdentityMap map)
-
setReadTime
public void setReadTime(long readTime)
- Overrides:
setReadTimein classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setRecord
public void setRecord(Record newRecord)
- Overrides:
setRecordin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setWrapper
public void setWrapper(java.lang.Object wrapper)
- Overrides:
setWrapperin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
setWriteLockValue
public void setWriteLockValue(java.lang.Object writeLockValue)
- Overrides:
setWriteLockValuein classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
toString
public java.lang.String toString()
- Overrides:
toStringin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
updateAccess
public void updateAccess()
- Overrides:
updateAccessin classorg.eclipse.persistence.internal.identitymaps.CacheKey
-
-