From 81f42f8e95f765cb7333af5fe605dab5ba5311bd Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Fri, 21 Dec 2018 02:19:21 +1300 Subject: [PATCH] #1587 - Fix for propagation of @Cache(nearCache=true) --- .../io/ebean/cache/ServerCacheOptions.java | 9 ++++++ .../server/cache/DefaultCacheHolder.java | 2 +- .../ebean/cache/ServerCacheOptionsTest.java | 30 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/test/java/io/ebean/cache/ServerCacheOptionsTest.java diff --git a/src/main/java/io/ebean/cache/ServerCacheOptions.java b/src/main/java/io/ebean/cache/ServerCacheOptions.java index feb0623ee..fe8fdb486 100644 --- a/src/main/java/io/ebean/cache/ServerCacheOptions.java +++ b/src/main/java/io/ebean/cache/ServerCacheOptions.java @@ -79,6 +79,15 @@ public class ServerCacheOptions { copy.maxIdleSecs = maxIdleSecs; copy.maxSecsToLive = maxSecsToLive; copy.trimFrequency = trimFrequency; + copy.nearCache = this.nearCache; + return copy; + } + + /** + * Return a copy of this object with nearCache option. + */ + public ServerCacheOptions copy(boolean nearCache) { + ServerCacheOptions copy = copy(); copy.nearCache = nearCache; return copy; } diff --git a/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java b/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java index 71b3af1a8..8211e32c4 100644 --- a/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java +++ b/src/main/java/io/ebeaninternal/server/cache/DefaultCacheHolder.java @@ -132,7 +132,7 @@ class DefaultCacheHolder { if (tuning != null) { return new ServerCacheOptions(nearCache, tuning).applyDefaults(beanDefault); } - return beanDefault.copy(); + return beanDefault.copy(nearCache); } } diff --git a/src/test/java/io/ebean/cache/ServerCacheOptionsTest.java b/src/test/java/io/ebean/cache/ServerCacheOptionsTest.java new file mode 100644 index 000000000..47f569c74 --- /dev/null +++ b/src/test/java/io/ebean/cache/ServerCacheOptionsTest.java @@ -0,0 +1,30 @@ +package io.ebean.cache; + +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ServerCacheOptionsTest { + + @Test + public void copy_when_off() { + + ServerCacheOptions basic = new ServerCacheOptions(); + assertThat(basic.isNearCache()).isFalse(); + + ServerCacheOptions copy = basic.copy(true); + assertThat(copy.isNearCache()).isTrue(); + } + + @Test + public void copy_when_on() { + + ServerCacheOptions basic = new ServerCacheOptions(); + basic.setNearCache(true); + assertThat(basic.isNearCache()).isTrue(); + + ServerCacheOptions copy = basic.copy(false); + assertThat(copy.isNearCache()).isFalse(); + } + +}