@Override public boolean afterInsert(SharedSessionContractImplementor session, Object key, Object value, Object version) { try { writeLock().lock(); Lockable item = (Lockable) getStorageAccess().getFromCache( key, session ); if ( item == null ) { getStorageAccess().putIntoCache( key, new Item( value, version, getRegion().getRegionFactory().nextTimestamp() ), session ); return true; } else { return false; } } finally { writeLock().unlock(); } }
@Override public void removeAll(SharedSessionContractImplementor session) { getStorageAccess().clearCache( session ); }
@Override public boolean contains(Object key) { return getStorageAccess().contains( key ); }
@Override public Object get(SharedSessionContractImplementor session, Object key) { return getStorageAccess().getFromCache( key, session ); }
@Override public void remove(SharedSessionContractImplementor session, Object key) { getStorageAccess().removeFromCache( key, session ); } }
/** * Specialized form of putting something into the cache * in cases where the put is coming from a load (read) from * the database * * @implNote the method default is to call {@link #putIntoCache} */ default void putFromLoad(Object key, Object value, SharedSessionContractImplementor session) { putIntoCache( key, value, session ); } }
@Override public void evict(Object key) { getStorageAccess().evictData( key ); }
@Override public boolean putFromLoad( SharedSessionContractImplementor session, Object key, Object value, Object version, boolean minimalPutOverride) { return putFromLoad( session, key, value, version ); }
@Override public void destroy() { getStorageAccess().release(); } }
@Override public void remove(SharedSessionContractImplementor session, Object key) { if ( getStorageAccess().getFromCache( key, session ) instanceof SoftLock ) { log.debugf( "Skipping #remove call in read-write access to maintain SoftLock : %s", key ); // don'tm do anything... we want the SoftLock to remain in place } else { super.remove( session, key ); } }
@Override public boolean update(SharedSessionContractImplementor session, Object key, Object value) { getStorageAccess().removeFromCache( key, session ); return false; } }
@Override public boolean update( SharedSessionContractImplementor session, Object key, Object value, Object currentVersion, Object previousVersion) { getStorageAccess().putIntoCache( key, value, session ); return true; }
@Override public void evictAll() { getStorageAccess().evictData(); }
@Override public boolean putFromLoad( SharedSessionContractImplementor session, Object key, Object value, Object version, boolean minimalPutOverride) { return putFromLoad( session, key, value, version ); }
@Override public void destroy() { getStorageAccess().release(); } }
@Override public boolean afterInsert(SharedSessionContractImplementor session, Object key, Object value) { try { writeLock().lock(); Lockable item = (Lockable) getStorageAccess().getFromCache( key, session ); if ( item == null ) { getStorageAccess().putIntoCache( key, new Item( value, null, getRegion().getRegionFactory().nextTimestamp() ), session ); return true; } else { return false; } } finally { writeLock().unlock(); } }
@Override public void unlockItem(SharedSessionContractImplementor session, Object key, SoftLock lock) { try { log.debugf( "Unlocking cache item [region=`%s` (%s)] : %s", getRegion().getName(), getAccessType(), key ); writeLock.lock(); Lockable item = (Lockable) getStorageAccess().getFromCache( key, session ); if ( ( item != null ) && item.isUnlockable( lock ) ) { decrementLock( session, key, (SoftLockImpl) item ); } else { handleLockExpiry( session, key, item ); } } finally { writeLock.unlock(); } }
@Override public void remove(SharedSessionContractImplementor session, Object key) { getStorageAccess().removeFromCache( key, session ); }
@Override public boolean insert( SharedSessionContractImplementor session, Object key, Object value, Object version) { getStorageAccess().putIntoCache( key, value, session ); return true; }
protected void clearCache() { log.debugf( "Clearing cache data map [region=`%s`]", region.getName() ); getStorageAccess().evictData(); }