Allow a Key<T> to be invalidated directly and create the KeyCacheKey for the
caller.
This commit is contained in:
@@ -35,8 +35,10 @@ public interface CacheKey
|
||||
public String getCacheId ();
|
||||
|
||||
/**
|
||||
* Returns the actual opaque serializable cache key under which results are stored
|
||||
* in the cache identified by {@link #getCacheId}.
|
||||
* Returns the actual opaque serializable cache key under which results are stored in the cache
|
||||
* identified by {@link #getCacheId}. The object returned by this method should <em>only</em>
|
||||
* reference system classes (not application classes). Depot takes care to ensure this and you
|
||||
* probably aren't implementing your own cache keys so this should be fine.
|
||||
*/
|
||||
public Serializable getCacheKey ();
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ public class Key<T extends PersistentRecord> extends WhereClause
|
||||
// from CacheInvalidator
|
||||
public void invalidate (PersistenceContext ctx)
|
||||
{
|
||||
ctx.cacheInvalidate(new KeyCacheKey(this));
|
||||
ctx.cacheInvalidate(this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -300,7 +300,7 @@ public abstract class KeySet<T extends PersistentRecord> extends WhereClause
|
||||
// from ValidatingCacheInvalidator
|
||||
public void invalidate (PersistenceContext ctx) {
|
||||
for (Key<T> key : this) {
|
||||
ctx.cacheInvalidate(new KeyCacheKey(key));
|
||||
ctx.cacheInvalidate(key);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ import com.samskivert.depot.annotation.TableGenerator;
|
||||
import com.samskivert.depot.impl.DepotMarshaller;
|
||||
import com.samskivert.depot.impl.DepotMetaData;
|
||||
import com.samskivert.depot.impl.DepotTypes;
|
||||
import com.samskivert.depot.impl.KeyCacheKey;
|
||||
import com.samskivert.depot.impl.Modifier;
|
||||
import com.samskivert.depot.impl.Operation;
|
||||
import com.samskivert.depot.impl.Query;
|
||||
@@ -349,6 +350,19 @@ public class PersistenceContext
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Evicts the cache entry indexed under the given key, if there is one. The eviction may
|
||||
* trigger further cache invalidations.
|
||||
*/
|
||||
public void cacheInvalidate (Key<?> key)
|
||||
{
|
||||
if (key == null) {
|
||||
log.warning("Cache key to invalidate must not be null.", new Exception());
|
||||
} else {
|
||||
cacheInvalidate(new KeyCacheKey(key));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Evicts the cache entry indexed under the given key, if there is one. The eviction may
|
||||
* trigger further cache invalidations.
|
||||
|
||||
Reference in New Issue
Block a user