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 2020/10/06 06:29:36 UTC

[isis] branch 2441-auditing updated: ISIS-2441: renaming IsisInteraction -> InteractionSession

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch 2441-auditing
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/2441-auditing by this push:
     new 50ca846  ISIS-2441: renaming IsisInteraction -> InteractionSession
50ca846 is described below

commit 50ca846ab96e75bd2cfe63bd2e1d68d295b4b719
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Oct 6 08:19:58 2020 +0200

    ISIS-2441: renaming IsisInteraction -> InteractionSession
    
    this resolves the name clash with applib's Interaction
---
 .../isis/core/runtime/context/IsisContext.java     |  4 +--
 .../core/runtime/events/RuntimeEventService.java   |  8 ++---
 .../iactn/IsisInteractionLifecycleEvent.java       |  4 +--
 ...sisInteraction.java => InteractionSession.java} |  4 +--
 .../core/runtime/iactn/IsisInteractionFactory.java | 10 +++---
 .../core/runtime/iactn/IsisInteractionTracker.java |  4 +--
 .../command/CommandExecutorServiceDefault.java     |  4 +--
 .../session/IsisInteractionFactoryDefault.java     | 38 +++++++++++-----------
 .../wrapper/WrapperFactoryDefault.java             | 13 ++++----
 .../java/demoapp/web/linebreaker/LineBreaker.java  |  2 +-
 .../viewer/vaadin/viewer/IsisServletForVaadin.java |  4 +--
 .../service/JdoPersistenceLifecycleService.java    | 18 +++++-----
 .../datanucleus5/jdosupport/IsisJdoSupportDN5.java |  2 +-
 .../JdoPersistenceCapableFacetAbstract.java        |  2 +-
 .../IsisPlatformTransactionManagerForJdo.java      |  2 +-
 .../persistence/IsisTransactionJdo.java            |  2 +-
 ..._ensureCompatibleAcceptHeader_ContractTest.java |  4 +--
 .../context/ResourceContext_getArg_Test.java       |  4 +--
 .../wicket/ui/app/logout/LogoutHandlerWkt.java     |  2 +-
 .../ajaxtable/PrototypingMessageProvider.java      |  2 +-
 .../wicket/ui/panels/FormExecutorDefault.java      |  2 +-
 .../viewer/integration/WebRequestCycleForIsis.java |  4 +--
 22 files changed, 68 insertions(+), 71 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/context/IsisContext.java
index 769b60c..1623d59 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/context/IsisContext.java
@@ -22,7 +22,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.function.Supplier;
 
 import org.apache.isis.commons.internal.context._Context;
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 
 import lombok.experimental.UtilityClass;
 
