Groovy Documentation

org.codehaus.groovy.grails.web.util
[Java] Class CacheEntry

java.lang.Object
  org.codehaus.groovy.grails.web.util.CacheEntry

public class CacheEntry
extends java.lang.Object

Wrapper for a value inside a cache that adds timestamp information for expiration and prevents "cache storms" with a Lock. JMM happens-before is ensured with AtomicReference. Objects in cache are assumed to not change after publication.

Authors:
Lari Hotari


Field Summary
protected long createdMillis

protected java.util.concurrent.atomic.AtomicReference valueRef

protected java.util.concurrent.locks.Lock writeLock

 
Constructor Summary
CacheEntry(java.lang.Object value)

 
Method Summary
void expire()

long getCreatedMillis()

java.lang.Object getValue(long timeout, java.security.PrivilegedAction updater)

gets the current value from the entry and updates it if it's older than timeout

java.lang.Object getValue()

protected boolean hasExpired(long timeout)

protected void resetTimestamp()

protected boolean shouldUpdate(long beforeLockingCreatedMillis)

 
Methods inherited from class java.lang.Object
java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()
 

Field Detail

createdMillis

protected long createdMillis


valueRef

protected java.util.concurrent.atomic.AtomicReference valueRef


writeLock

protected java.util.concurrent.locks.Lock writeLock


 
Constructor Detail

CacheEntry

public CacheEntry(java.lang.Object value)


 
Method Detail

expire

public void expire()


getCreatedMillis

public long getCreatedMillis()


getValue

public java.lang.Object getValue(long timeout, java.security.PrivilegedAction updater)
gets the current value from the entry and updates it if it's older than timeout updater is a callback for creating an updated value.
Parameters:
timeout
updater
Returns:


getValue

public java.lang.Object getValue()


hasExpired

protected boolean hasExpired(long timeout)


resetTimestamp

protected void resetTimestamp()


shouldUpdate

protected boolean shouldUpdate(long beforeLockingCreatedMillis)


 

Groovy Documentation