CAY-2352 Clean up build scripts and code to support Java 8 use Java 8 Function in cache-invalication module
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/b425e501 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/b425e501 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/b425e501 Branch: refs/heads/master Commit: b425e5010e3272f1d60890a9103330d6fe833897 Parents: 2bcefc2 Author: Nikita Timofeev <stari...@gmail.com> Authored: Fri Aug 18 15:24:39 2017 +0300 Committer: Nikita Timofeev <stari...@gmail.com> Committed: Fri Aug 18 15:24:39 2017 +0300 ---------------------------------------------------------------------- .../invalidation/CacheGroupDescriptor.java | 2 +- .../cache/invalidation/CacheGroupsHandler.java | 10 ++---- .../invalidation/CacheInvalidationFilter.java | 16 ++++------ .../CacheInvalidationModuleExtender.java | 32 +++++++++----------- .../invalidation/InvalidationFunction.java | 5 ++- .../cache/invalidation/InvalidationHandler.java | 5 ++- .../invalidation/CacheGroupsHandlerTest.java | 6 ++-- .../CacheInvalidationCustomHandlerIT.java | 10 ++---- 8 files changed, 40 insertions(+), 46 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/b425e501/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupDescriptor.java ---------------------------------------------------------------------- diff --git a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupDescriptor.java b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupDescriptor.java index 4234da1..2008c6e 100644 --- a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupDescriptor.java +++ b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupDescriptor.java @@ -21,7 +21,7 @@ package org.apache.cayenne.cache.invalidation; /** * Immutable object describing cache group. - * Used as a result in {@link InvalidationFunction}. + * Used as a result in invalidation function. * * @see CacheGroupDescriptor#CacheGroupDescriptor(String) * @see CacheGroupDescriptor#CacheGroupDescriptor(String, Class, Class) http://git-wip-us.apache.org/repos/asf/cayenne/blob/b425e501/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandler.java ---------------------------------------------------------------------- diff --git a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandler.java b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandler.java index 269f249..009ae4e 100644 --- a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandler.java +++ b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandler.java @@ -23,6 +23,7 @@ import org.apache.cayenne.Persistent; import java.util.ArrayList; import java.util.Collection; +import java.util.function.Function; /** * @since 4.0 @@ -37,7 +38,7 @@ public class CacheGroupsHandler implements InvalidationHandler { * of {@link CacheGroups} and {@link CacheGroup} annotations for the given type. */ @Override - public InvalidationFunction canHandle(Class<? extends Persistent> type) { + public Function<Persistent, Collection<CacheGroupDescriptor>> canHandle(Class<? extends Persistent> type) { CacheGroup multipleCacheGroups = type.getAnnotation(CacheGroup.class); CacheGroups cacheGroups = type.getAnnotation(CacheGroups.class); @@ -49,12 +50,7 @@ public class CacheGroupsHandler implements InvalidationHandler { extractCacheGroups(cacheGroups, groupsList); extractCacheGroups(multipleCacheGroups, groupsList); - return new InvalidationFunction() { - @Override - public Collection<CacheGroupDescriptor> apply(Persistent persistent) { - return groupsList; - } - }; + return p -> groupsList; } private void extractCacheGroups(CacheGroup cacheGroup, Collection<CacheGroupDescriptor> groupsList) { http://git-wip-us.apache.org/repos/asf/cayenne/blob/b425e501/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationFilter.java ---------------------------------------------------------------------- diff --git a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationFilter.java b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationFilter.java index beb3b95..85063e7 100644 --- a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationFilter.java +++ b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationFilter.java @@ -41,6 +41,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; /** * <p> @@ -65,18 +66,13 @@ public class CacheInvalidationFilter implements DataChannelFilter { private final Provider<QueryCache> cacheProvider; private final List<InvalidationHandler> handlers; - private final Map<Class<? extends Persistent>, InvalidationFunction> mappedHandlers; - private final InvalidationFunction skipHandler; + private final Map<Class<? extends Persistent>, Function<Persistent, Collection<CacheGroupDescriptor>>> mappedHandlers; + private final Function<Persistent, Collection<CacheGroupDescriptor>> skipHandler; private final ThreadLocal<Set<CacheGroupDescriptor>> groups; public CacheInvalidationFilter(@Inject Provider<QueryCache> cacheProvider, @Inject List<InvalidationHandler> handlers) { this.mappedHandlers = new ConcurrentHashMap<>(); - this.skipHandler = new InvalidationFunction() { - @Override - public Collection<CacheGroupDescriptor> apply(Persistent p) { - return Collections.emptyList(); - } - }; + this.skipHandler = p -> Collections.emptyList(); this.groups = new ThreadLocal<>(); this.cacheProvider = cacheProvider; this.handlers = handlers; @@ -122,11 +118,11 @@ public class CacheInvalidationFilter implements DataChannelFilter { // TODO: for some reason we can't use Persistent as the argument type... (is it fixed in Cayenne 4.0.M4?) Persistent p = (Persistent) object; - InvalidationFunction invalidationFunction = mappedHandlers.get(p.getClass()); + Function<Persistent, Collection<CacheGroupDescriptor>> invalidationFunction = mappedHandlers.get(p.getClass()); if (invalidationFunction == null) { invalidationFunction = skipHandler; for (InvalidationHandler handler : handlers) { - InvalidationFunction function = handler.canHandle(p.getClass()); + Function<Persistent, Collection<CacheGroupDescriptor>> function = handler.canHandle(p.getClass()); if (function != null) { invalidationFunction = function; break; http://git-wip-us.apache.org/repos/asf/cayenne/blob/b425e501/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationModuleExtender.java ---------------------------------------------------------------------- diff --git a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationModuleExtender.java b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationModuleExtender.java index 1a28329..639bdc4 100644 --- a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationModuleExtender.java +++ b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/CacheInvalidationModuleExtender.java @@ -26,6 +26,7 @@ import org.apache.cayenne.di.Module; import java.util.Collection; import java.util.HashSet; +import java.util.function.Function; /** * @since 4.0 @@ -61,27 +62,24 @@ public class CacheInvalidationModuleExtender { } public Module module() { - return new Module() { - @Override - public void configure(Binder binder) { + return binder -> { - if (noCacheGroupsHandler) { - // replace CacheGroupsHandler with a dummy no op handler - binder.bind(CacheGroupsHandler.class).toInstance(new CacheGroupsHandler() { - @Override - public InvalidationFunction canHandle(Class<? extends Persistent> type) { - return null; - } - }); - } + if (noCacheGroupsHandler) { + // replace CacheGroupsHandler with a dummy no op handler + binder.bind(CacheGroupsHandler.class).toInstance(new CacheGroupsHandler() { + @Override + public Function<Persistent, Collection<CacheGroupDescriptor>> canHandle(Class<? extends Persistent> type) { + return null; + } + }); + } - ListBuilder<InvalidationHandler> handlers = CacheInvalidationModule.contributeInvalidationHandler(binder); + ListBuilder<InvalidationHandler> handlers = CacheInvalidationModule.contributeInvalidationHandler(binder); - handlers.addAll(handlerInstances); + handlers.addAll(handlerInstances); - for (Class<? extends InvalidationHandler> handlerType : handlerTypes) { - handlers.add(handlerType); - } + for (Class<? extends InvalidationHandler> handlerType : handlerTypes) { + handlers.add(handlerType); } }; } http://git-wip-us.apache.org/repos/asf/cayenne/blob/b425e501/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationFunction.java ---------------------------------------------------------------------- diff --git a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationFunction.java b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationFunction.java index c748e80..96f2db9 100644 --- a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationFunction.java +++ b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationFunction.java @@ -22,11 +22,14 @@ package org.apache.cayenne.cache.invalidation; import org.apache.cayenne.Persistent; import java.util.Collection; +import java.util.function.Function; /** * @since 4.0 + * @deprecated since 4.1 plain Function>Persistent, Collection>CacheGroupDescriptor>> can be used. */ -public interface InvalidationFunction { +@Deprecated +public interface InvalidationFunction extends Function<Persistent, Collection<CacheGroupDescriptor>> { /** * @return collection of cache groups to invalidate for given object http://git-wip-us.apache.org/repos/asf/cayenne/blob/b425e501/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationHandler.java ---------------------------------------------------------------------- diff --git a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationHandler.java b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationHandler.java index 7b43e0b..0f54b12 100644 --- a/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationHandler.java +++ b/cayenne-cache-invalidation/src/main/java/org/apache/cayenne/cache/invalidation/InvalidationHandler.java @@ -19,6 +19,9 @@ package org.apache.cayenne.cache.invalidation; +import java.util.Collection; +import java.util.function.Function; + import org.apache.cayenne.Persistent; /** @@ -30,6 +33,6 @@ public interface InvalidationHandler { /** * @return invalidation function or null if there is nothing to invalidate */ - InvalidationFunction canHandle(Class<? extends Persistent> type); + Function<Persistent, Collection<CacheGroupDescriptor>> canHandle(Class<? extends Persistent> type); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/b425e501/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandlerTest.java ---------------------------------------------------------------------- diff --git a/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandlerTest.java b/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandlerTest.java index d3eb7b8..e87db5b 100644 --- a/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandlerTest.java +++ b/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheGroupsHandlerTest.java @@ -21,7 +21,9 @@ package org.apache.cayenne.cache.invalidation; import java.util.ArrayList; import java.util.Collection; +import java.util.function.Function; +import org.apache.cayenne.Persistent; import org.apache.cayenne.cache.invalidation.db.E1; import org.apache.cayenne.cache.invalidation.db.E2; import org.junit.Test; @@ -36,7 +38,7 @@ public class CacheGroupsHandlerTest { @Test public void canHandleE1() throws Exception { CacheGroupsHandler handler = new CacheGroupsHandler(); - InvalidationFunction function = handler.canHandle(E1.class); + Function<Persistent, Collection<CacheGroupDescriptor>> function = handler.canHandle(E1.class); Collection<CacheGroupDescriptor> result = function.apply(null); assertEquals(2, result.size()); @@ -52,7 +54,7 @@ public class CacheGroupsHandlerTest { @Test public void canHandleE2() throws Exception { CacheGroupsHandler handler = new CacheGroupsHandler(); - InvalidationFunction function = handler.canHandle(E2.class); + Function<Persistent, Collection<CacheGroupDescriptor>> function = handler.canHandle(E2.class); Collection<CacheGroupDescriptor> result = function.apply(null); assertEquals(6, result.size()); http://git-wip-us.apache.org/repos/asf/cayenne/blob/b425e501/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCustomHandlerIT.java ---------------------------------------------------------------------- diff --git a/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCustomHandlerIT.java b/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCustomHandlerIT.java index 0ccb3db..f11238d 100644 --- a/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCustomHandlerIT.java +++ b/cayenne-cache-invalidation/src/test/java/org/apache/cayenne/cache/invalidation/CacheInvalidationCustomHandlerIT.java @@ -28,6 +28,7 @@ import org.junit.Test; import java.util.Collection; import java.util.Collections; +import java.util.function.Function; import static org.junit.Assert.assertEquals; @@ -84,13 +85,8 @@ public class CacheInvalidationCustomHandlerIT extends CacheInvalidationCase { public static class G1InvalidationHandler implements InvalidationHandler { @Override - public InvalidationFunction canHandle(Class<? extends Persistent> type) { - return new InvalidationFunction() { - @Override - public Collection<CacheGroupDescriptor> apply(Persistent persistent) { - return Collections.singleton(new CacheGroupDescriptor("g1")); - } - }; + public Function<Persistent, Collection<CacheGroupDescriptor>> canHandle(Class<? extends Persistent> type) { + return p -> Collections.singleton(new CacheGroupDescriptor("g1")); } } }