diff --git a/pom.xml b/pom.xml index 19cda5e30..bb87496ba 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ io.ebean ebean-annotation - 4.3 + 4.4 diff --git a/src/main/java/io/ebean/cache/ServerCacheOptions.java b/src/main/java/io/ebean/cache/ServerCacheOptions.java index 6d32089c1..feb0623ee 100644 --- a/src/main/java/io/ebean/cache/ServerCacheOptions.java +++ b/src/main/java/io/ebean/cache/ServerCacheOptions.java @@ -12,6 +12,7 @@ public class ServerCacheOptions { private int maxIdleSecs; private int maxSecsToLive; private int trimFrequency; + private boolean nearCache; /** * Construct with no set options. @@ -40,6 +41,14 @@ public class ServerCacheOptions { this.trimFrequency = cacheTuning.trimFrequency(); } + /** + * Create with nearCache option. + */ + public ServerCacheOptions(boolean nearCache, CacheBeanTuning tuning) { + this(tuning); + this.nearCache = nearCache; + } + /** * Apply any settings from the default settings that have not already been * specifically set. @@ -70,9 +79,24 @@ public class ServerCacheOptions { copy.maxIdleSecs = maxIdleSecs; copy.maxSecsToLive = maxSecsToLive; copy.trimFrequency = trimFrequency; + copy.nearCache = nearCache; return copy; } + /** + * Return true if nearCache was explicitly turned on. + */ + public boolean isNearCache() { + return nearCache; + } + + /** + * Turn on nearCache option. + */ + public void setNearCache(boolean nearCache) { + this.nearCache = nearCache; + } + /** * Return the maximum cache size. */ diff --git a/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java b/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java index 20e966f6e..71b3af1a8 100644 --- a/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java +++ b/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java @@ -1,5 +1,6 @@ package io.ebeaninternal.server.cache; +import io.ebean.annotation.Cache; import io.ebean.annotation.CacheBeanTuning; import io.ebean.annotation.CacheQueryTuning; import io.ebean.cache.QueryCacheEntryValidate; @@ -123,9 +124,13 @@ class DefaultCacheHolder { } private ServerCacheOptions getBeanOptions(Class cls) { + + Cache cache = cls.getAnnotation(Cache.class); + boolean nearCache = (cache != null && cache.nearCache()); + CacheBeanTuning tuning = cls.getAnnotation(CacheBeanTuning.class); if (tuning != null) { - return new ServerCacheOptions(tuning).applyDefaults(beanDefault); + return new ServerCacheOptions(nearCache, tuning).applyDefaults(beanDefault); } return beanDefault.copy(); }