package org.eclipse.persistence.internal.identitymaps; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; public class QueueableWeakCacheKey extends WeakCacheKey { // This the reference queue from the owning map that // the weak references will be registered to. // makes for easy cleanup protected ReferenceQueue referenceQueue; public QueueableWeakCacheKey(Object primaryKey, Object object, Object writeLockValue, long readTime, ReferenceQueue refQueue, boolean isIsolated) { super(primaryKey, object, writeLockValue, readTime, isIsolated); this.referenceQueue = refQueue; } public void setObject(Object object) { this.reference = new CacheKeyReference(object, referenceQueue, this); } /** * Avoid acquiring locks for unit of work. */ public void acquire() { return; } /** * Avoid acquiring locks for unit of work. */ public void acquire(boolean forMerge) { return; } /** * Avoid acquiring locks for unit of work. */ public boolean acquireNoWait() { return true; } /** * Avoid acquiring locks for unit of work. */ public boolean acquireNoWait(boolean forMerge) { return true; } /** * Avoid acquiring locks for unit of work. */ public void acquireDeferredLock() { return; } /** * Avoid acquiring locks for unit of work. */ public void checkReadLock() { return; } /** * Avoid acquiring locks for unit of work. */ public void acquireReadLock() { return; } /** * Avoid acquiring locks for unit of work. */ public boolean acquireReadLockNoWait() { return true; } /** * Avoid acquiring locks for unit of work. */ public boolean isAcquired() { return false; } /** * Avoid acquiring locks for unit of work. */ public void release() { return; } /** * Avoid acquiring locks for unit of work. */ public void releaseDeferredLock() { return; } /** * Avoid acquiring locks for unit of work. */ public void releaseReadLock() { return; } static class CacheKeyReference extends WeakReference{ protected QueueableWeakCacheKey owner; public CacheKeyReference(Object object, ReferenceQueue referenceQueue, QueueableWeakCacheKey owner){ super(object, referenceQueue); this.owner = owner; } public QueueableWeakCacheKey getOwner(){ return owner; } } }