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 2643fa0f4a8038b7cf35a64830cf1535fcd4490d Author: Andi Huber <ahu...@apache.org> AuthorDate: Thu May 31 12:12:22 2018 +0200 ISIS-1954: introduces a HeadlessTransactionSupport service available only for integration support Task-Url: https://issues.apache.org/jira/browse/ISIS-1954 --- .../integtestsupport/IntegrationTestAbstract3.java | 16 +++++++++++++--- .../DefaultHeadlessTransactionSupport.java} | 22 +++++++++++----------- ...ternal.java => HeadlessTransactionSupport.java} | 11 +++++------ .../HeadlessWithBootstrappingAbstract.java | 17 ++++++++--------- .../isis/core/runtime/headless/IsisSystem.java | 11 ----------- 5 files changed, 37 insertions(+), 40 deletions(-) diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract3.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract3.java index 2bea7bd..7bd30b3 100644 --- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract3.java +++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract3.java @@ -27,6 +27,8 @@ import org.apache.isis.applib.RecoverableException; import org.apache.isis.applib.services.jdosupport.IsisJdoSupport; import org.apache.isis.applib.services.xactn.TransactionService; import org.apache.isis.commons.internal.exceptions._Exceptions; +import org.apache.isis.core.integtestsupport.components.DefaultHeadlessTransactionSupport; +import org.apache.isis.core.runtime.headless.HeadlessTransactionSupport; import org.apache.isis.core.runtime.headless.HeadlessWithBootstrappingAbstract; import org.apache.isis.core.runtime.headless.IsisSystem; import org.apache.isis.core.runtime.headless.logging.LogConfig; @@ -69,7 +71,8 @@ public abstract class IntegrationTestAbstract3 extends HeadlessWithBootstrapping // Instead we expect it to be bootstrapped via @Before try { base.evaluate(); - IsisSystem.get().getTransactionSupportInternal().endTran(); + final IsisSystem isft = IsisSystem.get(); + isft.getService(HeadlessTransactionSupport.class).endTransaction(); } catch(final Throwable e) { // determine if underlying cause is an applib-defined exception, final RecoverableException recoverableException = @@ -153,10 +156,17 @@ public abstract class IntegrationTestAbstract3 extends HeadlessWithBootstrapping protected IntegrationTestAbstract3( final LogConfig logConfig, final Module module) { - super(logConfig, module); + super(logConfig, addHeadlessTransactionSupport(module)); } - @Override + //[ahuber] hooks into the bootstrapping, such that the + // DefaultHeadlessTransactionSupport is registered as an additional service + private static Module addHeadlessTransactionSupport(Module module) { + module.getAdditionalServices().add(DefaultHeadlessTransactionSupport.class); + return module; + } + + @Override @Before public void bootstrapAndSetupIfRequired() { diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem_Transactions.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/DefaultHeadlessTransactionSupport.java similarity index 93% rename from core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem_Transactions.java rename to core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/DefaultHeadlessTransactionSupport.java index cb931cd..9b81c05 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem_Transactions.java +++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/components/DefaultHeadlessTransactionSupport.java @@ -17,25 +17,26 @@ * under the License. */ -package org.apache.isis.core.runtime.headless; +package org.apache.isis.core.integtestsupport.components; +import org.apache.isis.applib.annotation.DomainService; +import org.apache.isis.applib.annotation.NatureOfService; import org.apache.isis.applib.services.command.Command; import org.apache.isis.applib.services.command.CommandContext; import org.apache.isis.core.metamodel.services.ServicesInjector; +import org.apache.isis.core.runtime.headless.HeadlessTransactionSupport; import org.apache.isis.core.runtime.system.context.IsisContext; import org.apache.isis.core.runtime.system.persistence.PersistenceSession; import org.apache.isis.core.runtime.system.session.IsisSessionFactory; import org.apache.isis.core.runtime.system.transaction.IsisTransaction; -import org.apache.isis.core.runtime.system.transaction.IsisTransaction.State; import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager; +import org.apache.isis.core.runtime.system.transaction.IsisTransaction.State; -class IsisSystem_Transactions implements TransactionSupportInternal { +@DomainService(nature=NatureOfService.DOMAIN) +public class DefaultHeadlessTransactionSupport implements HeadlessTransactionSupport { - /** - * @deprecated - ought to be using regular domain services rather than reaching into the framework - */ - @Deprecated @Override - public void beginTran() { + @Override + public void beginTransaction() { final IsisTransactionManager transactionManager = getTransactionManager(); final IsisTransaction transaction = transactionManager.getCurrentTransaction(); @@ -73,10 +74,9 @@ class IsisSystem_Transactions implements TransactionSupportInternal { /** * Either commits or aborts the transaction, depending on the Transaction's {@link IsisTransaction#getState()} * - * @deprecated - ought to be using regular domain services rather than reaching into the framework */ - @Deprecated @Override - public void endTran() { + @Override + public void endTransaction() { final IsisTransactionManager transactionManager = getTransactionManager(); final IsisTransaction transaction = transactionManager.getCurrentTransaction(); if(transaction == null) { diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/TransactionSupportInternal.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessTransactionSupport.java similarity index 77% rename from core/runtime/src/main/java/org/apache/isis/core/runtime/headless/TransactionSupportInternal.java rename to core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessTransactionSupport.java index a14e4b7..9b293f4 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/TransactionSupportInternal.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessTransactionSupport.java @@ -20,11 +20,10 @@ package org.apache.isis.core.runtime.headless; /** - * [ahuber] temporal interface to ease refactoring and finally removal - * @deprecated ought to be using regular domain services rather than reaching into the framework + * Extends transaction management as required by integration tests. + * */ -@Deprecated -public interface TransactionSupportInternal { - void beginTran(); - void endTran(); +public interface HeadlessTransactionSupport { + void beginTransaction(); + void endTransaction(); } diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java index 903599c..a9147ac 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/HeadlessWithBootstrappingAbstract.java @@ -20,20 +20,19 @@ package org.apache.isis.core.runtime.headless; import java.io.PrintStream; -import com.google.common.base.Strings; - -import org.apache.log4j.PropertyConfigurator; -import org.joda.time.LocalDate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.slf4j.event.Level; - import org.apache.isis.applib.Module; import org.apache.isis.applib.clock.Clock; import org.apache.isis.applib.services.xactn.TransactionService; import org.apache.isis.core.commons.factory.InstanceUtil; import org.apache.isis.core.runtime.headless.logging.LogConfig; import org.apache.isis.core.runtime.headless.logging.LogStream; +import org.apache.log4j.PropertyConfigurator; +import org.joda.time.LocalDate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.event.Level; + +import com.google.common.base.Strings; /** * Provides headless access to the system, first bootstrapping the system if required. @@ -116,7 +115,7 @@ public abstract class HeadlessWithBootstrappingAbstract extends HeadlessAbstract } private void beginTransaction() { - IsisSystem.get().getTransactionSupportInternal().beginTran(); + IsisSystem.get().getService(HeadlessTransactionSupport.class).beginTransaction(); } protected void tearDownAllModules() { diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem.java index 0317ea6..3e1c9a0 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/headless/IsisSystem.java @@ -72,11 +72,9 @@ public class IsisSystem { public static void set(IsisSystem isft) { ISFT.set(isft); } - // -- Builder - public static class Builder<T extends Builder<T, S>, S extends IsisSystem> { protected AuthenticationRequest authenticationRequest = new AuthenticationRequestNameOnly("tester"); @@ -299,13 +297,4 @@ public class IsisSystem { return servicesInjector.lookupServiceElseFail(serviceClass); } - // -- Mixin for deprecated TransactionSupportInternal ([ahuber] refactored out of this class to ease removal) - - private final TransactionSupportInternal transactionSupportInternal = new IsisSystem_Transactions(); - - public TransactionSupportInternal getTransactionSupportInternal() { - return transactionSupportInternal; - } - - } -- To stop receiving notification emails like this one, please contact ahu...@apache.org.