This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/isis.git
commit bbdad22b392cf910ae196ca7304edc86b117b7f6 Author: Andi Huber <ahu...@apache.org> AuthorDate: Wed Jun 27 07:41:53 2018 +0200 ISIS-1960: applib: remove BackgroundService2 and BackgroundCommandService2 Task-Url: https://issues.apache.org/jira/browse/ISIS-1960 --- .../background/BackgroundCommandService.java | 10 ++++ .../services/background/BackgroundService.java | 6 ++ .../background/BackgroundCommandService2.java | 13 +---- .../services/background/BackgroundService2.java | 13 ++--- .../background/BackgroundServiceDefault.java | 67 +++++++++++++--------- .../background/CommandInvocationHandler.java | 6 +- 6 files changed, 65 insertions(+), 50 deletions(-) diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService.java b/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService.java index 11621d8..c086d2b 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService.java +++ b/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService.java @@ -16,6 +16,9 @@ */ package org.apache.isis.applib.services.background; +import org.apache.isis.applib.services.command.Command; +import org.apache.isis.schema.cmd.v1.CommandDto; + /** * Persists a {@link org.apache.isis.schema.cmd.v1.CommandDto command-reified} action such that it can be executed asynchronously, * for example through a Quartz scheduler. @@ -34,5 +37,12 @@ package org.apache.isis.applib.services.background; * */ public interface BackgroundCommandService { + + public void schedule( + final CommandDto dto, + final Command parentCommand, + final String targetClassName, + final String targetActionName, + final String targetArgs); } diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundService.java b/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundService.java index 158a86a..f22af39 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundService.java +++ b/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundService.java @@ -47,5 +47,11 @@ public interface BackgroundService { @Programmatic <T> T execute(final T object); + /** + * Returns a proxy around the mixin object which is then used to obtain the + * signature of the action to be invoked in the background. + */ + @Programmatic + <T> T executeMixin(Class<T> mixinClass, Object mixedIn); } diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService2.java b/core/legacy/applib-legacy/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService2.java similarity index 77% rename from core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService2.java rename to core/legacy/applib-legacy/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService2.java index e693592..7c3ed13 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService2.java +++ b/core/legacy/applib-legacy/src/main/java/org/apache/isis/applib/services/background/BackgroundCommandService2.java @@ -16,20 +16,13 @@ */ package org.apache.isis.applib.services.background; -import org.apache.isis.applib.services.command.Command; -import org.apache.isis.schema.cmd.v1.CommandDto; - /** * Persists a {@link org.apache.isis.schema.cmd.v1.CommandDto memento-ized} command such that it can be * executed asynchronously, for example through a Quartz scheduler. - * + * @deprecated use BackgroundCommandService instead */ +@Deprecated public interface BackgroundCommandService2 extends BackgroundCommandService { - void schedule( - final CommandDto dto, - final Command parentCommand, - final String targetClassName, - final String targetActionName, - final String targetArgs); + } diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundService2.java b/core/legacy/applib-legacy/src/main/java/org/apache/isis/applib/services/background/BackgroundService2.java similarity index 77% rename from core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundService2.java rename to core/legacy/applib-legacy/src/main/java/org/apache/isis/applib/services/background/BackgroundService2.java index 529aa85..7f68327 100644 --- a/core/applib/src/main/java/org/apache/isis/applib/services/background/BackgroundService2.java +++ b/core/legacy/applib-legacy/src/main/java/org/apache/isis/applib/services/background/BackgroundService2.java @@ -16,18 +16,13 @@ */ package org.apache.isis.applib.services.background; -import org.apache.isis.applib.annotation.Programmatic; - /** * Submit actions to be invoked in the background. + * @deprecated use BackgroundService instead + * */ +@Deprecated public interface BackgroundService2 extends BackgroundService { - - /** - * Returns a proxy around the mixin object which is then used to obtain the - * signature of the action to be invoked in the background. - */ - @Programmatic - <T> T executeMixin(Class<T> mixinClass, Object mixedIn); + } diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java index 75d20b3..b19d921 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundServiceDefault.java @@ -30,8 +30,7 @@ import org.apache.isis.applib.annotation.DomainService; import org.apache.isis.applib.annotation.NatureOfService; import org.apache.isis.applib.annotation.Programmatic; import org.apache.isis.applib.services.background.BackgroundCommandService; -import org.apache.isis.applib.services.background.BackgroundCommandService2; -import org.apache.isis.applib.services.background.BackgroundService2; +import org.apache.isis.applib.services.background.BackgroundService; import org.apache.isis.applib.services.command.CommandContext; import org.apache.isis.applib.services.factory.FactoryService; import org.apache.isis.commons.internal._Constants; @@ -55,43 +54,55 @@ import org.slf4j.LoggerFactory; nature = NatureOfService.DOMAIN, menuOrder = "" + Integer.MAX_VALUE ) -public class BackgroundServiceDefault implements BackgroundService2 { +public class BackgroundServiceDefault implements BackgroundService { static final Logger LOG = LoggerFactory.getLogger(BackgroundServiceDefault.class); - /* - * For the fixed thread-pool let there be 1-4 concurrent threads, - * limited by the number of available (logical) processor cores. - * - * Note: Future improvements might make these values configurable, - * but for now lets try to be reasonably nice here. - * - */ - private final int minThreadCount = 1; // only used if there is no BackgroundCommandService - private final int maxThreadCount = 4; // only used if there is no BackgroundCommandService - - private final int threadCount = // only used if there is no BackgroundCommandService - Math.max(minThreadCount, - Math.min(maxThreadCount, - Runtime.getRuntime().availableProcessors())); - // only used if there is no BackgroundCommandService - private ExecutorService backgroundExecutorService; + private static class BuiltinExecutor { + /* + * For the fixed thread-pool let there be 1-4 concurrent threads, + * limited by the number of available (logical) processor cores. + * + * Note: Future improvements might make these values configurable, + * but for now lets try to be reasonably nice here. + * + */ + private final int minThreadCount = 1; + private final int maxThreadCount = 4; + + private final int threadCount = + Math.max(minThreadCount, + Math.min(maxThreadCount, + Runtime.getRuntime().availableProcessors())); + + public final ExecutorService backgroundExecutorService = + Executors.newFixedThreadPool(threadCount); + + public void shutdown() { + backgroundExecutorService.shutdownNow(); + } + } + + private BuiltinExecutor builtinExecutor; // only used if there is no BackgroundCommandService + + private boolean usesBuiltinExecutor() { + return backgroundCommandService==null; + } @Programmatic @PostConstruct public void init(Map<String,String> props) { - if(backgroundCommandService==null) { - backgroundExecutorService = Executors.newFixedThreadPool(threadCount); + if(usesBuiltinExecutor()) { + builtinExecutor = new BuiltinExecutor(); } } @Programmatic @PreDestroy public void shutdown() { - if(backgroundExecutorService!=null) { - backgroundExecutorService.shutdownNow(); - backgroundExecutorService = null; + if(builtinExecutor!=null) { + builtinExecutor.shutdown(); } } @@ -149,12 +160,12 @@ public class BackgroundServiceDefault implements BackgroundService2 { */ private <T> InvocationHandler newMethodHandler(final T target, final Object mixedInIfAny) { - if(backgroundCommandService==null) { - return new ForkingInvocationHandler<T>(target, mixedInIfAny, backgroundExecutorService); + if(usesBuiltinExecutor()) { + return new ForkingInvocationHandler<T>(target, mixedInIfAny, builtinExecutor.backgroundExecutorService); } return new CommandInvocationHandler<T>( - (BackgroundCommandService2) backgroundCommandService, + backgroundCommandService, target, mixedInIfAny, specificationLoader, diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandInvocationHandler.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandInvocationHandler.java index 0c1b090..437d591 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandInvocationHandler.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/CommandInvocationHandler.java @@ -24,7 +24,7 @@ import java.util.Collections; import java.util.List; import java.util.function.Supplier; -import org.apache.isis.applib.services.background.BackgroundCommandService2; +import org.apache.isis.applib.services.background.BackgroundCommandService; import org.apache.isis.applib.services.command.Command; import org.apache.isis.applib.services.command.CommandContext; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; @@ -42,7 +42,7 @@ import org.apache.isis.schema.cmd.v1.CommandDto; class CommandInvocationHandler<T> implements InvocationHandler { - private final BackgroundCommandService2 backgroundCommandService; + private final BackgroundCommandService backgroundCommandService; private final T target; private final Object mixedInIfAny; private final SpecificationLoader specificationLoader; @@ -51,7 +51,7 @@ class CommandInvocationHandler<T> implements InvocationHandler { private final Supplier<AdapterManager> adapterManagerSupplier; CommandInvocationHandler( - BackgroundCommandService2 backgroundCommandService, + BackgroundCommandService backgroundCommandService, T target, Object mixedInIfAny, SpecificationLoader specificationLoader,