@@ -46,7 +46,7 @@ public final class IsisContext {
      * Returns a new CompletableFuture that is asynchronously completed by a task running in the 
      * ForkJoinPool.commonPool() with the value obtained by calling the given Supplier {@code computation}.
      * <p>
-     * If the calling thread is within an open {@link IsisInteraction} then the ForkJoinPool does make this
+     * If the calling thread is within an open {@link InteractionSession} then the ForkJoinPool does make this
      * session also available for any forked threads, via means of {@link InheritableThreadLocal}.
      * 
      * @param computation
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/RuntimeEventService.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/RuntimeEventService.java
index 853fa16..3f88405 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/RuntimeEventService.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/RuntimeEventService.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
 import org.apache.isis.core.runtime.events.iactn.IsisInteractionLifecycleEvent;
 import org.apache.isis.core.runtime.events.persistence.PostStoreEvent;
 import org.apache.isis.core.runtime.events.persistence.PreStoreEvent;
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 import org.apache.isis.core.runtime.iactn.IsisInteractionTracker;
 
 import lombok.val;
@@ -65,21 +65,21 @@ public class RuntimeEventService {
 
     // -- INTERACTION
 
-    public void fireInteractionHasStarted(IsisInteraction interaction) {
+    public void fireInteractionHasStarted(InteractionSession interaction) {
         val conversationId = interactionTracker.getConversationId().orElse(null);
         eventBusService.post(
                 IsisInteractionLifecycleEvent
                 .of(conversationId, interaction, IsisInteractionLifecycleEvent.EventType.HAS_STARTED));
     }
 
-    public void fireInteractionIsEnding(IsisInteraction interaction) {
+    public void fireInteractionIsEnding(InteractionSession interaction) {
         val conversationId = interactionTracker.getConversationId().orElse(null);
         eventBusService.post(
                 IsisInteractionLifecycleEvent
                 .of(conversationId, interaction, IsisInteractionLifecycleEvent.EventType.IS_ENDING));
     }
 
-	public void fireInteractionFlushRequest(IsisInteraction interaction) {
+	public void fireInteractionFlushRequest(InteractionSession interaction) {
 	    val conversationId = interactionTracker.getConversationId().orElse(null);
 	    eventBusService.post(
 	            IsisInteractionLifecycleEvent
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/iactn/IsisInteractionLifecycleEvent.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/iactn/IsisInteractionLifecycleEvent.java
index 528fa8c..2559441 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/iactn/IsisInteractionLifecycleEvent.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/iactn/IsisInteractionLifecycleEvent.java
@@ -18,7 +18,7 @@
  */
 package org.apache.isis.core.runtime.events.iactn;
 
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 
 import lombok.Getter;
 import lombok.ToString;
@@ -34,7 +34,7 @@ public class IsisInteractionLifecycleEvent {
     }
 
     @Getter String conversationId;
-    @Getter IsisInteraction isisInteraction;
+    @Getter InteractionSession interactionSession;
     @Getter EventType eventType;
 
 }
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteraction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/InteractionSession.java
similarity index 98%
rename from core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteraction.java
rename to core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/InteractionSession.java
index 68e6e46..b5c3082 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteraction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/InteractionSession.java
@@ -51,12 +51,12 @@ import lombok.Setter;
  *
  * @see IsisInteractionFactory
  */
-public class IsisInteraction extends RuntimeContextBase {
+public class InteractionSession extends RuntimeContextBase {
 
     @Getter private final AuthenticationSession authenticationSession;
     @Getter private final long lifecycleStartedAtSystemNanos;
 
-    public IsisInteraction(
+    public InteractionSession(
             @NonNull final MetaModelContext mmc,
             @NonNull final AuthenticationSession authenticationSession) {
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteractionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteractionFactory.java
index 0ec4625..d35f867 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteractionFactory.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteractionFactory.java
@@ -24,7 +24,7 @@ import java.util.concurrent.Callable;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
 
 /**
- * The factory of {@link IsisInteraction}s, also holding a reference to the
+ * The factory of {@link InteractionSession}s, also holding a reference to the
  * current session using a thread-local.
  *
  * <p>
@@ -44,11 +44,11 @@ public interface IsisInteractionFactory {
     }
 
     /**
-     * Creates a new {@link IsisInteraction}, which represents the span of
-     * activities user interacting with the application.
+     * Creates a new {@link InteractionSession}, which represents a user's span of
+     * activities interacting with the application.
      *
      * <p>
-     *     If there is already an {@link IsisInteraction} available (as held
+     *     If there is already an {@link InteractionSession} available (as held
      *     in a thread-local stack), then the interactions are stacked.
      *     These are closed using {@link #closeSessionStack()}.
      * </p>
@@ -56,7 +56,7 @@ public interface IsisInteractionFactory {
      * @param authenticationSession
      * @return
      */
-    public IsisInteraction openInteraction(AuthenticationSession authenticationSession);
+    public InteractionSession openInteraction(AuthenticationSession authenticationSession);
 
     /**
      * @return whether the calling thread is within the context of an open IsisInteraction
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteractionTracker.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteractionTracker.java
index d478a25..a1c8dce 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteractionTracker.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/iactn/IsisInteractionTracker.java
@@ -34,11 +34,11 @@ public interface IsisInteractionTracker extends AuthenticationSessionTracker {
     boolean isInInteraction();
     
     /** @return the current request- or test-scoped IsisInteraction*/
-    Optional<IsisInteraction> currentInteraction();
+    Optional<InteractionSession> currentInteractionSession();
     
     @Override
     default Optional<AuthenticationSession> currentAuthenticationSession() {
-        return currentInteraction().map(IsisInteraction::getAuthenticationSession);
+        return currentInteractionSession().map(InteractionSession::getAuthenticationSession);
     }
     
     @Override
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
index 94695c4..efae1f9 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/command/CommandExecutorServiceDefault.java
@@ -63,7 +63,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionMixedIn;
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
 import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
 import org.apache.isis.core.runtime.iactn.IsisInteractionTracker;
 import org.apache.isis.schema.cmd.v2.ActionDto;
@@ -402,8 +401,7 @@ public class CommandExecutorServiceDefault implements CommandExecutorService {
         val objectSpec = specificationLoader.loadSpecification(oid.getObjectSpecId());
         val loadRequest = ObjectLoader.Request.of(objectSpec, oid.getIdentifier());
 
-        Optional<IsisInteraction> isisInteraction = isisInteractionTracker.currentInteraction();
-        return isisInteraction
+        return isisInteractionTracker.currentInteractionSession()
                 .map(x -> x.getObjectManager().loadObject(loadRequest))
                 .orElse(null);
     }
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/IsisInteractionFactoryDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/IsisInteractionFactoryDefault.java
index 38cf8f2..19ccccb 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/IsisInteractionFactoryDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/IsisInteractionFactoryDefault.java
@@ -53,7 +53,7 @@ import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.events.RuntimeEventService;
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
 import org.apache.isis.core.runtime.iactn.IsisInteractionTracker;
 import org.apache.isis.core.runtime.iactn.scope.IsisInteractionScopeBeanFactoryPostProcessor;
@@ -75,7 +75,7 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
- * Is the factory of {@link IsisInteraction}s, also holding a reference to the current session using
+ * Is the factory of {@link InteractionSession}s, also holding a reference to the current session using
  * a thread-local.
  *
  * <p>
@@ -153,24 +153,24 @@ public class IsisInteractionFactoryDefault implements IsisInteractionFactory, Is
 
     }
 
-    private final ThreadLocal<Stack<IsisInteraction>> isisInteractionStack = ThreadLocal.withInitial(Stack::new);
+    private final ThreadLocal<Stack<InteractionSession>> interactionSessionStack = ThreadLocal.withInitial(Stack::new);
     
     @Override
-    public IsisInteraction openInteraction(@NonNull final AuthenticationSession authenticationSession) {
+    public InteractionSession openInteraction(@NonNull final AuthenticationSession authenticationSession) {
 
         val authSessionToUse = getAuthenticationSessionOverride()
                 .orElse(authenticationSession);
-        val newIsisInteraction = new IsisInteraction(metaModelContext, authSessionToUse);
+        val newIsisInteraction = new InteractionSession(metaModelContext, authSessionToUse);
         
-        isisInteractionStack.get().push(newIsisInteraction);
+        interactionSessionStack.get().push(newIsisInteraction);
 
         initializeApplibCommandAndInteraction();
 
-        postOpen(isisInteractionStack.get().size(), newIsisInteraction);
+        postOpen(interactionSessionStack.get().size(), newIsisInteraction);
         
         log.debug("new IsisInteraction created (conversation-id={}, total-sessions-on-stack={}, {})", 
                 conversationId.get(), 
-                isisInteractionStack.get().size(),
+                interactionSessionStack.get().size(),
                 _Probe.currentThreadId());
         
         return newIsisInteraction;
@@ -188,27 +188,27 @@ public class IsisInteractionFactoryDefault implements IsisInteractionFactory, Is
     public void closeSessionStack() {
         log.debug("about to close IsisInteraction stack (conversation-id={}, total-sessions-on-stack={}, {})", 
                 conversationId.get(), 
-                isisInteractionStack.get().size(),
+                interactionSessionStack.get().size(),
                 _Probe.currentThreadId());
 
         closeInteractionStackDownToStackSize(0);
     }
     
     @Override
-    public Optional<IsisInteraction> currentInteraction() {
-        val stack = isisInteractionStack.get();
+    public Optional<InteractionSession> currentInteractionSession() {
+        val stack = interactionSessionStack.get();
         return stack.isEmpty() ? Optional.empty() : Optional.of(stack.lastElement());
     }
 
     @Override
     public boolean isInInteraction() {
-        return !isisInteractionStack.get().isEmpty();
+        return !interactionSessionStack.get().isEmpty();
     }
 
     @Override
     public boolean isInTransaction() {
 
-        return currentInteraction().map(isisInteraction->{
+        return currentInteractionSession().map(isisInteraction->{
             if (isisInteraction.getCurrentTransactionId() != null) {
                 if (!isisInteraction.getCurrentTransactionState().isComplete()) {
                     return true;
@@ -226,7 +226,7 @@ public class IsisInteractionFactoryDefault implements IsisInteractionFactory, Is
             @NonNull final AuthenticationSession authenticationSession, 
             @NonNull final Callable<R> callable) {
         
-        final int stackSizeWhenEntering = isisInteractionStack.get().size();
+        final int stackSizeWhenEntering = interactionSessionStack.get().size();
         openInteraction(authenticationSession);
         
         try {
@@ -271,7 +271,7 @@ public class IsisInteractionFactoryDefault implements IsisInteractionFactory, Is
     
     // -- HELPER
     
-    private void postOpen(int stackSizeAfterOpen, IsisInteraction newIsisInteraction) {
+    private void postOpen(int stackSizeAfterOpen, InteractionSession newIsisInteraction) {
         final boolean isTopLevel = stackSizeAfterOpen==1;
         if(isTopLevel) {
             conversationId.set(UUID.randomUUID());
@@ -279,7 +279,7 @@ public class IsisInteractionFactoryDefault implements IsisInteractionFactory, Is
         }
     }
     
-    private void preClose(int stackSizeBeforeClose, IsisInteraction isisInteraction) {
+    private void preClose(int stackSizeBeforeClose, InteractionSession isisInteraction) {
         final boolean isTopLevel = stackSizeBeforeClose==1;
         if(isTopLevel) {
             runtimeEventService.fireInteractionIsEnding(isisInteraction); // only fire on top-level session 
@@ -293,17 +293,17 @@ public class IsisInteractionFactoryDefault implements IsisInteractionFactory, Is
         log.debug("about to close IsisInteraction stack down to size {} (conversation-id={}, total-sessions-on-stack={}, {})",
                 downToStackSize,
                 conversationId.get(), 
-                isisInteractionStack.get().size(),
+                interactionSessionStack.get().size(),
                 _Probe.currentThreadId());
         
-        val stack = isisInteractionStack.get();
+        val stack = interactionSessionStack.get();
         while(stack.size()>downToStackSize) {
             preClose(stack.size(), stack.peek()); // keep the stack unmodified yet, to allow for callbacks to properly operate
             stack.pop();    
         }
         if(downToStackSize == 0) {
             // cleanup thread-local
-            isisInteractionStack.remove();
+            interactionSessionStack.remove();
             conversationId.remove();
         }
     }
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 54d3dd3..a973674 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
@@ -28,7 +28,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.Callable;
-import java.util.concurrent.Future;
 import java.util.function.BiConsumer;
 
 import javax.annotation.PostConstruct;
@@ -93,7 +92,7 @@ import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionMixedIn;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
 import org.apache.isis.core.runtime.iactn.IsisInteractionTracker;
 import org.apache.isis.core.runtimeservices.wrapper.dispatchers.InteractionEventDispatcher;
@@ -305,8 +304,8 @@ public class WrapperFactoryDefault implements WrapperFactory {
             final Object[] args,
             final AsyncControl<R> asyncControl) {
 
-        val isisInteraction = currentIsisInteraction();
-        val asyncAuthSession = authSessionFrom(asyncControl, isisInteraction.getAuthenticationSession());
+        val interactionSession = currentInteractionSession();
+        val asyncAuthSession = authSessionFrom(asyncControl, interactionSession.getAuthenticationSession());
         val command = interactionContextProvider.get().getInteraction().getCommand();
 
         val targetAdapter = memberAndTarget.getTarget();
@@ -487,12 +486,12 @@ public class WrapperFactoryDefault implements WrapperFactory {
     }
 
 
-    private IsisInteraction currentIsisInteraction() {
-        return isisInteractionTracker.currentInteraction().orElseThrow(() -> new RuntimeException("No IsisInteraction is open"));
+    private InteractionSession currentInteractionSession() {
+        return isisInteractionTracker.currentInteractionSession().orElseThrow(() -> new RuntimeException("No IsisInteraction is open"));
     }
 
     private ObjectManager currentObjectManager() {
-        return currentIsisInteraction().getObjectManager();
+        return currentInteractionSession().getObjectManager();
     }
 
     @RequiredArgsConstructor
diff --git a/examples/demo/web/src/main/java/demoapp/web/linebreaker/LineBreaker.java b/examples/demo/web/src/main/java/demoapp/web/linebreaker/LineBreaker.java
index db28ac8..4477935 100644
--- a/examples/demo/web/src/main/java/demoapp/web/linebreaker/LineBreaker.java
+++ b/examples/demo/web/src/main/java/demoapp/web/linebreaker/LineBreaker.java
@@ -46,7 +46,7 @@ public class LineBreaker {
         log.info("about to shutdown the JVM");
 
         // allow for current interaction to complete gracefully
-        isisInteractionTracker.currentInteraction()
+        isisInteractionTracker.currentInteractionSession()
         .ifPresent(interaction->{
             interaction.setOnClose(()->System.exit(0));
         });
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 f1e4ecb..4262216 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
@@ -28,7 +28,7 @@ import com.vaadin.flow.spring.SpringServlet;
 
 import org.springframework.context.ApplicationContext;
 
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
 import org.apache.isis.incubator.viewer.vaadin.ui.auth.AuthSessionStoreUtil;
 
@@ -37,7 +37,7 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
- * An extension of {@link SpringServlet} to support {@link IsisInteraction} life-cycle management.
+ * An extension of {@link SpringServlet} to support {@link InteractionSession} life-cycle management.
  * @since Mar 14, 2020
  *
  */
diff --git a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/service/JdoPersistenceLifecycleService.java b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/service/JdoPersistenceLifecycleService.java
index 9994e2f..d92a4a4 100644
--- a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/service/JdoPersistenceLifecycleService.java
+++ b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/datanucleus/service/JdoPersistenceLifecycleService.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.config.beans.IsisBeanTypeRegistryHolder;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.runtime.events.app.AppLifecycleEvent;
 import org.apache.isis.core.runtime.events.iactn.IsisInteractionLifecycleEvent;
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 import org.apache.isis.persistence.jdo.datanucleus5.persistence.IsisPersistenceSessionJdo;
 import org.apache.isis.persistence.jdo.datanucleus5.persistence.PersistenceSession;
 import org.apache.isis.persistence.jdo.datanucleus5.persistence.PersistenceSessionFactory;
@@ -89,7 +89,7 @@ public class JdoPersistenceLifecycleService {
     public void onInteractionLifecycleEvent(IsisInteractionLifecycleEvent event) {
 
         val eventType = event.getEventType();
-        val isisInteraction = event.getIsisInteraction();
+        val interactionSession = event.getInteractionSession();
 
         if(log.isDebugEnabled()) {
             log.debug("received session event {}", eventType);
@@ -97,13 +97,13 @@ public class JdoPersistenceLifecycleService {
 
         switch (eventType) {
         case HAS_STARTED:
-            openInteraction(isisInteraction);
+            openInteraction(interactionSession);
             break;
         case IS_ENDING:
-            closeInteraction(isisInteraction);
+            closeInteraction(interactionSession);
             break;
         case FLUSH_REQUEST:
-            flushInteraction(isisInteraction);
+            flushInteraction(interactionSession);
             break;
 
         default:
@@ -114,24 +114,24 @@ public class JdoPersistenceLifecycleService {
 
     // -- HELPER
 
-    private void openInteraction(IsisInteraction isisInteraction) {
+    private void openInteraction(InteractionSession isisInteraction) {
         val persistenceSession =
                 persistenceSessionFactory.createPersistenceSession();
         isisInteraction.putUserData(IsisPersistenceSessionJdo.class, persistenceSession);
         persistenceSession.open();
     }
 
-    private void closeInteraction(IsisInteraction isisInteraction) {
+    private void closeInteraction(InteractionSession isisInteraction) {
         currentSession(isisInteraction)
         .ifPresent(PersistenceSession::close);
     }
 
-    private void flushInteraction(IsisInteraction isisInteraction) {
+    private void flushInteraction(InteractionSession isisInteraction) {
         currentSession(isisInteraction)
         .ifPresent(PersistenceSession::flush);
     }
 
-    private Optional<IsisPersistenceSessionJdo> currentSession(IsisInteraction isisInteraction) {
+    private Optional<IsisPersistenceSessionJdo> currentSession(InteractionSession isisInteraction) {
         return Optional.ofNullable(isisInteraction)
                 .map(interaction->interaction.getUserData(IsisPersistenceSessionJdo.class));
     }
diff --git a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/jdosupport/IsisJdoSupportDN5.java b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/jdosupport/IsisJdoSupportDN5.java
index 436c14f..4b6cc14 100644
--- a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/jdosupport/IsisJdoSupportDN5.java
+++ b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/jdosupport/IsisJdoSupportDN5.java
@@ -216,7 +216,7 @@ public class IsisJdoSupportDN5 implements IsisJdoSupport_v3_2 {
     // //////////////////////////////////////
 
     protected IsisPersistenceSessionJdo getPersistenceSession() {
-        return isisInteractionTracker.currentInteraction()
+        return isisInteractionTracker.currentInteractionSession()
                 .map(interaction->interaction.getUserData(IsisPersistenceSessionJdo.class))
                 .orElse(null);
     }
diff --git a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAbstract.java b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAbstract.java
index ea1649e..85d5a40 100644
--- a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAbstract.java
+++ b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAbstract.java
@@ -83,7 +83,7 @@ implements JdoPersistenceCapableFacet {
     }
     
     protected IsisPersistenceSessionJdo getPersistenceSessionJdo() {
-        return isisInteractionTracker.get().currentInteraction()
+        return isisInteractionTracker.get().currentInteractionSession()
                 .map(interaction->interaction.getUserData(IsisPersistenceSessionJdo.class))
                 .orElse(null);
     }
diff --git a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPlatformTransactionManagerForJdo.java b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPlatformTransactionManagerForJdo.java
index 741e565..23eb849 100644
--- a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPlatformTransactionManagerForJdo.java
+++ b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisPlatformTransactionManagerForJdo.java
@@ -165,7 +165,7 @@ public class IsisPlatformTransactionManagerForJdo extends AbstractPlatformTransa
     }
     
     private IsisTransactionManagerJdo transactionManagerJdo() {
-        return isisInteractionTracker.currentInteraction()
+        return isisInteractionTracker.currentInteractionSession()
                 .map(interaction->interaction.getUserData(IsisPersistenceSessionJdo.class))
                 .map(IsisPersistenceSessionJdoBase.class::cast)
                 .map(ps->ps.transactionManager)
diff --git a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisTransactionJdo.java b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisTransactionJdo.java
index 91e3a0a..05dba98 100644
--- a/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisTransactionJdo.java
+++ b/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/persistence/IsisTransactionJdo.java
@@ -355,7 +355,7 @@ public class IsisTransactionJdo implements Transaction {
     }
 
     protected IsisPersistenceSessionJdo getPersistenceSession() {
-        return isisInteractionTracker.currentInteraction()
+        return isisInteractionTracker.currentInteractionSession()
                 .map(interaction->interaction.getUserData(IsisPersistenceSessionJdo.class))
                 .orElseThrow(()->_Exceptions.unrecoverable("no current IsisPersistenceSessionJdo available"));
     }
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 f7c7cd7..62b08ee 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
@@ -42,7 +42,7 @@ import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
 import org.apache.isis.core.runtime.iactn.IsisInteractionTracker;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
@@ -66,7 +66,7 @@ public abstract class ResourceContext_ensureCompatibleAcceptHeader_ContractTest
     @Mock HttpServletRequest mockHttpServletRequest;
     @Mock ServletContext mockServletContext;
     @Mock IsisInteractionFactory mockIsisInteractionFactory;
-    @Mock IsisInteraction mockIsisInteraction;
+    @Mock InteractionSession mockInteractionSession;
     @Mock AuthenticationSession mockAuthenticationSession;
     @Mock SpecificationLoader mockSpecificationLoader;
     @Mock WebApplicationContext webApplicationContext;
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 dda51f3..51126fc 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
@@ -37,7 +37,7 @@ import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2.Mode;
 import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
 import org.apache.isis.core.runtime.iactn.IsisInteractionTracker;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
@@ -54,7 +54,7 @@ public class ResourceContext_getArg_Test {
 
     @Mock private HttpServletRequest mockHttpServletRequest;
     @Mock private ServletContext mockServletContext;
-    @Mock private IsisInteraction mockIsisInteraction;
+    @Mock private InteractionSession mockIsisInteraction;
     @Mock private IsisInteractionFactory mockIsisInteractionFactory;
     @Mock private IsisInteractionTracker mockIsisInteractionTracker;
     @Mock private AuthenticationManager mockAuthenticationManager;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/logout/LogoutHandlerWkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/logout/LogoutHandlerWkt.java
index 3ede5ba..cbd8444 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/logout/LogoutHandlerWkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/logout/LogoutHandlerWkt.java
@@ -43,7 +43,7 @@ public class LogoutHandlerWkt implements LogoutHandler {
         }
         
         if(isisInteractionTracker.isInInteraction()) {
-            isisInteractionTracker.currentInteraction()
+            isisInteractionTracker.currentInteractionSession()
             .ifPresent(interaction->
                 interaction.setOnClose(currentWktSession::invalidateNow));
             
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
index 06a8039..784f625 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
@@ -59,7 +59,7 @@ class PrototypingMessageProvider {
 
         final StringBuilder tookTimingMessage = new StringBuilder();
 
-        commonContext().getIsisInteractionTracker().currentInteraction()
+        commonContext().getIsisInteractionTracker().currentInteractionSession()
         .ifPresent(interaction->{
             val stopWatch = _Timing.atSystemNanos(interaction.getLifecycleStartedAtSystemNanos());    
             tookTimingMessage.append(String.format(Locale.US, "... took %.2f seconds", stopWatch.getSeconds()));
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 1a39b89..7bc9872 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
@@ -141,7 +141,7 @@ implements FormExecutor {
             // flush any queued changes; any concurrency or violation exceptions will actually be thrown here
             {
                 val commonContext = targetEntityModel.getCommonContext();
-                commonContext.getIsisInteractionTracker().currentInteraction()
+                commonContext.getIsisInteractionTracker().currentInteractionSession()
                 .ifPresent(interaction->{
                     commonContext.lookupServiceElseFail(RuntimeEventService.class)
                     .fireInteractionFlushRequest(interaction);
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 d87397b..527aef4 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,7 +52,7 @@ import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerService;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.core.runtime.context.IsisAppCommonContext;
-import org.apache.isis.core.runtime.iactn.IsisInteraction;
+import org.apache.isis.core.runtime.iactn.InteractionSession;
 import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
 import org.apache.isis.core.runtime.session.IsisRequestCycle;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
@@ -71,7 +71,7 @@ import lombok.extern.log4j.Log4j2;
 
 /**
  * Isis-specific implementation of the Wicket's {@link RequestCycle},
- * automatically opening a {@link IsisInteraction} at the beginning of the request
+ * automatically opening a {@link InteractionSession} at the beginning of the request
  * and committing the transaction and closing the session at the end.
  * 
  * @since 2.0