You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/06/10 12:11:13 UTC
[isis] branch master updated: ISIS-2727: remove
AnonymousInteractionFactory
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
The following commit(s) were added to refs/heads/master by this push:
new fe9d58e ISIS-2727: remove AnonymousInteractionFactory
fe9d58e is described below
commit fe9d58ed13592b52377d80d92d91eed1102c40bd
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jun 10 14:10:57 2021 +0200
ISIS-2727: remove AnonymousInteractionFactory
(merge up into InteractionService)
remove InteractionFactory, as is now identical to InteractionService
rename InteractionFactoryDefault->
InteractionServiceDefault
also cleanup InteractionContextFactory
---
.../org/apache/isis/applib/clock/VirtualClock.java | 5 +-
.../services/iactnlayer/InteractionService.java | 24 ++++++-
.../isis/applib/services/user/UserMemento.java | 14 ++--
.../interaction/integration/IsisRequestCycle.java | 21 ++++--
.../interaction/session/InteractionFactory.java | 83 ----------------------
.../title/TitlesAndTranslationsValidator.java | 2 +-
.../core/runtime/context/RuntimeContextBase.java | 5 +-
.../IsisModuleCoreRuntimeServices.java | 4 +-
...Default.java => InteractionServiceDefault.java} | 37 +++-------
.../runtimeservices/sudo/SudoServiceDefault.java | 6 +-
.../wrapper/WrapperFactoryDefault.java | 6 +-
.../_testing/InteractionService_forTesting.java | 82 +++++++++++++++++++++
.../authentication/InteractionContextFactory.java | 22 ++----
.../manager/AnonymousInteractionFactory.java | 78 --------------------
.../manager/AuthenticationManager.java | 9 +--
.../AuthenticationManager_authenticators_Test.java | 14 ++--
...rdAuthenticationManager_AuthenticationTest.java | 4 +-
.../HealthIndicatorUsingHealthCheckService.java | 10 +--
.../main/java/demoapp/javafx/DemoAppJavaFx.java | 4 +-
.../java/demoapp/webapp/vaadin/DemoAppVaadin.java | 4 +-
.../secondary/job/ReplicateAndReplayJob.java | 8 +--
.../authenticator/AuthenticatorSecman.java | 6 +-
.../shiro/IsisModuleExtSecmanShiroRealm.java | 8 +--
.../viewer/javafx/model/context/UiContextFx.java | 4 +-
.../javafx/ui/components/object/ObjectViewFx.java | 9 +--
.../viewer/javafx/ui/main/MainViewFx.java | 6 +-
.../viewer/javafx/ui/main/UiActionHandlerFx.java | 6 +-
.../viewer/javafx/ui/main/UiContextFxDefault.java | 6 +-
.../viewer/vaadin/model/context/UiContextVaa.java | 2 +-
.../ui/auth/VaadinAuthenticationHandler.java | 8 +--
.../vaadin/ui/components/object/ObjectViewVaa.java | 2 +-
.../vaadin/ui/pages/main/UiActionHandlerVaa.java | 6 +-
.../vaadin/ui/pages/main/UiContextVaaDefault.java | 6 +-
.../viewer/IsisModuleIncViewerVaadinViewer.java | 6 +-
.../viewer/vaadin/viewer/IsisServletForVaadin.java | 14 ++--
.../jdo/JdoExceptionTranslationTest.java | 76 ++++++++++----------
...xceptionTranslationTest_usingTransactional.java | 14 ++--
...TransactionRollbackTest_usingTransactional.java | 54 +++++++-------
.../jdo/JdoTransactionScopeListenerTest.java | 52 +++++++-------
.../jpa/JpaExceptionTranslationTest.java | 82 ++++++++++-----------
...xceptionTranslationTest_usingTransactional.java | 16 ++---
.../jpa/JpaTransactionScopeListenerTest.java | 52 +++++++-------
.../applayer/ApplicationLayerTestFactory.java | 25 +++----
.../keycloak/webmodule/KeycloakFilter.java | 6 +-
.../shiro/authentication/AuthenticatorShiro.java | 6 +-
.../spring/webmodule/SpringSecurityFilter.java | 6 +-
.../applib/fixturescripts/FixtureScripts.java | 8 +--
.../testing/integtestsupport/applib/_Helper.java | 7 +-
.../tooling/javamodel/test/ProjectSamples.java | 2 +-
.../sse/ui/wkt/services/SseServiceDefault.java | 6 +-
..._ensureCompatibleAcceptHeader_ContractTest.java | 6 +-
.../viewer/resources/SwaggerSpecResource.java | 10 +--
.../IsisRestfulObjectsInteractionFilter.java | 10 +--
.../context/ResourceContext_getArg_Test.java | 6 +-
.../isis/viewer/wicket/ui/pages/WebPageBase.java | 8 +--
.../ui/pages/accmngt/EmailAvailableValidator.java | 10 +--
.../pages/accmngt/UsernameAvailableValidator.java | 10 +--
.../accmngt/password_reset/PasswordResetPage.java | 2 +-
.../accmngt/password_reset/PasswordResetPanel.java | 2 +-
.../ui/pages/accmngt/register/RegisterPanel.java | 6 +-
.../wicket/ui/panels/FormExecutorDefault.java | 5 +-
.../isis/viewer/wicket/ui/panels/PanelBase.java | 8 +--
.../AuthenticatedWebSessionForIsis.java | 8 +--
.../viewer/integration/LocalizerForIsis.java | 10 +--
.../viewer/integration/WebRequestCycleForIsis.java | 4 +-
...uthenticatedWebSessionForIsis_Authenticate.java | 20 +++---
.../AuthenticatedWebSessionForIsis_SignIn.java | 16 ++---
...uthenticatedWebSessionForIsis_TestAbstract.java | 10 +--
68 files changed, 511 insertions(+), 583 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/clock/VirtualClock.java b/api/applib/src/main/java/org/apache/isis/applib/clock/VirtualClock.java
index e01bf1d..0bbdc4c 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/clock/VirtualClock.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/clock/VirtualClock.java
@@ -34,14 +34,15 @@ import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.apache.isis.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
-import org.apache.isis.applib.services.iactnlayer.InteractionContext;
import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import lombok.NonNull;
import lombok.val;
/**
- * Works in connection with {@code org.apache.isis.core.interaction.session.InteractionFactory},
+ * Works in connection with {@link InteractionService},
* such that it allows an {@link Interaction}
* to run with its own simulated (or actual) time.
*
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/iactnlayer/InteractionService.java b/api/applib/src/main/java/org/apache/isis/applib/services/iactnlayer/InteractionService.java
index 200686e..18e8cc2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/iactnlayer/InteractionService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/iactnlayer/InteractionService.java
@@ -2,6 +2,8 @@ package org.apache.isis.applib.services.iactnlayer;
import java.util.concurrent.Callable;
+import org.springframework.boot.autoconfigure.neo4j.Neo4jProperties.Authentication;
+
import lombok.NonNull;
/**
@@ -65,6 +67,11 @@ public interface InteractionService {
@NonNull InteractionContext interactionContext);
/**
+ * closes all open {@link InteractionLayer}(s) as stacked on the current thread
+ */
+ void closeInteractionLayers();
+
+ /**
* @return whether the calling thread is within the context of an open {@link InteractionLayer}
*/
boolean isInInteraction();
@@ -96,7 +103,20 @@ public interface InteractionService {
void run(@NonNull InteractionContext interactionContext, @NonNull ThrowingRunnable runnable);
/**
- * closes all open {@link InteractionLayer}(s) as stacked on the current thread
+ * As per {@link #call(InteractionContext, Callable)}, but using an
+ * anonymous {@link InteractionContext}.
+ *
+ * @param <R>
+ * @param callable (non-null)
*/
- void closeInteractionLayers();
+ <R> R callAnonymous(@NonNull Callable<R> callable);
+
+ /**
+ * As per {@link #callAnonymous(Callable)}, but for a runnable.
+ *
+ * @param runnable (non-null)
+ */
+ void runAnonymous(@NonNull ThrowingRunnable runnable);
+
+
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
index 1b3213a..3ae84de 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.annotation.Optionality;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.services.iactnlayer.InteractionContext;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
@@ -204,10 +205,11 @@ public final class UserMemento implements Serializable {
public enum AuthenticationSource {
DEFAULT,
/**
- * Instructs the {@link org.apache.isis.core.security.authentication.manager.AuthenticationManager} to not cache this session in its internal map of
- * sessions by validation code, and therefore to ignore this aspect when considering if an
- * {@link Authentication} is
- * {@link org.apache.isis.core.security.authentication.manager.AuthenticationManager#isSessionValid(Authentication) valid} or not.
+ * Instructs the {@link org.apache.isis.core.security.authentication.manager.AuthenticationManager}
+ * to not cache this session in its internal map of sessions by validation code,
+ * and therefore to ignore this aspect when considering if an {@link InteractionContext} is
+ * {@link org.apache.isis.core.security.authentication.manager.AuthenticationManager#isSessionValid(Authentication) valid}
+ * or not.
*/
EXTERNAL;
@@ -216,6 +218,8 @@ public final class UserMemento implements Serializable {
}
}
+ private static final String DEFAULT_AUTH_VALID_CODE = "";
+
/**
* A unique code given to this user during authentication.
* <p>
@@ -226,7 +230,7 @@ public final class UserMemento implements Serializable {
@Property
@PropertyLayout(sequence = "2.1")
@Getter @Builder.Default @With(onMethod_ = {@Programmatic})
- private final @NonNull String authenticationCode = "";
+ private final @NonNull String authenticationCode = DEFAULT_AUTH_VALID_CODE;
// -- UTILITY
diff --git a/core/interaction/src/main/java/org/apache/isis/core/interaction/integration/IsisRequestCycle.java b/core/interaction/src/main/java/org/apache/isis/core/interaction/integration/IsisRequestCycle.java
index ed90701..2f6432c 100644
--- a/core/interaction/src/main/java/org/apache/isis/core/interaction/integration/IsisRequestCycle.java
+++ b/core/interaction/src/main/java/org/apache/isis/core/interaction/integration/IsisRequestCycle.java
@@ -21,7 +21,7 @@ package org.apache.isis.core.interaction.integration;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.user.ImpersonatedUserHolder;
-import org.apache.isis.core.security.authentication.InteractionContextFactory;
+import org.apache.isis.applib.services.user.UserMemento;
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -41,10 +41,12 @@ public class IsisRequestCycle {
public void onBeginRequest(final InteractionContext authenticatedContext) {
val contextToUse = impersonatedUserHolder.getUserMemento()
- .<InteractionContext>map(impersonatingUserMemento->
- InteractionContextFactory.valid(
- impersonatingUserMemento,
- authenticatedContext.getUser().getAuthenticationCode()))
+ .map(impersonatingUserMemento->
+ InteractionContext
+ .ofUserWithSystemDefaults(
+ merge(
+ authenticatedContext.getUser(),
+ impersonatingUserMemento)))
.orElse(authenticatedContext);
interactionService.openInteraction(contextToUse);
@@ -55,9 +57,16 @@ public class IsisRequestCycle {
}
public void onEndRequest() {
-
interactionService.closeInteractionLayers();
+ }
+
+ // -- HELPER
+ // not sure if this is strictly required; idea is to preserve some state from the origin user
+ private static UserMemento merge(UserMemento origin, UserMemento fake) {
+ return fake
+ .withAuthenticationSource(origin.getAuthenticationSource())
+ .withAuthenticationCode(origin.getAuthenticationCode());
}
diff --git a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionFactory.java b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionFactory.java
deleted file mode 100644
index 14f220d..0000000
--- a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionFactory.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.interaction.session;
-
-import java.util.concurrent.Callable;
-
-import org.apache.isis.applib.services.iactnlayer.InteractionContext;
-import org.apache.isis.applib.services.iactnlayer.InteractionLayer;
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
-import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
-import org.apache.isis.core.security.authentication.manager.AnonymousInteractionFactory;
-
-import lombok.NonNull;
-
-/**
- * The factory of {@link InteractionLayer}(s),
- * holding a reference to the current
- * {@link InteractionLayer authentication layer} stack using
- * a thread-local.
- *
- * <p>
- * @apiNote This is a framework internal class and so does not constitute a formal API.
- * </p>
- *
- * @since 2.0 {@index}
- */
-public interface InteractionFactory
-extends AnonymousInteractionFactory, InteractionService {
-
-// /**
-// * As per {@link #call(InteractionContext, Callable)}, using the {@link InteractionContext}
-// * {@link Authentication#getInteractionContext() obtained} from the provided {@link Authentication}.
-// *
-// * @param authentication - the user details to run under (non-null)
-// * @param callable - the piece of code to run (non-null)
-// */
-// <R> R callAuthenticated(@NonNull Authentication authentication, @NonNull Callable<R> callable);
-
- /**
- * As per {@link #call(InteractionContext, Callable)}, but using an
- * anonymous {@link InteractionContext}.
- *
- * @param <R>
- * @param callable (non-null)
- */
- @Override
- <R> R callAnonymous(@NonNull Callable<R> callable);
-
-// /**
-// * As per {@link #callAuthenticated(Authentication, Callable)}, but for a runnable.
-// *
-// * @param authentication - the user details to run under (non-null)
-// * @param runnable (non-null)
-// */
-// void runAuthenticated(@NonNull Authentication authentication, @NonNull ThrowingRunnable runnable);
-
- /**
- * As per {@link #callAnonymous(Callable)}, but for a runnable.
- *
- * @param runnable (non-null)
- */
- @Override
- void runAnonymous(@NonNull ThrowingRunnable runnable);
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitlesAndTranslationsValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitlesAndTranslationsValidator.java
index 270f674..47f2412 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitlesAndTranslationsValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/title/TitlesAndTranslationsValidator.java
@@ -143,7 +143,7 @@ extends MetaModelValidatorAbstract {
val translationService = super.getMetaModelContext().getTranslationService();
// as used by the Wicket UI?
- // final TranslationContext context = "org.apache.isis.core.interaction.session.InteractionFactory";
+ // final TranslationContext context = "org.apache.isis...InteractionService";
// see @ConfirmUiModel#translate()
val translationContext = TranslationContext.forClassName(MessageRegistry.class);
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContextBase.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContextBase.java
index 429009f..b711059 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContextBase.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/context/RuntimeContextBase.java
@@ -20,12 +20,11 @@ package org.apache.isis.core.runtime.context;
import java.util.function.Supplier;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.interaction.session.InteractionFactory;
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.core.interaction.session.InteractionTracker;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
@@ -69,7 +68,7 @@ public abstract class RuntimeContextBase implements RuntimeContext {
this.objectManager = mmc.getObjectManager();
this.transactionService = mmc.getTransactionService();
this.homePageSupplier = mmc::getHomePageAdapter;
- this.interactionService = serviceRegistry.lookupServiceElseFail(InteractionFactory.class);
+ this.interactionService = serviceRegistry.lookupServiceElseFail(InteractionService.class);
this.authenticationManager = serviceRegistry.lookupServiceElseFail(AuthenticationManager.class);
this.interactionTracker = serviceRegistry.lookupServiceElseFail(InteractionTracker.class);
}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
index 9291c88..4eef5f1 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
@@ -54,7 +54,7 @@ import org.apache.isis.core.runtimeservices.recognizer.dae.ExceptionRecognizerFo
import org.apache.isis.core.runtimeservices.repository.RepositoryServiceDefault;
import org.apache.isis.core.runtimeservices.routing.RoutingServiceDefault;
import org.apache.isis.core.runtimeservices.scratchpad.ScratchpadDefault;
-import org.apache.isis.core.runtimeservices.session.InteractionFactoryDefault;
+import org.apache.isis.core.runtimeservices.session.InteractionServiceDefault;
import org.apache.isis.core.runtimeservices.sudo.SudoServiceDefault;
import org.apache.isis.core.runtimeservices.transaction.TransactionServiceSpring;
import org.apache.isis.core.runtimeservices.urlencoding.UrlEncodingServiceWithCompression;
@@ -90,7 +90,7 @@ import org.apache.isis.core.runtimeservices.xmlsnapshot.XmlSnapshotServiceDefaul
ImpersonatedUserHolderDefault.class,
ImpersonateMenuAdvisorDefault.class,
InteractionDtoFactoryDefault.class,
- InteractionFactoryDefault.class,
+ InteractionServiceDefault.class,
JaxbServiceDefault.class,
TranslationServicePo.class,
MemberExecutorServiceDefault.class,
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionServiceDefault.java
similarity index 94%
rename from core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
rename to core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionServiceDefault.java
index 91038ea..a805b5e 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/InteractionServiceDefault.java
@@ -45,6 +45,7 @@ import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
import org.apache.isis.applib.services.iactnlayer.InteractionLayer;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.util.schema.ChangesDtoUtils;
@@ -60,7 +61,6 @@ import org.apache.isis.core.interaction.integration.InteractionAwareTransactiona
import org.apache.isis.core.interaction.scope.InteractionScopeAware;
import org.apache.isis.core.interaction.scope.InteractionScopeBeanFactoryPostProcessor;
import org.apache.isis.core.interaction.scope.InteractionScopeLifecycleHandler;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.InteractionTracker;
import org.apache.isis.core.interaction.session.IsisInteraction;
import org.apache.isis.core.metamodel.services.publishing.CommandPublisher;
@@ -82,14 +82,14 @@ import lombok.extern.log4j.Log4j2;
* @implNote holds a reference to the current session using a thread-local
*/
@Service
-@Named("isis.runtimeservices.InteractionFactoryDefault")
+@Named("isis.runtimeservices.InteractionServiceDefault")
@Order(OrderPrecedence.MIDPOINT)
@Primary
@Qualifier("Default")
@Log4j2
-public class InteractionFactoryDefault
+public class InteractionServiceDefault
implements
- InteractionFactory,
+ InteractionService,
InteractionTracker {
@Inject AuthenticationManager authenticationManager;
@@ -238,7 +238,9 @@ implements
@Override
@SneakyThrows
- public <R> R call(@NonNull InteractionContext interactionContext, @NonNull Callable<R> callable) {
+ public <R> R call(
+ final @NonNull InteractionContext interactionContext,
+ final @NonNull Callable<R> callable) {
final int stackSizeWhenEntering = interactionLayerStack.get().size();
openInteraction(interactionContext);
@@ -251,19 +253,12 @@ implements
}
}
-
-// @Override
-// @SneakyThrows
-// public <R> R callAuthenticated(
-// @NonNull final Authentication authentication,
-// @NonNull final Callable<R> callable) {
-//
-// return call(authentication.getInteractionContext(), callable);
-// }
-
@Override
@SneakyThrows
- public void run(@NonNull InteractionContext interactionContext, @NonNull ThrowingRunnable runnable) {
+ public void run(
+ final @NonNull InteractionContext interactionContext,
+ final @NonNull ThrowingRunnable runnable) {
+
final int stackSizeWhenEntering = interactionLayerStack.get().size();
openInteraction(interactionContext);
@@ -276,16 +271,6 @@ implements
}
-// @Override
-// @SneakyThrows
-// public void runAuthenticated(
-// @NonNull final Authentication authentication,
-// @NonNull final ThrowingRunnable runnable) {
-//
-// run(authentication.getInteractionContext(), runnable);
-// }
-
-
// -- ANONYMOUS EXECUTION
@Override
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sudo/SudoServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sudo/SudoServiceDefault.java
index b976bf7..7109942 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sudo/SudoServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sudo/SudoServiceDefault.java
@@ -32,11 +32,11 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.services.sudo.SudoService;
import org.apache.isis.applib.services.sudo.SudoServiceListener;
import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.InteractionTracker;
import lombok.NonNull;
@@ -53,7 +53,7 @@ import jakarta.annotation.PostConstruct;
@RequiredArgsConstructor(onConstructor_ = {@Inject})
public class SudoServiceDefault implements SudoService {
- private final InteractionFactory interactionFactory;
+ private final InteractionService interactionService;
private final InteractionTracker interactionTracker;
// -- LISTENERS
@@ -79,7 +79,7 @@ public class SudoServiceDefault implements SudoService {
try {
beforeCall(currentInteractionContext, sudoInteractionContext);
- return interactionFactory
+ return interactionService
.call(sudoInteractionContext, callable);
} finally {
afterCall(sudoInteractionContext, currentInteractionContext);
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
index 5a52903..e3f841f 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/WrapperFactoryDefault.java
@@ -50,6 +50,7 @@ import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.iactn.InteractionProvider;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
import org.apache.isis.applib.services.iactnlayer.InteractionLayer;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.services.metamodel.MetaModelService;
import org.apache.isis.applib.services.repository.RepositoryService;
@@ -82,7 +83,6 @@ import org.apache.isis.commons.collections.ImmutableEnumSet;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.commons.internal.proxy._ProxyFactoryService;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.InteractionTracker;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
@@ -588,7 +588,7 @@ public class WrapperFactoryDefault implements WrapperFactory {
private final Command parentCommand;
private final ServiceInjector serviceInjector;
- @Inject InteractionFactory interactionFactory;
+ @Inject InteractionService interactionService;
@Inject TransactionService transactionService;
@Inject CommandExecutorService commandExecutorService;
@Inject Provider<InteractionProvider> interactionProviderProvider;
@@ -599,7 +599,7 @@ public class WrapperFactoryDefault implements WrapperFactory {
@Override
public R call() {
serviceInjector.injectServicesInto(this);
- return interactionFactory.call(interactionContext, this::updateDomainObjectHonoringTransactionalPropagation);
+ return interactionService.call(interactionContext, this::updateDomainObjectHonoringTransactionalPropagation);
}
private R updateDomainObjectHonoringTransactionalPropagation() {
diff --git a/core/security/src/main/java/org/apache/isis/core/security/_testing/InteractionService_forTesting.java b/core/security/src/main/java/org/apache/isis/core/security/_testing/InteractionService_forTesting.java
new file mode 100644
index 0000000..34e36c4
--- /dev/null
+++ b/core/security/src/main/java/org/apache/isis/core/security/_testing/InteractionService_forTesting.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.core.security._testing;
+
+import java.util.concurrent.Callable;
+
+import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionLayer;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
+import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
+
+import lombok.NonNull;
+import lombok.SneakyThrows;
+
+/**
+ * A pass-through implementation, free of side-effects,
+ * in support of simple JUnit tests.
+ */
+public class InteractionService_forTesting
+implements InteractionService {
+
+ private boolean isInInteraction = false;
+
+ @Override
+ public InteractionLayer openInteraction() {
+ isInInteraction = true;
+ return null;
+ }
+
+ @Override
+ public InteractionLayer openInteraction(@NonNull InteractionContext interactionContext) {
+ return openInteraction();
+ }
+
+ @Override
+ public void closeInteractionLayers() {
+ isInInteraction = false;
+ }
+
+ @Override
+ public boolean isInInteraction() {
+ return isInInteraction;
+ }
+
+ @Override @SneakyThrows
+ public <R> R call(@NonNull InteractionContext interactionContext, @NonNull Callable<R> callable) {
+ return callable.call();
+ }
+
+ @Override @SneakyThrows
+ public void run(@NonNull InteractionContext interactionContext, @NonNull ThrowingRunnable runnable) {
+ runnable.run();
+ }
+
+
+ @Override @SneakyThrows
+ public void runAnonymous(@NonNull ThrowingRunnable runnable) {
+ runnable.run();
+ }
+
+ @Override @SneakyThrows
+ public <R> R callAnonymous(@NonNull Callable<R> callable) {
+ return callable.call();
+ }
+
+}
\ No newline at end of file
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/InteractionContextFactory.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/InteractionContextFactory.java
index b5fe369..ba9818b 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/InteractionContextFactory.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/InteractionContextFactory.java
@@ -22,17 +22,16 @@ import org.apache.isis.applib.services.iactnlayer.InteractionContext;
import org.apache.isis.applib.services.user.UserMemento;
import lombok.NonNull;
+import lombok.experimental.UtilityClass;
+@UtilityClass
public final class InteractionContextFactory {
- public static final String DEFAULT_AUTH_VALID_CODE = "";
-
public static InteractionContext anonymous() {
return InteractionContext
.ofUserWithSystemDefaults(
UserMemento
- .system()
- .withAuthenticationCode(DEFAULT_AUTH_VALID_CODE));
+ .system());
}
public static InteractionContext health() {
@@ -41,16 +40,14 @@ public final class InteractionContextFactory {
UserMemento
.ofNameAndRoleNames(
"__health", // user name
- "__health-role") // role(s)
- .withAuthenticationCode(DEFAULT_AUTH_VALID_CODE));
+ "__health-role")); // role(s)
}
public static InteractionContext testing() {
return InteractionContext
.ofUserWithSystemDefaults(
UserMemento
- .ofName("prototyping")
- .withAuthenticationCode(DEFAULT_AUTH_VALID_CODE));
+ .ofName("prototyping"));
}
public static InteractionContext testing(final @NonNull String authenticationCode) {
@@ -61,14 +58,5 @@ public final class InteractionContextFactory {
.withAuthenticationCode(authenticationCode));
}
- @Deprecated //TODO remove second arg or probably use InteractionContext.of... instead
- public static InteractionContext valid(
- final @NonNull UserMemento user,
- final @NonNull String authenticationCode) {
-
- return InteractionContext
- .ofUserWithSystemDefaults(
- user.withAuthenticationCode(authenticationCode));
- }
}
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AnonymousInteractionFactory.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AnonymousInteractionFactory.java
deleted file mode 100644
index 446e7fa..0000000
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AnonymousInteractionFactory.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.core.security.authentication.manager;
-
-import java.util.concurrent.Callable;
-
-import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
-
-import lombok.NonNull;
-import lombok.SneakyThrows;
-
-/**
- * Inversion of dependency pattern.
- * <p>
- * Introduced to allow the AuthenticationManager (module: security) access to the
- * InteractionFactory service (module: interaction),
- * which otherwise was not possible, due to Maven module dependencies (preventing circles).
- *
- * @apiNote This is a framework internal class and so does not constitute a formal API.
- *
- * @since 2.0 {@index}
- */
-public interface AnonymousInteractionFactory {
-
- /**
- * Executes a block of code with anonymous credentials.
- *
- * @param runnable
- */
- void runAnonymous(@NonNull ThrowingRunnable runnable);
-
- /**
- * Executes a block of code with anonymous credentials.
- *
- * @param <R>
- * @param callable (non-null)
- */
- <R> R callAnonymous(@NonNull Callable<R> callable);
-
-
- // -- JUNIT SUPPORT
-
- /**
- * Returns a pass-through implementation, free of side-effects,
- * in support of simple JUnit tests.
- */
- static AnonymousInteractionFactory forTesting() {
- return new AnonymousInteractionFactory() {
-
- @Override @SneakyThrows
- public void runAnonymous(@NonNull ThrowingRunnable runnable) {
- runnable.run();
- }
-
- @Override @SneakyThrows
- public <R> R callAnonymous(@NonNull Callable<R> callable) {
- return callable.call();
- }
-
- };
- }
-}
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AuthenticationManager.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AuthenticationManager.java
index 0b809e8..6192b9a 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AuthenticationManager.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/manager/AuthenticationManager.java
@@ -36,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.exceptions.unrecoverable.NoAuthenticatorException;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.util.ToString;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Timing;
@@ -59,7 +60,7 @@ public class AuthenticationManager {
@Getter private final @NonNull Can<Authenticator> authenticators;
private final Map<String, String> userByValidationCode = _Maps.newConcurrentHashMap();
- private final @NonNull AnonymousInteractionFactory anonymousInteractionFactory;
+ private final @NonNull InteractionService interactionService;
private final @NonNull RandomCodeGenerator randomCodeGenerator;
private final @NonNull Can<Registrar> registrars;
@@ -67,9 +68,9 @@ public class AuthenticationManager {
public AuthenticationManager(
final List<Authenticator> authenticators,
// needs @Lazy due to circular provisioning dependency
- final @Lazy AnonymousInteractionFactory anonymousInteractionFactory,
+ final @Lazy InteractionService anonymousInteractionFactory,
final RandomCodeGenerator randomCodeGenerator) {
- this.anonymousInteractionFactory = anonymousInteractionFactory;
+ this.interactionService = anonymousInteractionFactory;
this.randomCodeGenerator = randomCodeGenerator;
this.authenticators = Can.ofCollection(authenticators);
if (this.authenticators.isEmpty()) {
@@ -100,7 +101,7 @@ public class AuthenticationManager {
// open a new anonymous interaction for this loop to run in
// we simply participate with the current transaction
- return anonymousInteractionFactory.callAnonymous(()->{
+ return interactionService.callAnonymous(()->{
for (val authenticator : compatibleAuthenticators) {
val authentication = authenticator.authenticate(request, getUnusedRandomCode());
diff --git a/core/security/src/test/java/org/apache/isis/security/authentication/standard/AuthenticationManager_authenticators_Test.java b/core/security/src/test/java/org/apache/isis/security/authentication/standard/AuthenticationManager_authenticators_Test.java
index 5cc8756..0d67d00 100644
--- a/core/security/src/test/java/org/apache/isis/security/authentication/standard/AuthenticationManager_authenticators_Test.java
+++ b/core/security/src/test/java/org/apache/isis/security/authentication/standard/AuthenticationManager_authenticators_Test.java
@@ -23,17 +23,17 @@ import java.util.Collections;
import org.junit.Test;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.sameInstance;
+import static org.hamcrest.MatcherAssert.assertThat;
+
import org.apache.isis.applib.exceptions.unrecoverable.NoAuthenticatorException;
+import org.apache.isis.core.security._testing.InteractionService_forTesting;
import org.apache.isis.core.security.authentication.AuthenticationRequestPassword;
-import org.apache.isis.core.security.authentication.manager.AnonymousInteractionFactory;
import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
import org.apache.isis.core.security.authentication.standard.RandomCodeGeneratorDefault;
import org.apache.isis.security.AuthenticatorsForTesting;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.sameInstance;
-import static org.hamcrest.MatcherAssert.assertThat;
-
import lombok.val;
public class AuthenticationManager_authenticators_Test {
@@ -45,7 +45,7 @@ public class AuthenticationManager_authenticators_Test {
authenticationManager = new AuthenticationManager(
Collections.emptyList(),
- AnonymousInteractionFactory.forTesting(),
+ new InteractionService_forTesting(),
new RandomCodeGeneratorDefault());
authenticationManager.authenticate(new AuthenticationRequestPassword("foo", "bar"));
}
@@ -57,7 +57,7 @@ public class AuthenticationManager_authenticators_Test {
authenticationManager = new AuthenticationManager(
Collections.singletonList(auth),
- AnonymousInteractionFactory.forTesting(),
+ new InteractionService_forTesting(),
new RandomCodeGeneratorDefault());
assertThat(authenticationManager.getAuthenticators().size(), is(1));
assertThat(authenticationManager.getAuthenticators().getElseFail(0), is(sameInstance(auth)));
diff --git a/core/security/src/test/java/org/apache/isis/security/authentication/standard/StandardAuthenticationManager_AuthenticationTest.java b/core/security/src/test/java/org/apache/isis/security/authentication/standard/StandardAuthenticationManager_AuthenticationTest.java
index 241a53a..e462f8f 100644
--- a/core/security/src/test/java/org/apache/isis/security/authentication/standard/StandardAuthenticationManager_AuthenticationTest.java
+++ b/core/security/src/test/java/org/apache/isis/security/authentication/standard/StandardAuthenticationManager_AuthenticationTest.java
@@ -28,8 +28,8 @@ import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.core.security._testing.InteractionService_forTesting;
import org.apache.isis.core.security.authentication.AuthenticationRequestPassword;
-import org.apache.isis.core.security.authentication.manager.AnonymousInteractionFactory;
import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
import org.apache.isis.core.security.authentication.standard.RandomCodeGeneratorDefault;
import org.apache.isis.security.AuthenticatorsForTesting;
@@ -43,7 +43,7 @@ public class StandardAuthenticationManager_AuthenticationTest {
authenticationManager = new AuthenticationManager(
Collections.singletonList(AuthenticatorsForTesting.authenticatorValidForFoo()),
- AnonymousInteractionFactory.forTesting(),
+ new InteractionService_forTesting(),
new RandomCodeGeneratorDefault());
}
diff --git a/core/webapp/src/main/java/org/apache/isis/core/webapp/health/HealthIndicatorUsingHealthCheckService.java b/core/webapp/src/main/java/org/apache/isis/core/webapp/health/HealthIndicatorUsingHealthCheckService.java
index 6f561ec..1306752 100644
--- a/core/webapp/src/main/java/org/apache/isis/core/webapp/health/HealthIndicatorUsingHealthCheckService.java
+++ b/core/webapp/src/main/java/org/apache/isis/core/webapp/health/HealthIndicatorUsingHealthCheckService.java
@@ -28,7 +28,7 @@ import org.springframework.boot.actuate.health.Health;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.services.health.HealthCheckService;
-import org.apache.isis.core.interaction.session.InteractionFactory;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.core.security.authentication.InteractionContextFactory;
import lombok.val;
@@ -37,14 +37,14 @@ import lombok.val;
@Named("isis.webapp.HealthCheckService") // logical name appears in the endpoint
public class HealthIndicatorUsingHealthCheckService extends AbstractHealthIndicator {
- private final InteractionFactory isisInteractionFactory;
+ private final InteractionService interactionService;
private final Optional<HealthCheckService> healthCheckServiceIfAny;
@Inject
public HealthIndicatorUsingHealthCheckService(
- final InteractionFactory isisInteractionFactory,
+ final InteractionService interactionService,
final Optional<HealthCheckService> healthCheckServiceIfAny) {
- this.isisInteractionFactory = isisInteractionFactory;
+ this.interactionService = interactionService;
this.healthCheckServiceIfAny = healthCheckServiceIfAny;
}
@@ -52,7 +52,7 @@ public class HealthIndicatorUsingHealthCheckService extends AbstractHealthIndica
protected void doHealthCheck(Health.Builder builder) throws Exception {
val health = healthCheckServiceIfAny
.map(healthCheckService ->
- isisInteractionFactory
+ interactionService
.call(InteractionContextFactory.health(), healthCheckService::check))
.orElse(null);
if(health != null) {
diff --git a/examples/demo/javafx/src/main/java/demoapp/javafx/DemoAppJavaFx.java b/examples/demo/javafx/src/main/java/demoapp/javafx/DemoAppJavaFx.java
index 59c1a23..ab5b32a 100644
--- a/examples/demo/javafx/src/main/java/demoapp/javafx/DemoAppJavaFx.java
+++ b/examples/demo/javafx/src/main/java/demoapp/javafx/DemoAppJavaFx.java
@@ -24,7 +24,7 @@ import org.springframework.context.annotation.Import;
import org.apache.isis.commons.internal.debug._Probe;
import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.runtimeservices.session.InteractionFactoryDefault;
+import org.apache.isis.core.runtimeservices.session.InteractionServiceDefault;
import org.apache.isis.incubator.viewer.javafx.model.events.JavaFxViewerConfig;
import org.apache.isis.incubator.viewer.javafx.model.util._fx;
import org.apache.isis.incubator.viewer.javafx.viewer.IsisModuleIncViewerJavaFxViewer;
@@ -59,7 +59,7 @@ public class DemoAppJavaFx {
public static void main(String[] args) {
- IsisPresets.logging(InteractionFactoryDefault.class, "debug");
+ IsisPresets.logging(InteractionServiceDefault.class, "debug");
IsisPresets.logging(_Probe.class, "debug"); // enable debug entry logging
IsisPresets.prototyping(); // use prototyping mode as default, unless explicitly overridden (INCUBATING)
diff --git a/examples/demo/vaadin/src/main/java/demoapp/webapp/vaadin/DemoAppVaadin.java b/examples/demo/vaadin/src/main/java/demoapp/webapp/vaadin/DemoAppVaadin.java
index 0771e1d..fe86481 100644
--- a/examples/demo/vaadin/src/main/java/demoapp/webapp/vaadin/DemoAppVaadin.java
+++ b/examples/demo/vaadin/src/main/java/demoapp/webapp/vaadin/DemoAppVaadin.java
@@ -25,7 +25,7 @@ import org.springframework.context.annotation.Import;
import org.apache.isis.commons.internal.debug._Probe;
import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.runtimeservices.session.InteractionFactoryDefault;
+import org.apache.isis.core.runtimeservices.session.InteractionServiceDefault;
import org.apache.isis.incubator.viewer.vaadin.viewer.IsisModuleIncViewerVaadinViewer;
import org.apache.isis.valuetypes.asciidoc.ui.vaa.IsisModuleValAsciidocUiVaa;
import org.apache.isis.valuetypes.asciidoc.ui.wkt.IsisModuleValAsciidocUiWkt;
@@ -61,7 +61,7 @@ public class DemoAppVaadin extends SpringBootServletInitializer {
*/
public static void main(String[] args) {
- IsisPresets.logging(InteractionFactoryDefault.class, "debug");
+ IsisPresets.logging(InteractionServiceDefault.class, "debug");
// IsisPresets.logging(VaadinAuthenticationHandler.class, "debug");
// IsisPresets.logging(IsisServletForVaadin.class, "debug");
IsisPresets.logging(_Probe.class, "debug"); // enable debug entry logging
diff --git a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.java b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.java
index 0716308..ed9c3eb 100644
--- a/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.java
+++ b/extensions/core/command-replay/secondary/src/main/java/org/apache/isis/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.java
@@ -26,8 +26,8 @@ import org.quartz.JobExecutionContext;
import org.quartz.PersistJobDataAfterExecution;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.user.UserMemento;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.extensions.commandreplay.secondary.SecondaryStatus;
import org.apache.isis.extensions.commandreplay.secondary.config.SecondaryConfig;
import org.apache.isis.extensions.commandreplay.secondary.jobcallables.IsTickingClockInitialized;
@@ -64,7 +64,7 @@ public class ReplicateAndReplayJob implements Job {
}
}
- @Inject protected InteractionFactory isisInteractionFactory;
+ @Inject protected InteractionService interactionService;
private void exec(final JobExecutionContext quartzContext) {
val ssh = new SecondaryStatusData(quartzContext);
@@ -87,7 +87,7 @@ public class ReplicateAndReplayJob implements Job {
case OK:
val newStatus =
- isisInteractionFactory.call(authentication, new ReplicateAndRunCommands());
+ interactionService.call(authentication, new ReplicateAndRunCommands());
if(newStatus != null) {
ssh.setSecondaryStatus(newStatus);
@@ -105,7 +105,7 @@ public class ReplicateAndReplayJob implements Job {
}
private boolean isTickingClockInitialized(final InteractionContext authentication) {
- return isisInteractionFactory.call(authentication, new IsTickingClockInitialized());
+ return interactionService.call(authentication, new IsTickingClockInitialized());
}
}
diff --git a/extensions/security/secman/integration/src/main/java/org/apache/isis/extensions/secman/integration/authenticator/AuthenticatorSecman.java b/extensions/security/secman/integration/src/main/java/org/apache/isis/extensions/secman/integration/authenticator/AuthenticatorSecman.java
index f30f014..052a62d 100644
--- a/extensions/security/secman/integration/src/main/java/org/apache/isis/extensions/secman/integration/authenticator/AuthenticatorSecman.java
+++ b/extensions/security/secman/integration/src/main/java/org/apache/isis/extensions/secman/integration/authenticator/AuthenticatorSecman.java
@@ -27,7 +27,6 @@ import org.apache.isis.applib.services.user.UserMemento;
import org.apache.isis.core.security.authentication.AuthenticationRequest;
import org.apache.isis.core.security.authentication.AuthenticationRequestPassword;
import org.apache.isis.core.security.authentication.Authenticator;
-import org.apache.isis.core.security.authentication.InteractionContextFactory;
import org.apache.isis.extensions.secman.applib.role.dom.ApplicationRole;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUser;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepository;
@@ -79,8 +78,9 @@ public class AuthenticatorSecman implements Authenticator {
val roleNames = Stream.concat(
appUser.getRoles().stream().map(ApplicationRole::getName),
request.streamRoles());
- val user = UserMemento.ofNameAndRoleNames(username, roleNames);
- return InteractionContextFactory.valid(user, code);
+ val user = UserMemento.ofNameAndRoleNames(username, roleNames)
+ .withAuthenticationCode(code);
+ return InteractionContext.ofUserWithSystemDefaults(user);
})
.orElse(null);
}
diff --git a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanShiroRealm.java b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanShiroRealm.java
index f59e1e9..d8866e4 100644
--- a/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanShiroRealm.java
+++ b/extensions/security/secman/shiro-realm/src/main/java/org/apache/isis/extensions/secman/shiro/IsisModuleExtSecmanShiroRealm.java
@@ -37,17 +37,17 @@ import org.apache.shiro.subject.PrincipalCollection;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.support.TransactionTemplate;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.commons.internal.assertions._Assert;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Arrays;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.security.authorization.Authorizor;
import org.apache.isis.extensions.secman.applib.SecmanConfiguration;
-import org.apache.isis.extensions.secman.applib.user.spi.PasswordEncryptionService;
import org.apache.isis.extensions.secman.applib.user.dom.AccountType;
import org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepository;
+import org.apache.isis.extensions.secman.applib.user.spi.PasswordEncryptionService;
import org.apache.isis.extensions.secman.shiro.util.ShiroUtils;
import lombok.Getter;
@@ -61,7 +61,7 @@ public class IsisModuleExtSecmanShiroRealm extends AuthorizingRealm {
private static final String SECMAN_UNLOCK_DELEGATED_USERS = "isis.ext.secman.unlockDelegatedUsers";
@Inject protected ServiceInjector serviceInjector;
- @Inject protected InteractionFactory isisInteractionFactory;
+ @Inject protected InteractionService interactionService;
@Inject protected PlatformTransactionManager txMan;
@Inject private SecmanConfiguration configBean;
@Inject protected IsisConfiguration isisConfiguration;
@@ -279,7 +279,7 @@ public class IsisModuleExtSecmanShiroRealm extends AuthorizingRealm {
}
<V> V execute(final Supplier<V> closure) {
- return isisInteractionFactory.callAnonymous(
+ return interactionService.callAnonymous(
new Callable<V>() {
@Override
public V call() {
diff --git a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/context/UiContextFx.java b/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/context/UiContextFx.java
index 19192cd..5d5f71b 100644
--- a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/context/UiContextFx.java
+++ b/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/context/UiContextFx.java
@@ -22,7 +22,7 @@ import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
-import org.apache.isis.core.interaction.session.InteractionFactory;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.incubator.viewer.javafx.model.action.ActionUiModelFactoryFx;
import org.apache.isis.incubator.viewer.javafx.model.events.JavaFxViewerConfig;
@@ -39,7 +39,7 @@ public interface UiContextFx {
JavaFxViewerConfig getJavaFxViewerConfig();
- InteractionFactory getIsisInteractionFactory();
+ InteractionService getInteractionService();
ActionUiModelFactoryFx getActionUiModelFactory();
void setNewPageHandler(Consumer<Node> onNewPage);
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
index d5a9410..d098b9f 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/components/object/ObjectViewFx.java
@@ -48,13 +48,14 @@ import org.apache.isis.viewer.common.model.components.UiComponentFactory;
import org.apache.isis.viewer.common.model.decorator.disable.DisablingUiModel;
import org.apache.isis.viewer.common.model.gridlayout.UiGridLayout;
-import javafx.scene.control.TabPane;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.VBox;
import lombok.NonNull;
import lombok.val;
import lombok.extern.log4j.Log4j2;
+import javafx.scene.control.TabPane;
+import javafx.scene.layout.Pane;
+import javafx.scene.layout.VBox;
+
@Log4j2
public class ObjectViewFx extends VBox {
@@ -77,7 +78,7 @@ public class ObjectViewFx extends VBox {
final ManagedObject managedObject) {
log.info("binding object interaction to owner {}", managedObject.getSpecification().getIdentifier());
- _Assert.assertTrue(uiContext.getIsisInteractionFactory().isInInteraction(), "requires an active interaction");
+ _Assert.assertTrue(uiContext.getInteractionService().isInInteraction(), "requires an active interaction");
val objectTitle = ManagedObjects.titleOf(managedObject);
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MainViewFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MainViewFx.java
index 09c497c..7ec0abf 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MainViewFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/MainViewFx.java
@@ -23,7 +23,7 @@ import javax.inject.Inject;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.interaction.session.InteractionFactory;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
@@ -57,7 +57,7 @@ public class MainViewFx {
private final JavaFxViewerConfig viewerConfig;
private final MetaModelContext metaModelContext;
private final HeaderUiModelProvider headerUiModelProvider;
- private final InteractionFactory isisInteractionFactory;
+ private final InteractionService interactionService;
private final UiContextFx uiContext;
private final UiActionHandlerFx uiActionHandler;
private final UiComponentFactoryFx uiComponentFactory;
@@ -82,7 +82,7 @@ public class MainViewFx {
contentView.setVbarPolicy(ScrollBarPolicy.ALWAYS);
contentPane.setFillWidth(true);
//_fx.borderDashed(contentPane, Color.CRIMSON); //debug
- isisInteractionFactory.runAnonymous(this::buildMenu);
+ interactionService.runAnonymous(this::buildMenu);
renderHomepage();
}
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiActionHandlerFx.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiActionHandlerFx.java
index b536ba8..0b60646 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiActionHandlerFx.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiActionHandlerFx.java
@@ -22,8 +22,8 @@ import javax.inject.Inject;
import org.springframework.stereotype.Service;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
import org.apache.isis.core.metamodel.interactions.managed.ParameterNegotiationModel;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -46,7 +46,7 @@ import javafx.scene.layout.GridPane;
public class UiActionHandlerFx {
private final UiContextFx uiContext;
- private final InteractionFactory isisInteractionFactory;
+ private final InteractionService interactionService;
private final UiComponentFactoryFx uiComponentFactory;
public void handleActionLinkClicked(ManagedAction managedAction) {
@@ -107,7 +107,7 @@ public class UiActionHandlerFx {
ManagedAction managedAction,
Can<ManagedObject> params) {
- isisInteractionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
//Thread.sleep(1000); // simulate long running
diff --git a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiContextFxDefault.java b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiContextFxDefault.java
index 59d45bb..a2e0f3c 100644
--- a/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiContextFxDefault.java
+++ b/incubator/viewers/javafx/ui/src/main/java/org/apache/isis/incubator/viewer/javafx/ui/main/UiContextFxDefault.java
@@ -26,7 +26,7 @@ import javax.inject.Inject;
import org.springframework.stereotype.Service;
-import org.apache.isis.core.interaction.session.InteractionFactory;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.incubator.viewer.javafx.model.action.ActionUiModelFactoryFx;
import org.apache.isis.incubator.viewer.javafx.model.context.UiContextFx;
@@ -54,7 +54,7 @@ public class UiContextFxDefault implements UiContextFx {
@Getter(onMethod_ = {@Override})
private final JavaFxViewerConfig javaFxViewerConfig;
@Getter(onMethod_ = {@Override})
- private final InteractionFactory isisInteractionFactory;
+ private final InteractionService interactionService;
@Getter(onMethod_ = {@Override})
private final ActionUiModelFactoryFx actionUiModelFactory = new ActionUiModelFactoryFx();
@@ -72,7 +72,7 @@ public class UiContextFxDefault implements UiContextFx {
@Override
public void route(Supplier<ManagedObject> objectSupplier) {
- isisInteractionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
val object = objectSupplier.get();
route(object);
});
diff --git a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/context/UiContextVaa.java b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/context/UiContextVaa.java
index 5d2f187..910e826 100644
--- a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/context/UiContextVaa.java
+++ b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/context/UiContextVaa.java
@@ -31,7 +31,7 @@ public interface UiContextVaa {
//JavaFxViewerConfig getJavaFxViewerConfig();
- InteractionService getIsisInteractionFactory();
+ InteractionService getInteractionService();
//ActionUiModelFactoryFx getActionUiModelFactory();
void setNewPageHandler(Consumer<Component> onNewPage);
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/auth/VaadinAuthenticationHandler.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/auth/VaadinAuthenticationHandler.java
index 30f1025..a7d3064 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/auth/VaadinAuthenticationHandler.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/auth/VaadinAuthenticationHandler.java
@@ -33,8 +33,8 @@ import com.vaadin.flow.theme.lumo.Lumo;
import org.springframework.stereotype.Component;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.security.authentication.AuthenticationRequest;
import org.apache.isis.incubator.viewer.vaadin.ui.pages.login.VaadinLoginView;
@@ -59,7 +59,7 @@ implements
private static final long serialVersionUID = 1L;
- @Inject private transient InteractionFactory isisInteractionFactory;
+ @Inject private transient InteractionService interactionService;
@Inject private transient MetaModelContext metaModelContext;
@Override
@@ -99,7 +99,7 @@ implements
*/
public <R> R callAuthenticated(Callable<R> callable) {
return AuthSessionStoreUtil.get()
- .map(authentication->isisInteractionFactory.call(authentication, callable))
+ .map(authentication->interactionService.call(authentication, callable))
.orElse(null); // TODO redirect to login
}
@@ -121,7 +121,7 @@ implements
val authentication = AuthSessionStoreUtil.get().orElse(null);
if(authentication!=null) {
- isisInteractionFactory.openInteraction(authentication);
+ interactionService.openInteraction(authentication);
return; // access granted
}
// otherwise redirect to login page
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
index e59d90f..72c9be4 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/components/object/ObjectViewVaa.java
@@ -85,7 +85,7 @@ public class ObjectViewVaa extends VerticalLayout {
final ManagedObject managedObject) {
log.info("binding object interaction to owner {}", managedObject.getSpecification().getIdentifier());
- _Assert.assertTrue(uiContext.getIsisInteractionFactory().isInInteraction(), "requires an active interaction");
+ _Assert.assertTrue(uiContext.getInteractionService().isInInteraction(), "requires an active interaction");
val objectTitle = ManagedObjects.titleOf(managedObject);
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/UiActionHandlerVaa.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/UiActionHandlerVaa.java
index 2657c3b..fdee429 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/UiActionHandlerVaa.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/UiActionHandlerVaa.java
@@ -22,8 +22,8 @@ import javax.inject.Inject;
import org.springframework.stereotype.Service;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.incubator.viewer.vaadin.model.context.UiContextVaa;
@@ -40,7 +40,7 @@ import lombok.extern.log4j.Log4j2;
public class UiActionHandlerVaa {
private final UiContextVaa uiContext;
- private final InteractionFactory isisInteractionFactory;
+ private final InteractionService interactionService;
private final UiComponentFactoryVaa uiComponentFactory;
public void handleActionLinkClicked(ManagedAction managedAction) {
@@ -74,7 +74,7 @@ public class UiActionHandlerVaa {
ManagedAction managedAction,
Can<ManagedObject> params) {
- isisInteractionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
//Thread.sleep(1000); // simulate long running
diff --git a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/UiContextVaaDefault.java b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/UiContextVaaDefault.java
index 4915d0a..435e590 100644
--- a/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/UiContextVaaDefault.java
+++ b/incubator/viewers/vaadin/ui/src/main/java/org/apache/isis/incubator/viewer/vaadin/ui/pages/main/UiContextVaaDefault.java
@@ -28,7 +28,7 @@ import com.vaadin.flow.component.Component;
import org.springframework.stereotype.Service;
-import org.apache.isis.core.interaction.session.InteractionFactory;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.incubator.viewer.vaadin.model.context.UiContextVaa;
@@ -46,7 +46,7 @@ public class UiContextVaaDefault implements UiContextVaa {
// @Getter(onMethod_ = {@Override})
// private final JavaFxViewerConfig javaFxViewerConfig;
@Getter(onMethod_ = {@Override})
- private final InteractionFactory isisInteractionFactory;
+ private final InteractionService interactionService;
// @Getter(onMethod_ = {@Override})
// private final ActionUiModelFactoryFx actionUiModelFactory = new ActionUiModelFactoryFx();
@@ -64,7 +64,7 @@ public class UiContextVaaDefault implements UiContextVaa {
@Override
public void route(Supplier<ManagedObject> objectSupplier) {
- isisInteractionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
val object = objectSupplier.get();
route(object);
});
diff --git a/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisModuleIncViewerVaadinViewer.java b/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisModuleIncViewerVaadinViewer.java
index ca77f24..ead2a01 100644
--- a/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisModuleIncViewerVaadinViewer.java
+++ b/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisModuleIncViewerVaadinViewer.java
@@ -41,7 +41,7 @@ import org.springframework.util.ClassUtils;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
-import org.apache.isis.core.interaction.session.InteractionFactory;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.incubator.viewer.vaadin.ui.IsisModuleIncViewerVaadinUi;
import lombok.val;
@@ -71,7 +71,7 @@ public class IsisModuleIncViewerVaadinViewer {
@Inject private WebApplicationContext context;
@Inject private VaadinConfigurationProperties configurationProperties;
- @Inject private InteractionFactory interactionFactory;
+ @Inject private InteractionService interactionService;
/**
* Creates a {@link ServletContextInitializer} instance.
@@ -99,7 +99,7 @@ public class IsisModuleIncViewerVaadinViewer {
makeContextRelative(urlMapping.replace("*", "")));
}
val registration = new ServletRegistrationBean<SpringServlet>(
- new IsisServletForVaadin(interactionFactory, context, isRootMapping),
+ new IsisServletForVaadin(interactionService, context, isRootMapping),
urlMapping);
registration.setInitParameters(initParameters);
registration.setAsyncSupported(configurationProperties.isAsyncSupported());
diff --git a/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisServletForVaadin.java b/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisServletForVaadin.java
index 0ffa451..32eb657 100644
--- a/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisServletForVaadin.java
+++ b/incubator/viewers/vaadin/viewer/src/main/java/org/apache/isis/incubator/viewer/vaadin/viewer/IsisServletForVaadin.java
@@ -29,7 +29,7 @@ import com.vaadin.flow.spring.SpringServlet;
import org.springframework.context.ApplicationContext;
import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.core.interaction.session.InteractionFactory;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.incubator.viewer.vaadin.ui.auth.AuthSessionStoreUtil;
import lombok.NonNull;
@@ -47,14 +47,14 @@ extends SpringServlet {
private static final long serialVersionUID = 1L;
- private final InteractionFactory interactionFactory;
+ private final InteractionService interactionService;
public IsisServletForVaadin(
- @NonNull final InteractionFactory interactionFactory,
+ @NonNull final InteractionService interactionService,
@NonNull final ApplicationContext context,
final boolean forwardingEnforced) {
super(context, forwardingEnforced);
- this.interactionFactory = interactionFactory;
+ this.interactionService = interactionService;
}
@@ -68,7 +68,7 @@ extends SpringServlet {
log.debug("new request incoming (authentication={})", authentication);
if(authentication!=null) {
- interactionFactory.run(authentication, ()->{
+ interactionService.run(authentication, ()->{
super.service(request, response);
});
} else {
@@ -79,8 +79,8 @@ extends SpringServlet {
log.debug("request was successfully serviced (authentication={})", authentication);
- if(interactionFactory.isInInteraction()) {
- interactionFactory.closeInteractionLayers();
+ if(interactionService.isInInteraction()) {
+ interactionService.closeInteractionLayers();
log.warn("after servicing current request some interactions have been closed forcefully (authentication={})", authentication);
}
diff --git a/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoExceptionTranslationTest.java b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoExceptionTranslationTest.java
index d1af388..e3d122e 100644
--- a/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoExceptionTranslationTest.java
+++ b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoExceptionTranslationTest.java
@@ -37,10 +37,10 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.persistence.jdo.spring.integration.JdoTransactionManager;
import org.apache.isis.testdomain.conf.Configuration_usingJdo;
import org.apache.isis.testdomain.jdo.entities.JdoInventory;
@@ -48,21 +48,21 @@ import org.apache.isis.testdomain.jdo.entities.JdoInventory;
import lombok.val;
@SpringBootTest(
- classes = {
+ classes = {
Configuration_usingJdo.class,
})
@TestPropertySources({
- @TestPropertySource(IsisPresets.UseLog4j2Test)
+ @TestPropertySource(IsisPresets.UseLog4j2Test)
})
//@Transactional ... we manage transaction ourselves
class JdoExceptionTranslationTest
{
// @Inject private JdoSupportService JdoSupport;
-
+
@Inject private TransactionService transactionService;
@Inject private RepositoryService repositoryService;
- @Inject private InteractionFactory interactionFactory;
+ @Inject private InteractionService interactionService;
@Inject private JdoTransactionManager txManager;
@BeforeAll
@@ -71,75 +71,75 @@ class JdoExceptionTranslationTest
// Util_H2Console.main(null);
}
- @Test
+ @Test
void booksUniqueByIsbn_whenViolated_shouldThrowTranslatedException() {
-
+
transactionService.runTransactional(Propagation.REQUIRES_NEW, ()->{
-
- interactionFactory.runAnonymous(()->{
-
+
+ interactionService.runAnonymous(()->{
+
_TestFixtures.setUp3Books(repositoryService);
-
+
});
-
-
+
+
});
-
+
// when adding a book for which one with same ISBN already exists in the database,
- // we expect to see a Spring recognized DataAccessException been thrown
-
+ // we expect to see a Spring recognized DataAccessException been thrown
+
assertThrows(DataAccessException.class, ()->{
transactionService.runTransactional(Propagation.REQUIRES_NEW, ()->{
-
- interactionFactory.runAnonymous(()->{
-
+
+ interactionService.runAnonymous(()->{
+
// given
-
+
val inventories = repositoryService.allInstances(JdoInventory.class);
assertEquals(1, inventories.size());
-
+
val inventory = inventories.get(0);
assertNotNull(inventory);
-
-
+
+
// add a conflicting book (unique ISBN violation)
_TestFixtures.addABookTo(inventory);
-
+
});
-
+
})
.ifSuccess(__->fail("expected to fail, but did not"))
//.mapFailure(ex->_JdoExceptionTranslator.translate(ex, txManager))
.ifFailure(ex->assertTrue(ex instanceof DataIntegrityViolationException))
.optionalElseFail();
-
+
});
-
+
// expected post condition: ONE inventory with 3 books
-
+
transactionService.runTransactional(Propagation.REQUIRES_NEW, ()->{
-
- interactionFactory.runAnonymous(()->{
-
+
+ interactionService.runAnonymous(()->{
+
val inventories = repositoryService.allInstances(JdoInventory.class);
assertEquals(1, inventories.size());
-
+
val inventory = inventories.get(0);
assertNotNull(inventory);
-
+
assertNotNull(inventory);
assertNotNull(inventory.getProducts());
assertEquals(3, inventory.getProducts().size());
_TestFixtures.assertInventoryHasBooks(inventory.getProducts(), 1, 2, 3);
-
+
});
-
-
+
+
});
-
- }
+
+ }
}
diff --git a/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoExceptionTranslationTest_usingTransactional.java b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoExceptionTranslationTest_usingTransactional.java
index cfed472..ee720be 100644
--- a/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoExceptionTranslationTest_usingTransactional.java
+++ b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoExceptionTranslationTest_usingTransactional.java
@@ -41,10 +41,10 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
-import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
+import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.persistence.jdo.spring.integration.JdoTransactionManager;
import org.apache.isis.testdomain.conf.Configuration_usingJdo;
import org.apache.isis.testdomain.jdo.JdoInventoryDao;
@@ -67,7 +67,7 @@ class JdoExceptionTranslationTest_usingTransactional
//@Inject private JdoSupportService jdoSupport;
//@Inject private TransactionService transactionService;
@Inject private RepositoryService repositoryService;
- @Inject private InteractionFactory interactionFactory;
+ @Inject private InteractionService interactionService;
@Inject private Provider<JdoInventoryDao> inventoryDao;
@Inject private JdoTransactionManager txManager;
@@ -80,7 +80,7 @@ class JdoExceptionTranslationTest_usingTransactional
@Test @Order(1)
@Transactional @Rollback(false)
void booksUniqueByIsbn_setupPhase() {
- interactionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
_TestFixtures.setUp3Books(repositoryService);
@@ -98,7 +98,7 @@ class JdoExceptionTranslationTest_usingTransactional
assertThrows(DataIntegrityViolationException.class, ()->{
- interactionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
ThrowingRunnable.resultOf(uniqueConstraintViolator)
.ifSuccess(__->fail("expected to fail, but did not"))
@@ -118,7 +118,7 @@ class JdoExceptionTranslationTest_usingTransactional
// expected post condition: ONE inventory with 3 books
- interactionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
val inventories = repositoryService.allInstances(JdoInventory.class);
assertEquals(1, inventories.size());
@@ -140,7 +140,7 @@ class JdoExceptionTranslationTest_usingTransactional
@Transactional @Rollback(false)
void booksUniqueByIsbn_cleanupPhase() {
- interactionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
_TestFixtures.cleanUp(repositoryService);
diff --git a/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/transactions/jdo/JdoTransactionRollbackTest_usingTransactional.java b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/transactions/jdo/JdoTransactionRollbackTest_usingTransactional.java
index 4826bf4..f943bfc 100644
--- a/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/transactions/jdo/JdoTransactionRollbackTest_usingTransactional.java
+++ b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/transactions/jdo/JdoTransactionRollbackTest_usingTransactional.java
@@ -18,8 +18,6 @@
*/
package org.apache.isis.testdomain.transactions.jdo;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
import javax.inject.Inject;
import org.junit.jupiter.api.MethodOrderer;
@@ -30,9 +28,11 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Commit;
import org.springframework.transaction.annotation.Transactional;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.commons.internal.debug._Probe;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.testdomain.conf.Configuration_usingJdo;
import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
import org.apache.isis.testdomain.jdo.entities.JdoBook;
@@ -40,11 +40,11 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
/**
* These tests use the {@code @Transactional} annotation as provided by Spring.
- * <p>
- * We test whether JUnit Tests are automatically rolled back by Spring.
+ * <p>
+ * We test whether JUnit Tests are automatically rolled back by Spring.
*/
@SpringBootTest(
- classes = {
+ classes = {
Configuration_usingJdo.class
},
properties = {
@@ -52,59 +52,59 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
"logging.level.org.springframework.test.context.transaction.*=DEBUG",
"logging.level.org.datanucleus.*=DEBUG",
"logging.config=log4j2-debug-persistence.xml"
-
+
})
@Transactional
//@TestPropertySource(IsisPresets.UseLog4j2Test)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class JdoTransactionRollbackTest_usingTransactional
{
-
+
@Inject private FixtureScripts fixtureScripts;
@Inject private RepositoryService repository;
- @Inject private InteractionFactory interactionFactory;
-
+ @Inject private InteractionService interactionService;
+
@Test @Order(1) @Commit
void cleanup_justInCase() {
-
+
// cleanup just in case
fixtureScripts.runPersona(JdoTestDomainPersona.PurgeAll);
}
-
+
@Test @Order(2)
void happyCaseTx_shouldCommit() {
-
+
_Probe.errOut("before interaction");
-
- interactionFactory.runAnonymous(()->{
-
+
+ interactionService.runAnonymous(()->{
+
// expected pre condition
assertEquals(0, repository.allInstances(JdoBook.class).size());
-
+
_Probe.errOut("before fixture");
-
+
fixtureScripts.runPersona(JdoTestDomainPersona.InventoryWith1Book);
-
+
_Probe.errOut("after fixture");
-
+
// expected post condition
assertEquals(1, repository.allInstances(JdoBook.class).size());
-
-
+
+
});
-
+
_Probe.errOut("after interaction");
-
+
}
-
+
@Test @Order(3)
void previousTest_shouldHaveBeenRolledBack() {
- interactionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
// expected condition
assertEquals(0, repository.allInstances(JdoBook.class).size());
-
+
});
}
diff --git a/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/transactions/jdo/JdoTransactionScopeListenerTest.java b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/transactions/jdo/JdoTransactionScopeListenerTest.java
index bddc2da..246bfad 100644
--- a/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/transactions/jdo/JdoTransactionScopeListenerTest.java
+++ b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/transactions/jdo/JdoTransactionScopeListenerTest.java
@@ -18,8 +18,6 @@
*/
package org.apache.isis.testdomain.transactions.jdo;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
import javax.inject.Inject;
import org.junit.jupiter.api.BeforeEach;
@@ -27,10 +25,12 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.testdomain.conf.Configuration_usingJdo;
import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
import org.apache.isis.testdomain.jdo.entities.JdoBook;
@@ -39,7 +39,7 @@ import org.apache.isis.testdomain.util.kv.KVStoreForTesting;
import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
@SpringBootTest(
- classes = {
+ classes = {
Configuration_usingJdo.class,
InteractionBoundaryProbe.class
})
@@ -49,64 +49,64 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
* With this test we manage IsisInteractions ourselves. (not sub-classing IsisIntegrationTestAbstract)
*/
class JdoTransactionScopeListenerTest {
-
+
@Inject private FixtureScripts fixtureScripts;
@Inject private TransactionService transactionService;
@Inject private RepositoryService repository;
- @Inject private InteractionFactory isisInteractionFactory;
+ @Inject private InteractionService interactionService;
@Inject private KVStoreForTesting kvStoreForTesting;
-
+
/* Expectations:
* 1. for each InteractionScope there should be a new InteractionBoundaryProbe instance
* 2. for each Transaction the current InteractionBoundaryProbe should get notified
- *
+ *
* first we have 1 InteractionScope with 1 expected Transaction during 'setUp'
* then we have 1 InteractionScope with 3 expected Transactions within the test method
- *
+ *
*/
-
+
@BeforeEach
void setUp() {
-
+
// new InteractionScope with a new transaction (#1)
- isisInteractionFactory.runAnonymous(()->{
-
+ interactionService.runAnonymous(()->{
+
// cleanup
fixtureScripts.runPersona(JdoTestDomainPersona.PurgeAll);
-
+
});
-
+
}
-
+
@Test
void sessionScopedProbe_shouldBeReused_andBeAwareofTransactionBoundaries() {
-
+
// new InteractionScope with a new transaction (#2)
- isisInteractionFactory.runAnonymous(()->{
-
+ interactionService.runAnonymous(()->{
+
// expected pre condition
// reuse transaction (#2)
assertEquals(0, repository.allInstances(JdoBook.class).size());
-
+
// reuse transaction (#2)
transactionService.runWithinCurrentTransactionElseCreateNew(()->{
-
+
fixtureScripts.runPersona(JdoTestDomainPersona.InventoryWith1Book);
-
+
});
-
+
// expected post condition
// reuse transaction (#2)
assertEquals(1, repository.allInstances(JdoBook.class).size());
-
+
});
-
+
assertEquals(2, InteractionBoundaryProbe.totalInteractionsStarted(kvStoreForTesting));
assertEquals(2, InteractionBoundaryProbe.totalInteractionsEnded(kvStoreForTesting));
assertEquals(2, InteractionBoundaryProbe.totalTransactionsEnding(kvStoreForTesting));
assertEquals(2, InteractionBoundaryProbe.totalTransactionsCommitted(kvStoreForTesting));
}
-
+
}
diff --git a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest.java b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest.java
index 983ce9c..bbe9fc5 100644
--- a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest.java
+++ b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest.java
@@ -32,37 +32,37 @@ import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.TestPropertySources;
import org.springframework.transaction.annotation.Propagation;
-import static org.junit.Assert.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.testdomain.conf.Configuration_usingJpa;
import org.apache.isis.testdomain.jpa.entities.JpaInventory;
import lombok.val;
@SpringBootTest(
- classes = {
+ classes = {
Configuration_usingJpa.class,
})
@TestPropertySources({
- @TestPropertySource(IsisPresets.UseLog4j2Test)
+ @TestPropertySource(IsisPresets.UseLog4j2Test)
})
//@Transactional ... we manage transaction ourselves
class JpaExceptionTranslationTest
{
// @Inject private JpaSupportService jpaSupport;
-
+
@Inject private TransactionService transactionService;
@Inject private RepositoryService repositoryService;
- @Inject private InteractionFactory interactionFactory;
+ @Inject private InteractionService interactionService;
@Inject private JpaTransactionManager txManager;
@BeforeAll
@@ -71,76 +71,76 @@ class JpaExceptionTranslationTest
// Util_H2Console.main(null);
}
- @Test
+ @Test
void booksUniqueByIsbn_whenViolated_shouldThrowTranslatedException() {
-
+
transactionService.runTransactional(Propagation.REQUIRES_NEW, ()->{
-
- interactionFactory.runAnonymous(()->{
-
+
+ interactionService.runAnonymous(()->{
+
_TestFixtures.setUp3Books(repositoryService);
-
+
});
-
-
+
+
});
-
+
// when adding a book for which one with same ISBN already exists in the database,
- // we expect to see a Spring recognized DataAccessException been thrown
-
+ // we expect to see a Spring recognized DataAccessException been thrown
+
assertThrows(DataAccessException.class, ()->{
-
+
transactionService.runTransactional(Propagation.REQUIRES_NEW, ()->{
-
- interactionFactory.runAnonymous(()->{
-
+
+ interactionService.runAnonymous(()->{
+
// given
-
+
val inventories = repositoryService.allInstances(JpaInventory.class);
assertEquals(1, inventories.size());
-
+
val inventory = inventories.get(0);
assertNotNull(inventory);
-
-
+
+
// add a conflicting book (unique ISBN violation)
_TestFixtures.addABookTo(inventory);
-
+
});
-
+
})
.ifSuccess(__->fail("expected to fail, but did not"))
- //.mapFailure(ex->_JpaExceptionTranslator.translate(ex, txManager))
+ //.mapFailure(ex->_JpaExceptionTranslator.translate(ex, txManager))
.ifFailure(ex->assertTrue(ex instanceof DataIntegrityViolationException))
.optionalElseFail();
-
+
});
-
+
// expected post condition: ONE inventory with 3 books
-
+
transactionService.runTransactional(Propagation.REQUIRES_NEW, ()->{
-
- interactionFactory.runAnonymous(()->{
-
+
+ interactionService.runAnonymous(()->{
+
val inventories = repositoryService.allInstances(JpaInventory.class);
assertEquals(1, inventories.size());
-
+
val inventory = inventories.get(0);
assertNotNull(inventory);
-
+
assertNotNull(inventory);
assertNotNull(inventory.getProducts());
assertEquals(3, inventory.getProducts().size());
_TestFixtures.assertInventoryHasBooks(inventory.getProducts(), 1, 2, 3);
-
+
});
-
-
+
+
});
-
+
}
-
+
}
\ No newline at end of file
diff --git a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest_usingTransactional.java b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest_usingTransactional.java
index 32d433e..2c1d50c 100644
--- a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest_usingTransactional.java
+++ b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/persistence/jpa/JpaExceptionTranslationTest_usingTransactional.java
@@ -36,16 +36,16 @@ import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.TestPropertySources;
import org.springframework.transaction.annotation.Transactional;
-import static org.junit.Assert.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
-import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
+import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.testdomain.conf.Configuration_usingJpa;
import org.apache.isis.testdomain.jpa.JpaInventoryDao;
import org.apache.isis.testdomain.jpa.entities.JpaInventory;
@@ -67,7 +67,7 @@ class JpaExceptionTranslationTest_usingTransactional
//@Inject private JpaSupportService jpaSupport;
//@Inject private TransactionService transactionService;
@Inject private RepositoryService repositoryService;
- @Inject private InteractionFactory interactionFactory;
+ @Inject private InteractionService interactionService;
@Inject private Provider<JpaInventoryDao> inventoryDao;
@Inject private JpaTransactionManager txManager;
@@ -80,7 +80,7 @@ class JpaExceptionTranslationTest_usingTransactional
@Test @Order(1)
@Transactional @Rollback(false)
void booksUniqueByIsbn_setupPhase() {
- interactionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
_TestFixtures.setUp3Books(repositoryService);
@@ -98,7 +98,7 @@ class JpaExceptionTranslationTest_usingTransactional
assertThrows(DataIntegrityViolationException.class, ()->{
- interactionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
ThrowingRunnable.resultOf(uniqueConstraintViolator)
.ifSuccess(__->fail("expected to fail, but did not"))
@@ -118,7 +118,7 @@ class JpaExceptionTranslationTest_usingTransactional
// expected post condition: ONE inventory with 3 books
- interactionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
val inventories = repositoryService.allInstances(JpaInventory.class);
assertEquals(1, inventories.size());
@@ -140,7 +140,7 @@ class JpaExceptionTranslationTest_usingTransactional
@Transactional @Rollback(false)
void booksUniqueByIsbn_cleanupPhase() {
- interactionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
_TestFixtures.cleanUp(repositoryService);
diff --git a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/transactions/jpa/JpaTransactionScopeListenerTest.java b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/transactions/jpa/JpaTransactionScopeListenerTest.java
index d33bafc..066afdb 100644
--- a/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/transactions/jpa/JpaTransactionScopeListenerTest.java
+++ b/regressiontests/stable-persistence-jpa/src/test/java/org/apache/isis/testdomain/transactions/jpa/JpaTransactionScopeListenerTest.java
@@ -18,8 +18,6 @@
*/
package org.apache.isis.testdomain.transactions.jpa;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
import javax.inject.Inject;
import org.junit.jupiter.api.BeforeEach;
@@ -27,10 +25,12 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.testdomain.conf.Configuration_usingJpa;
import org.apache.isis.testdomain.jpa.JpaTestDomainPersona;
import org.apache.isis.testdomain.jpa.entities.JpaBook;
@@ -39,7 +39,7 @@ import org.apache.isis.testdomain.util.kv.KVStoreForTesting;
import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
@SpringBootTest(
- classes = {
+ classes = {
Configuration_usingJpa.class,
InteractionBoundaryProbe.class
})
@@ -48,64 +48,64 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
* With this test we manage IsisInteractions ourselves. (not sub-classing IsisIntegrationTestAbstract)
*/
class JpaTransactionScopeListenerTest {
-
+
@Inject private FixtureScripts fixtureScripts;
@Inject private TransactionService transactionService;
@Inject private RepositoryService repository;
- @Inject private InteractionFactory isisInteractionFactory;
+ @Inject private InteractionService interactionService;
@Inject private KVStoreForTesting kvStoreForTesting;
-
+
/* Expectations:
* 1. for each InteractionScope there should be a new InteractionBoundaryProbe instance
* 2. for each Transaction the current InteractionBoundaryProbe should get notified
- *
+ *
* first we have 1 InteractionScope with 1 expected Transaction during 'setUp'
* then we have 1 InteractionScope with 1 expected Transaction within the test method
- *
+ *
*/
-
+
@BeforeEach
void setUp() {
-
+
// new IsisInteractionScope with a new transaction (#1)
- isisInteractionFactory.runAnonymous(()->{
-
+ interactionService.runAnonymous(()->{
+
// cleanup
fixtureScripts.runPersona(JpaTestDomainPersona.PurgeAll);
-
+
});
-
+
}
-
+
@Test
void sessionScopedProbe_shouldBeReused_andBeAwareofTransactionBoundaries() {
-
+
// new IsisInteractionScope with a new transaction (#2)
- isisInteractionFactory.runAnonymous(()->{
-
+ interactionService.runAnonymous(()->{
+
// expected pre condition
// reuse transaction (#2)
assertEquals(0, repository.allInstances(JpaBook.class).size());
-
+
// reuse transaction (#2)
transactionService.runWithinCurrentTransactionElseCreateNew(()->{
-
+
fixtureScripts.runPersona(JpaTestDomainPersona.InventoryWith1Book);
-
+
});
-
+
// expected post condition
// reuse transaction (#2)
assertEquals(1, repository.allInstances(JpaBook.class).size());
-
+
});
-
+
assertEquals(2, InteractionBoundaryProbe.totalInteractionsStarted(kvStoreForTesting));
assertEquals(2, InteractionBoundaryProbe.totalInteractionsEnded(kvStoreForTesting));
assertEquals(2, InteractionBoundaryProbe.totalTransactionsEnding(kvStoreForTesting));
assertEquals(2, InteractionBoundaryProbe.totalTransactionsCommitted(kvStoreForTesting));
}
-
+
}
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java
index 7d33ac7..2021946 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/applayer/ApplicationLayerTestFactory.java
@@ -18,13 +18,6 @@
*/
package org.apache.isis.testdomain.applayer;
-import static org.apache.isis.applib.services.wrapper.control.AsyncControl.returningVoid;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.fail;
-import static org.junit.jupiter.api.DynamicTest.dynamicTest;
-
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
@@ -45,8 +38,15 @@ import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.DynamicTest.dynamicTest;
+
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.wrapper.DisabledException;
import org.apache.isis.applib.services.wrapper.WrapperFactory;
@@ -58,7 +58,6 @@ import org.apache.isis.commons.internal.debug._Probe;
import org.apache.isis.commons.internal.debug.xray.XrayUi;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.commons.internal.functions._Functions.CheckedConsumer;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.InteractionTracker;
import org.apache.isis.core.metamodel.interactions.managed.PropertyInteraction;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
@@ -71,6 +70,8 @@ import org.apache.isis.testdomain.jdo.entities.JdoInventory;
import org.apache.isis.testdomain.jdo.entities.JdoProduct;
import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
+import static org.apache.isis.applib.services.wrapper.control.AsyncControl.returningVoid;
+
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.val;
@@ -88,7 +89,7 @@ public class ApplicationLayerTestFactory {
private final ObjectManager objectManager;
private final FixtureScripts fixtureScripts;
private final PreCommitListener preCommitListener;
- private final InteractionFactory interactionFactory;
+ private final InteractionService interactionService;
private final InteractionTracker interactionTracker;
@Named("transaction-aware-pmf-proxy")
@@ -176,10 +177,10 @@ public class ApplicationLayerTestFactory {
xrayAddTest(displayName);
- assertFalse(interactionFactory.isInInteraction());
+ assertFalse(interactionService.isInInteraction());
assert_no_initial_tx_context();
- final boolean isSuccesfulRun = interactionFactory.callAnonymous(()->{
+ final boolean isSuccesfulRun = interactionService.callAnonymous(()->{
val currentInteraction = interactionTracker.currentInteraction();
xrayEnterInteraction(currentInteraction);
val result = interactionTestRunner.run(given, verifier);
@@ -187,7 +188,7 @@ public class ApplicationLayerTestFactory {
return result;
});
- interactionFactory.closeInteractionLayers();
+ interactionService.closeInteractionLayers();
if(isSuccesfulRun) {
verifier.accept(onSuccess);
diff --git a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/KeycloakFilter.java b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/KeycloakFilter.java
index 6f423ea..83f6f34 100644
--- a/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/KeycloakFilter.java
+++ b/security/keycloak/src/main/java/org/apache/isis/security/keycloak/webmodule/KeycloakFilter.java
@@ -35,9 +35,9 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.user.UserMemento;
import org.apache.isis.applib.services.user.UserMemento.AuthenticationSource;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import lombok.val;
@@ -46,7 +46,7 @@ import lombok.val;
*/
public class KeycloakFilter implements Filter {
- @Autowired private InteractionFactory interactionFactory;
+ @Autowired private InteractionService interactionService;
@Override
public void doFilter(
@@ -69,7 +69,7 @@ public class KeycloakFilter implements Filter {
.withAuthenticationSource(AuthenticationSource.EXTERNAL)
.withAuthenticationCode(subjectHeader);
- interactionFactory.run(
+ interactionService.run(
InteractionContext.ofUserWithSystemDefaults(user),
()->filterChain.doFilter(servletRequest, servletResponse));
}
diff --git a/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/AuthenticatorShiro.java b/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/AuthenticatorShiro.java
index 6100f1e..7b20c70 100644
--- a/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/AuthenticatorShiro.java
+++ b/security/shiro/src/main/java/org/apache/isis/security/shiro/authentication/AuthenticatorShiro.java
@@ -54,7 +54,6 @@ import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.security.authentication.AuthenticationRequest;
import org.apache.isis.core.security.authentication.AuthenticationRequestPassword;
import org.apache.isis.core.security.authentication.Authenticator;
-import org.apache.isis.core.security.authentication.InteractionContextFactory;
import org.apache.isis.core.security.authorization.Authorizor;
import org.apache.isis.security.shiro.context.ShiroSecurityContext;
@@ -172,8 +171,9 @@ public class AuthenticatorShiro implements Authenticator {
// (this is used by the Wicket viewer, for example).
request.streamRoles());
- val user = UserMemento.ofNameAndRoleNames(request.getName(), roles);
- return InteractionContextFactory.valid(user, validationCode);
+ val user = UserMemento.ofNameAndRoleNames(request.getName(), roles)
+ .withAuthenticationCode(validationCode);
+ return InteractionContext.ofUserWithSystemDefaults(user);
}
/**
diff --git a/security/spring/src/main/java/org/apache/isis/security/spring/webmodule/SpringSecurityFilter.java b/security/spring/src/main/java/org/apache/isis/security/spring/webmodule/SpringSecurityFilter.java
index 3db1afd..9199df0 100644
--- a/security/spring/src/main/java/org/apache/isis/security/spring/webmodule/SpringSecurityFilter.java
+++ b/security/spring/src/main/java/org/apache/isis/security/spring/webmodule/SpringSecurityFilter.java
@@ -33,9 +33,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.user.UserMemento;
import org.apache.isis.applib.services.user.UserMemento.AuthenticationSource;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.security.spring.authconverters.AuthenticationConverter;
import lombok.val;
@@ -46,7 +46,7 @@ import lombok.val;
//@Log4j2
public class SpringSecurityFilter implements Filter {
- @Autowired private InteractionFactory interactionFactory;
+ @Autowired private InteractionService interactionService;
@Override
public void doFilter(
@@ -84,7 +84,7 @@ public class SpringSecurityFilter implements Filter {
userMemento = userMemento.withRoleAdded("org.apache.isis.viewer.wicket.roles.USER")
.withAuthenticationSource(AuthenticationSource.EXTERNAL);
- interactionFactory.run(
+ interactionService.run(
InteractionContext.ofUserWithSystemDefaults(userMemento),
()->filterChain.doFilter(servletRequest, servletResponse));
}
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScripts.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScripts.java
index 382609a..e76278f 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScripts.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/fixturescripts/FixtureScripts.java
@@ -42,6 +42,7 @@ import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.RestrictTo;
import org.apache.isis.applib.services.eventbus.EventBusService;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.applib.services.jaxb.JaxbService;
import org.apache.isis.applib.services.registry.ServiceRegistry;
@@ -51,7 +52,6 @@ import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
import org.apache.isis.testing.fixtures.applib.events.FixturesInstalledEvent;
import org.apache.isis.testing.fixtures.applib.events.FixturesInstallingEvent;
@@ -87,7 +87,7 @@ public class FixtureScripts {
@Inject private RepositoryService repositoryService;
@Inject private TransactionService transactionService;
@Inject private ExecutionParametersService executionParametersService;
- @Inject private InteractionFactory isisInteractionFactory;
+ @Inject private InteractionService interactionService;
@Inject private EventBusService eventBusService;
@@ -422,7 +422,7 @@ public class FixtureScripts {
val singleScript = toSingleScript(fixtureScriptList);
String parameters = null;
- isisInteractionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
transactionService.runWithinCurrentTransactionElseCreateNew(()->{
runScript(singleScript, parameters);
});
@@ -456,7 +456,7 @@ public class FixtureScripts {
@Programmatic
public <T> T runBuilder(final BuilderScriptAbstract<T> builderScript) {
- return isisInteractionFactory.callAnonymous(()->
+ return interactionService.callAnonymous(()->
transactionService.callWithinCurrentTransactionElseCreateNew(()->
runBuilderScriptNonTransactional(builderScript)
)
diff --git a/testing/integtestsupport/applib/src/main/java/org/apache/isis/testing/integtestsupport/applib/_Helper.java b/testing/integtestsupport/applib/src/main/java/org/apache/isis/testing/integtestsupport/applib/_Helper.java
index b9316bc..8c93098 100644
--- a/testing/integtestsupport/applib/src/main/java/org/apache/isis/testing/integtestsupport/applib/_Helper.java
+++ b/testing/integtestsupport/applib/src/main/java/org/apache/isis/testing/integtestsupport/applib/_Helper.java
@@ -23,9 +23,8 @@ import java.util.Optional;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerService;
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.applib.services.iactnlayer.InteractionService;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
class _Helper {
@@ -38,9 +37,9 @@ class _Helper {
// -- SHORTCUTS
- static Optional<InteractionFactory> getInteractionFactory(final ExtensionContext extensionContext) {
+ static Optional<InteractionService> getInteractionFactory(final ExtensionContext extensionContext) {
return getServiceRegistry(extensionContext)
- .flatMap(serviceRegistry->serviceRegistry.lookupService(InteractionFactory.class));
+ .flatMap(serviceRegistry->serviceRegistry.lookupService(InteractionService.class));
}
static Optional<ExceptionRecognizerService> getExceptionRecognizerService(
diff --git a/tooling/javamodel/src/test/java/org/apache/isis/tooling/javamodel/test/ProjectSamples.java b/tooling/javamodel/src/test/java/org/apache/isis/tooling/javamodel/test/ProjectSamples.java
index 3494a40..b8af943 100644
--- a/tooling/javamodel/src/test/java/org/apache/isis/tooling/javamodel/test/ProjectSamples.java
+++ b/tooling/javamodel/src/test/java/org/apache/isis/tooling/javamodel/test/ProjectSamples.java
@@ -81,7 +81,7 @@ class ProjectSamples {
assertTrue(sources.contains("o.a.i/core/runtime/events/persistence/TimestampService.java"));
assertTrue(sources.contains("o.a.i/core/runtime/events/RuntimeEventService.java"));
assertTrue(sources.contains("o.a.i/core/runtime/iactn/IsisInteraction.java"));
- assertTrue(sources.contains("o.a.i/core/runtime/iactn/InteractionFactory.java"));
+ assertTrue(sources.contains("o.a.i/core/runtime/iactn/InteractionService.java"));
assertTrue(sources.contains("o.a.i/core/runtime/iactn/InteractionTracker.java"));
assertTrue(sources.contains("o.a.i/core/runtime/iactn/scope/IsisInteractionScope.java"));
assertTrue(sources.contains("o.a.i/core/runtime/iactn/scope/IsisInteractionScopeBeanFactoryPostProcessor.java"));
diff --git a/valuetypes/sse/ui/wicket/src/main/java/org/apache/isis/valuetypes/sse/ui/wkt/services/SseServiceDefault.java b/valuetypes/sse/ui/wicket/src/main/java/org/apache/isis/valuetypes/sse/ui/wkt/services/SseServiceDefault.java
index 785aa07..36179a5 100644
--- a/valuetypes/sse/ui/wicket/src/main/java/org/apache/isis/valuetypes/sse/ui/wkt/services/SseServiceDefault.java
+++ b/valuetypes/sse/ui/wicket/src/main/java/org/apache/isis/valuetypes/sse/ui/wkt/services/SseServiceDefault.java
@@ -40,9 +40,9 @@ import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.valuetypes.sse.applib.annotations.SseSource;
import org.apache.isis.valuetypes.sse.applib.service.SseChannel;
import org.apache.isis.valuetypes.sse.applib.service.SseService;
@@ -69,7 +69,7 @@ import lombok.extern.log4j.Log4j2;
public class SseServiceDefault implements SseService {
@Inject private TransactionService transactionService;
- @Inject private InteractionFactory isisInteractionFactory;
+ @Inject private InteractionService interactionService;
private final EventStreamPool eventStreamPool = new EventStreamPool();
@@ -97,7 +97,7 @@ public class SseServiceDefault implements SseService {
// spawn a new thread that gets its own session
CompletableFuture.runAsync(()->{
- isisInteractionFactory.runAnonymous(()->{
+ interactionService.runAnonymous(()->{
transactionService.runWithinCurrentTransactionElseCreateNew(()->run(task));
});
diff --git a/viewers/restfulobjects/testing/src/main/java/org/apache/isis/viewer/restfulobjects/testing/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java b/viewers/restfulobjects/testing/src/main/java/org/apache/isis/viewer/restfulobjects/testing/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java
index 861598d..76faa08 100644
--- a/viewers/restfulobjects/testing/src/main/java/org/apache/isis/viewer/restfulobjects/testing/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java
+++ b/viewers/restfulobjects/testing/src/main/java/org/apache/isis/viewer/restfulobjects/testing/ResourceContext_ensureCompatibleAcceptHeader_ContractTest.java
@@ -39,8 +39,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.InteractionTracker;
import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
@@ -68,7 +68,7 @@ public abstract class ResourceContext_ensureCompatibleAcceptHeader_ContractTest
@Mock HttpHeaders mockHttpHeaders;
@Mock HttpServletRequest mockHttpServletRequest;
@Mock ServletContext mockServletContext;
- @Mock InteractionFactory mockInteractionFactory;
+ @Mock InteractionService mockInteractionService;
@Mock Interaction mockInteraction;
@Mock SpecificationLoader mockSpecificationLoader;
@Mock WebApplicationContext webApplicationContext;
@@ -87,7 +87,7 @@ public abstract class ResourceContext_ensureCompatibleAcceptHeader_ContractTest
.authentication(iaContext)
.singleton(mockAuthenticationManager)
.singleton(mockIsisInteractionTracker)
- .singleton(mockInteractionFactory)
+ .singleton(mockInteractionService)
.build();
context.checking(new Expectations() {
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/SwaggerSpecResource.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/SwaggerSpecResource.java
index 1ca670b..b72cf5b 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/SwaggerSpecResource.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/SwaggerSpecResource.java
@@ -33,10 +33,10 @@ import javax.ws.rs.core.MediaType;
import org.springframework.stereotype.Component;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.swagger.Format;
import org.apache.isis.applib.services.swagger.SwaggerService;
import org.apache.isis.applib.services.swagger.Visibility;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -46,7 +46,7 @@ import lombok.val;
public class SwaggerSpecResource {
private final SwaggerService swaggerService;
- private final InteractionFactory isisInteractionFactory;
+ private final InteractionService interactionService;
@Context HttpHeaders httpHeaders;
@Context HttpServletRequest httpServletRequest;
@@ -54,9 +54,9 @@ public class SwaggerSpecResource {
@Inject
public SwaggerSpecResource(
final SwaggerService swaggerService,
- final InteractionFactory isisInteractionFactory) {
+ final InteractionService interactionService) {
this.swaggerService = swaggerService;
- this.isisInteractionFactory = isisInteractionFactory;
+ this.interactionService = interactionService;
}
@Path("/private")
@@ -94,7 +94,7 @@ public class SwaggerSpecResource {
val format = deriveFrom(httpHeaders);
val callable = new MyCallable(swaggerService, visibility, format);
- val spec = isisInteractionFactory.callAnonymous(callable);
+ val spec = interactionService.callAnonymous(callable);
return spec;
}
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/IsisRestfulObjectsInteractionFilter.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/IsisRestfulObjectsInteractionFilter.java
index 8af2bce..9d73817 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/IsisRestfulObjectsInteractionFilter.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/webmodule/IsisRestfulObjectsInteractionFilter.java
@@ -41,12 +41,12 @@ import javax.transaction.TransactionalException;
import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.commons.internal.factory._InstanceUtil;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.metamodel.commons.StringExtensions;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
@@ -157,7 +157,7 @@ public class IsisRestfulObjectsInteractionFilter implements Filter {
return Pattern.compile(".*\\." + input);
};
- @Autowired private InteractionFactory interactionFactory;
+ @Autowired private InteractionService interactionService;
@Autowired private SpecificationLoader specificationLoader;
@Autowired private TransactionService transactionService;
@@ -344,7 +344,7 @@ public class IsisRestfulObjectsInteractionFilter implements Filter {
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
- requires(interactionFactory, "isisInteractionFactory");
+ requires(interactionService, "isisInteractionFactory");
requires(specificationLoader, "specificationLoader");
ensureMetamodelIsValid(specificationLoader);
@@ -379,7 +379,7 @@ public class IsisRestfulObjectsInteractionFilter implements Filter {
authStrategy.bind(httpServletRequest, httpServletResponse, authentication);
- interactionFactory.run(
+ interactionService.run(
authentication,
()->{
transactionService.runWithinCurrentTransactionElseCreateNew(()->
@@ -404,7 +404,7 @@ public class IsisRestfulObjectsInteractionFilter implements Filter {
}
} finally {
- interactionFactory.closeInteractionLayers();
+ interactionService.closeInteractionLayers();
}
}
diff --git a/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_getArg_Test.java b/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_getArg_Test.java
index c90112d..ad3610f 100644
--- a/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_getArg_Test.java
+++ b/viewers/restfulobjects/viewer/src/test/java/org/apache/isis/viewer/restfulobjects/viewer/context/ResourceContext_getArg_Test.java
@@ -31,8 +31,8 @@ import org.springframework.web.context.WebApplicationContext;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.commons.internal.codec._UrlDecoderUtil;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.InteractionTracker;
import org.apache.isis.core.interaction.session.IsisInteraction;
import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
@@ -54,7 +54,7 @@ public class ResourceContext_getArg_Test {
@Mock private HttpServletRequest mockHttpServletRequest;
@Mock private ServletContext mockServletContext;
@Mock private IsisInteraction mockIsisInteraction;
- @Mock private InteractionFactory mockInteractionFactory;
+ @Mock private InteractionService mockInteractionService;
@Mock private InteractionTracker mockIsisInteractionTracker;
@Mock private AuthenticationManager mockAuthenticationManager;
@Mock private SpecificationLoader mockSpecificationLoader;
@@ -70,7 +70,7 @@ public class ResourceContext_getArg_Test {
metaModelContext = MetaModelContext_forTesting.builder()
.specificationLoader(mockSpecificationLoader)
- .singleton(mockInteractionFactory)
+ .singleton(mockInteractionService)
.singleton(mockAuthenticationManager)
.singleton(mockIsisInteractionTracker)
// .serviceInjector(mockServiceInjector)
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
index 376f194..5938647 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
@@ -24,11 +24,11 @@ import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.config.environment.IsisSystemEnvironment;
import org.apache.isis.core.config.viewer.wicket.WebAppContextPath;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
import org.apache.isis.core.runtime.context.IsisAppCommonContext.HasCommonContext;
import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
@@ -46,7 +46,7 @@ implements HasCommonContext {
private transient WebAppContextPath webAppContextPath;
private transient PageClassRegistry pageClassRegistry;
private transient IsisAppCommonContext commonContext;
- private transient InteractionFactory isisInteractionFactory;
+ private transient InteractionService interactionService;
protected WebPageBase(PageParameters parameters) {
super(parameters);
@@ -93,8 +93,8 @@ implements HasCommonContext {
return pageClassRegistry = computeIfAbsent(PageClassRegistry.class, pageClassRegistry);
}
- public InteractionFactory getIsisInteractionFactory() {
- return isisInteractionFactory = computeIfAbsent(InteractionFactory.class, isisInteractionFactory);
+ public InteractionService getInteractionService() {
+ return interactionService = computeIfAbsent(InteractionService.class, interactionService);
}
public IsisSystemEnvironment getSystemEnvironment() {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/EmailAvailableValidator.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/EmailAvailableValidator.java
index 67fa2e9..91219d2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/EmailAvailableValidator.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/EmailAvailableValidator.java
@@ -21,10 +21,10 @@ package org.apache.isis.viewer.wicket.ui.pages.accmngt;
import org.apache.wicket.validation.IValidatable;
import org.apache.wicket.validation.ValidationError;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.userreg.UserRegistrationService;
-import org.apache.isis.viewer.wicket.ui.validation.ValidatorBase;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
+import org.apache.isis.viewer.wicket.ui.validation.ValidatorBase;
import lombok.val;
@@ -62,10 +62,10 @@ public class EmailAvailableValidator extends ValidatorBase<String> {
val userRegistrationService = super.getCommonContext()
.lookupServiceElseFail(UserRegistrationService.class);
- val isisInteractionFactory = super.getCommonContext()
- .lookupServiceElseFail(InteractionFactory.class);
+ val interactionService = super.getCommonContext()
+ .lookupServiceElseFail(InteractionService.class);
- isisInteractionFactory.runAnonymous(() -> {
+ interactionService.runAnonymous(() -> {
String email = validatable.getValue();
boolean emailExists1 = userRegistrationService.emailExists(email);
if (emailExists1 != emailExists) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/UsernameAvailableValidator.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/UsernameAvailableValidator.java
index d5226cb..f1e9baa 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/UsernameAvailableValidator.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/UsernameAvailableValidator.java
@@ -21,10 +21,10 @@ package org.apache.isis.viewer.wicket.ui.pages.accmngt;
import org.apache.wicket.validation.IValidatable;
import org.apache.wicket.validation.ValidationError;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.userreg.UserRegistrationService;
-import org.apache.isis.viewer.wicket.ui.validation.ValidatorBase;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
+import org.apache.isis.viewer.wicket.ui.validation.ValidatorBase;
import lombok.val;
@@ -50,10 +50,10 @@ public class UsernameAvailableValidator extends ValidatorBase<String> {
val userRegistrationService = super.getCommonContext()
.lookupServiceElseFail(UserRegistrationService.class);
- val isisInteractionFactory = super.getCommonContext()
- .lookupServiceElseFail(InteractionFactory.class);
+ val interactionService = super.getCommonContext()
+ .lookupServiceElseFail(InteractionService.class);
- isisInteractionFactory.runAnonymous(() -> {
+ interactionService.runAnonymous(() -> {
final String username = validatable.getValue();
boolean usernameExists = userRegistrationService.usernameExists(username);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPage.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPage.java
index 38eb561..a88389f 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPage.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPage.java
@@ -76,7 +76,7 @@ public class PasswordResetPage extends AccountManagementPageAbstract {
error(getString("passwordResetExpiredOrInvalidToken"));
addOrReplace(addPasswordResetEmailPanel(ID_CONTENT_PANEL));
} else {
- Boolean emailExists = getIsisInteractionFactory().callAnonymous(new Callable<Boolean>() {
+ Boolean emailExists = getInteractionService().callAnonymous(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
val serviceRegistry = getServiceRegistry();
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPanel.java
index 07d1822..cc28d4d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/password_reset/PasswordResetPanel.java
@@ -86,7 +86,7 @@ public class PasswordResetPanel extends PanelBase<Void> {
val userRegistrationService =
commonContext.lookupServiceElseFail(UserRegistrationService.class);
- Boolean passwordUpdated = getIsisInteractionFactory().callAnonymous(new Callable<Boolean>() {
+ Boolean passwordUpdated = getInteractionService().callAnonymous(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
String email = accountConfirmationMap.get(uuid);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPanel.java
index 9d978e1..8d58dd3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPanel.java
@@ -34,10 +34,10 @@ import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.userreg.UserDetails;
import org.apache.isis.applib.services.userreg.UserRegistrationService;
import org.apache.isis.applib.services.xactn.TransactionService;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.viewer.wicket.ui.components.widgets.bootstrap.FormGroup;
import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountConfirmationMap;
import org.apache.isis.viewer.wicket.ui.pages.accmngt.UsernameAvailableValidator;
@@ -115,7 +115,7 @@ public abstract class RegisterPanel extends PanelBase<UserDetails> {
@Inject private transient UserRegistrationService userRegistrationService;
@Inject private transient TransactionService transactionService;
- @Inject private transient InteractionFactory isisInteractionFactory;
+ @Inject private transient InteractionService interactionService;
private final String uuid;
@@ -141,7 +141,7 @@ public abstract class RegisterPanel extends PanelBase<UserDetails> {
public final void onSubmit() {
final UserDetails userDetails = getModelObject();
- isisInteractionFactory.runAnonymous(() -> {
+ interactionService.runAnonymous(() -> {
transactionService.runWithinCurrentTransactionElseCreateNew(() -> {
userRegistrationService.registerUser(userDetails);
removeAccountConfirmation();
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index dc8ec1e..d837b6a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -37,11 +37,10 @@ import org.apache.isis.applib.services.exceprecog.Category;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerService;
import org.apache.isis.applib.services.exceprecog.Recognition;
import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.message.MessageService;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.collections._Sets;
-import org.apache.isis.core.interaction.session.InteractionFactory;
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.core.interaction.session.MessageBroker;
import org.apache.isis.core.metamodel.facets.actions.redirect.RedirectFacet;
import org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet;
@@ -431,7 +430,7 @@ implements FormExecutor {
}
protected InteractionService getIsisInteractionFactory() {
- return getCommonContext().lookupServiceElseFail(InteractionFactory.class);
+ return getCommonContext().lookupServiceElseFail(InteractionService.class);
}
protected Optional<MessageBroker> currentMessageBroker() {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
index 06afa12..bfac266 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
@@ -27,11 +27,11 @@ import org.apache.wicket.model.IModel;
import org.apache.isis.applib.services.i18n.LocaleProvider;
import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.userreg.EmailNotificationService;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.config.IsisConfiguration;
import org.apache.isis.core.config.viewer.wicket.WebAppContextPath;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.MessageBroker;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
@@ -67,7 +67,7 @@ implements HasCommonContext {
private transient ImageResourceCache imageCache;
private transient MetaModelContext metaModelContext;
private transient IsisAppCommonContext commonContext;
- private transient InteractionFactory isisInteractionFactory;
+ private transient InteractionService interactionService;
private transient TranslationService translationService;
private transient LocaleProvider localeProvider;
private transient TreeThemeProvider treeThemeProvider;
@@ -113,8 +113,8 @@ implements HasCommonContext {
return metaModelContext = computeIfAbsent(MetaModelContext.class, metaModelContext);
}
- public InteractionFactory getIsisInteractionFactory() {
- return isisInteractionFactory = computeIfAbsent(InteractionFactory.class, isisInteractionFactory);
+ public InteractionService getInteractionService() {
+ return interactionService = computeIfAbsent(InteractionService.class, interactionService);
}
public TranslationService getTranslationService() {
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
index d0fe946..a52b6c7 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
@@ -30,11 +30,11 @@ import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.isis.applib.clock.VirtualClock;
import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.session.SessionLoggingService;
import org.apache.isis.applib.services.user.UserMemento;
import org.apache.isis.applib.services.user.UserMemento.AuthenticationSource;
import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
import org.apache.isis.core.runtime.context.IsisAppCommonContext.HasCommonContext;
import org.apache.isis.core.security.authentication.AuthenticationRequestPassword;
@@ -237,7 +237,7 @@ implements BreadcrumbModelProvider, BookmarkedPagesModelProvider, HasCommonConte
final SessionLoggingService.CausedBy causedBy) {
- val interactionFactory = getInteractionFactory();
+ val interactionFactory = getInteractionService();
val sessionLoggingServices = getSessionLoggingServices();
final Runnable loggingTask = ()->{
@@ -262,8 +262,8 @@ implements BreadcrumbModelProvider, BookmarkedPagesModelProvider, HasCommonConte
return commonContext.getServiceRegistry().select(SessionLoggingService.class);
}
- protected InteractionFactory getInteractionFactory() {
- return commonContext.lookupServiceElseFail(InteractionFactory.class);
+ protected InteractionService getInteractionService() {
+ return commonContext.lookupServiceElseFail(InteractionService.class);
}
private VirtualClock virtualClock() {
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/LocalizerForIsis.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/LocalizerForIsis.java
index 33d8e90..a80b12a 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/LocalizerForIsis.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/LocalizerForIsis.java
@@ -34,9 +34,9 @@ import org.apache.wicket.model.IModel;
import org.apache.isis.applib.services.i18n.TranslationContext;
import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.InteractionTracker;
import org.apache.isis.viewer.wicket.viewer.wicketapp.IsisWicketApplication;
@@ -48,8 +48,8 @@ import lombok.val;
*/
public class LocalizerForIsis extends Localizer {
- @Inject private InteractionTracker isisInteractionTracker;
- @Inject private InteractionFactory isisInteractionFactory;
+ @Inject private InteractionTracker interactionTracker;
+ @Inject private InteractionService interactionService;
@Inject private TranslationService translationService;
/**
@@ -76,10 +76,10 @@ public class LocalizerForIsis extends Localizer {
protected String translate(final String key, final Component component) {
final Class<?> contextClass = determineContextClassElse(component, IsisWicketApplication.class);
final TranslationContext context = TranslationContext.forClassName(contextClass);
- if(isisInteractionTracker.isInInteraction()) {
+ if(interactionTracker.isInInteraction()) {
return translate(key, context);
} else {
- return isisInteractionFactory.callAnonymous(()->translate(key, context));
+ return interactionService.callAnonymous(()->translate(key, context));
}
}
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
index 30a19b4..378dff6 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
@@ -52,12 +52,12 @@ import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerService;
import org.apache.isis.applib.services.exceprecog.Recognition;
import org.apache.isis.applib.services.i18n.TranslationContext;
import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.user.ImpersonatedUserHolder;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.interaction.integration.IsisRequestCycle;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.MessageBroker;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
@@ -147,7 +147,7 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
}
val isisRequestCycle = IsisRequestCycle.next(
- commonContext.lookupServiceElseFail(InteractionFactory.class),
+ commonContext.lookupServiceElseFail(InteractionService.class),
commonContext.lookupServiceElseFail(ImpersonatedUserHolder.class)
);
diff --git a/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_Authenticate.java b/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_Authenticate.java
index f84cd82..08ed729 100644
--- a/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_Authenticate.java
+++ b/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_Authenticate.java
@@ -34,19 +34,19 @@ import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.nullValue;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.services.session.SessionLoggingService;
import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.interaction.session.InteractionTracker;
import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
+import org.apache.isis.core.security._testing.InteractionService_forTesting;
import org.apache.isis.core.security.authentication.AuthenticationRequest;
import org.apache.isis.core.security.authentication.AuthenticationRequestPassword;
import org.apache.isis.core.security.authentication.Authenticator;
import org.apache.isis.core.security.authentication.InteractionContextFactory;
-import org.apache.isis.core.security.authentication.manager.AnonymousInteractionFactory;
import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
import org.apache.isis.core.security.authentication.standard.RandomCodeGeneratorDefault;
@@ -57,12 +57,12 @@ public class AuthenticatedWebSessionForIsis_Authenticate {
public final JUnitRuleMockery2 context =
JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
- @Mock
- protected Request mockRequest;
private AuthenticationManager authMgr;
+
+ @Mock protected Request mockRequest;
@Mock protected Authenticator mockAuthenticator;
@Mock protected IsisAppCommonContext mockCommonContext;
- @Mock protected InteractionFactory mockInteractionFactory;
+ @Mock protected InteractionService mockInteractionService;
@Mock protected InteractionTracker mockInteractionTracker;
@Mock protected ServiceRegistry mockServiceRegistry;
@@ -72,7 +72,7 @@ public class AuthenticatedWebSessionForIsis_Authenticate {
public void setUp() throws Exception {
authMgr = new AuthenticationManager(
Collections.singletonList(mockAuthenticator),
- AnonymousInteractionFactory.forTesting(),
+ new InteractionService_forTesting(),
new RandomCodeGeneratorDefault());
context.checking(new Expectations() {
@@ -83,8 +83,8 @@ public class AuthenticatedWebSessionForIsis_Authenticate {
allowing(mockServiceRegistry).select(SessionLoggingService.class);
will(returnValue(Can.empty()));
- allowing(mockCommonContext).lookupServiceElseFail(InteractionFactory.class);
- will(returnValue(mockInteractionFactory));
+ allowing(mockCommonContext).lookupServiceElseFail(InteractionService.class);
+ will(returnValue(mockInteractionService));
allowing(mockCommonContext).getInteractionTracker();
will(returnValue(mockInteractionTracker));
@@ -92,10 +92,10 @@ public class AuthenticatedWebSessionForIsis_Authenticate {
allowing(mockInteractionTracker).currentInteractionContext();
will(returnValue(Optional.of(InteractionContextFactory.testing())));
- allowing(mockInteractionFactory)
+ allowing(mockInteractionService)
.run(with(InteractionContextFactory.testing()), with(any(ThrowingRunnable.class)));
- allowing(mockInteractionFactory)
+ allowing(mockInteractionService)
.runAnonymous(with(any(ThrowingRunnable.class)));
// ignore
diff --git a/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_SignIn.java b/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_SignIn.java
index 470331f..f050eca 100644
--- a/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_SignIn.java
+++ b/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_SignIn.java
@@ -32,18 +32,18 @@ import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.services.session.SessionLoggingService;
import org.apache.isis.commons.collections.Can;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
+import org.apache.isis.core.security._testing.InteractionService_forTesting;
import org.apache.isis.core.security.authentication.AuthenticationRequest;
import org.apache.isis.core.security.authentication.AuthenticationRequestPassword;
import org.apache.isis.core.security.authentication.Authenticator;
import org.apache.isis.core.security.authentication.InteractionContextFactory;
-import org.apache.isis.core.security.authentication.manager.AnonymousInteractionFactory;
import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
import org.apache.isis.core.security.authentication.standard.RandomCodeGeneratorDefault;
@@ -58,7 +58,7 @@ public class AuthenticatedWebSessionForIsis_SignIn {
@Mock protected Request mockRequest;
@Mock protected Authenticator mockAuthenticator;
@Mock protected IsisAppCommonContext mockCommonContext;
- @Mock protected InteractionFactory mockInteractionFactory;
+ @Mock protected InteractionService mockInteractionService;
@Mock protected ServiceRegistry mockServiceRegistry;
protected AuthenticatedWebSessionForIsis webSession;
@@ -67,7 +67,7 @@ public class AuthenticatedWebSessionForIsis_SignIn {
public void setUp() throws Exception {
authMgr = new AuthenticationManager(
Collections.singletonList(mockAuthenticator),
- AnonymousInteractionFactory.forTesting(),
+ new InteractionService_forTesting(),
new RandomCodeGeneratorDefault());
}
@@ -81,13 +81,13 @@ public class AuthenticatedWebSessionForIsis_SignIn {
allowing(mockServiceRegistry).select(SessionLoggingService.class);
will(returnValue(Can.empty()));
- allowing(mockCommonContext).lookupServiceElseFail(InteractionFactory.class);
- will(returnValue(mockInteractionFactory));
+ allowing(mockCommonContext).lookupServiceElseFail(InteractionService.class);
+ will(returnValue(mockInteractionService));
- allowing(mockInteractionFactory)
+ allowing(mockInteractionService)
.run(with(InteractionContextFactory.testing()), with(any(ThrowingRunnable.class)));
- allowing(mockInteractionFactory)
+ allowing(mockInteractionService)
.runAnonymous(with(any(ThrowingRunnable.class)));
// ignore
diff --git a/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_TestAbstract.java b/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_TestAbstract.java
index 239da8b..d6051e8 100644
--- a/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_TestAbstract.java
+++ b/viewers/wicket/viewer/src/test/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis_TestAbstract.java
@@ -27,10 +27,10 @@ import org.jmock.Expectations;
import org.jmock.auto.Mock;
import org.junit.Rule;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.iactnlayer.ThrowingRunnable;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.applib.services.session.SessionLoggingService;
-import org.apache.isis.core.interaction.session.InteractionFactory;
import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2.Mode;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
@@ -45,7 +45,7 @@ public abstract class AuthenticatedWebSessionForIsis_TestAbstract {
@Mock protected Request mockRequest;
@Mock protected AuthenticationManager mockAuthMgr;
@Mock protected IsisAppCommonContext mockCommonContext;
- @Mock protected InteractionFactory mockInteractionFactory;
+ @Mock protected InteractionService mockInteractionService;
@Mock protected ServiceRegistry mockServiceRegistry;
protected AuthenticatedWebSessionForIsis webSession;
@@ -59,10 +59,10 @@ public abstract class AuthenticatedWebSessionForIsis_TestAbstract {
allowing(mockServiceRegistry).lookupService(SessionLoggingService.class);
will(returnValue(Optional.empty()));
- allowing(mockCommonContext).lookupServiceElseFail(InteractionFactory.class);
- will(returnValue(mockInteractionFactory));
+ allowing(mockCommonContext).lookupServiceElseFail(InteractionService.class);
+ will(returnValue(mockInteractionService));
- allowing(mockInteractionFactory).run(
+ allowing(mockInteractionService).run(
InteractionContextFactory.testing(),
with(any(ThrowingRunnable.class)));
// ignore