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/03/31 08:36:35 UTC

[isis] branch master updated: ISIS-2573: move XrayUtil to 'security' so can reuse with both 'interaction' and 'transaction'

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 7ad2f41  ISIS-2573: move XrayUtil to 'security' so can reuse with both 'interaction' and 'transaction'
7ad2f41 is described below

commit 7ad2f41b9b3d0ad955374a7cc274be133a58dd4f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Mar 31 10:36:22 2021 +0200

    ISIS-2573: move XrayUtil to 'security' so can reuse with both
    'interaction' and 'transaction'
---
 .../interaction/session/InteractionTracker.java     |  3 ---
 .../org/apache/isis/core/runtime/events/_Xray.java  |  2 +-
 .../isis/core/runtimeservices/executor/_Xray.java   |  4 ++--
 .../isis/core/runtimeservices/publish/_Xray.java    |  4 ++--
 .../isis/core/runtimeservices/session/_Xray.java    |  2 +-
 .../authentication/AuthenticationContext.java       |  3 +++
 .../authentication/AuthenticationRequest.java       |  2 --
 .../apache/isis/core/security}/util/XrayUtil.java   | 21 ++++++++++++---------
 .../applayer/ApplicationLayerTestFactory.java       |  2 +-
 9 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java
index 5660ec6..a2e5480 100644
--- a/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java
+++ b/core/interaction/src/main/java/org/apache/isis/core/interaction/session/InteractionTracker.java
@@ -52,9 +52,6 @@ extends InteractionContext, AuthenticationContext {
     default Optional<ExecutionContext> currentExecutionContext() {
         return currentAuthenticationLayer().map(AuthenticationLayer::getExecutionContext);
     }
-    
-    /** @return authentication-layer-stack size */
-    int getAuthenticationLayerCount();
 
     // -- AUTHENTICATION CONTEXT
     
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/_Xray.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/_Xray.java
index b411521..e2a802c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/events/_Xray.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/events/_Xray.java
@@ -22,7 +22,7 @@ import org.apache.isis.applib.services.confview.ConfigurationViewService;
 import org.apache.isis.commons.internal.debug.xray.XrayDataModel;
 import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.core.interaction.session.InteractionTracker;
-import org.apache.isis.core.runtime.util.XrayUtil;
+import org.apache.isis.core.security.util.XrayUtil;
 
 import lombok.val;
 
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/executor/_Xray.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/executor/_Xray.java
index dee5be8..ea1b763 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/executor/_Xray.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/executor/_Xray.java
@@ -31,8 +31,8 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.core.runtime.util.XrayUtil;
-import org.apache.isis.core.runtime.util.XrayUtil.SequenceHandle;
+import org.apache.isis.core.security.util.XrayUtil;
+import org.apache.isis.core.security.util.XrayUtil.SequenceHandle;
 
 import lombok.NonNull;
 import lombok.val;
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/_Xray.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/_Xray.java
index a2c1d2f..0e7962f 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/_Xray.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/publish/_Xray.java
@@ -37,8 +37,8 @@ import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Text;
 import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.core.interaction.session.InteractionTracker;
-import org.apache.isis.core.runtime.util.XrayUtil;
-import org.apache.isis.core.runtime.util.XrayUtil.SequenceHandle;
+import org.apache.isis.core.security.util.XrayUtil;
+import org.apache.isis.core.security.util.XrayUtil.SequenceHandle;
 
 import lombok.NonNull;
 import lombok.val;
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/_Xray.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/_Xray.java
index 8e150a1..3c5804b 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/_Xray.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/session/_Xray.java
@@ -23,7 +23,7 @@ import java.util.Stack;
 import org.apache.isis.commons.internal.debug.xray.XrayDataModel;
 import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.core.interaction.session.AuthenticationLayer;
-import org.apache.isis.core.runtime.util.XrayUtil;
+import org.apache.isis.core.security.util.XrayUtil;
 
 import lombok.val;
 
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationContext.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationContext.java
index 3fbd90f..4f3b7b4 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationContext.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationContext.java
@@ -48,4 +48,7 @@ public interface AuthenticationContext {
                             _Probe.currentThreadId()));
     }
     
+    /** authentication-layer-stack size */
+    int getAuthenticationLayerCount();
+    
 }
diff --git a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationRequest.java b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationRequest.java
index 5057992..bddafc7 100644
--- a/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationRequest.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/authentication/AuthenticationRequest.java
@@ -23,8 +23,6 @@ import java.util.stream.Stream;
 
 import javax.annotation.Nullable;
 
-import static org.apache.isis.commons.internal.base._NullSafe.stream;
-
 /**
  * Represents a request to authenticate the user identified by
  * {@link AuthenticationRequest#getName()}.
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java b/core/security/src/main/java/org/apache/isis/core/security/util/XrayUtil.java
similarity index 81%
rename from core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java
rename to core/security/src/main/java/org/apache/isis/core/security/util/XrayUtil.java
index e47e425..7052c96 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java
+++ b/core/security/src/main/java/org/apache/isis/core/security/util/XrayUtil.java
@@ -16,18 +16,19 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.runtime.util;
+package org.apache.isis.core.security.util;
 
 import java.util.Optional;
 import java.util.UUID;
 import java.util.function.Consumer;
 
+import org.apache.isis.applib.services.iactn.InteractionContext;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.debug.xray.XrayModel.ThreadMemento;
 import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.commons.internal.debug.xray.sequence.SequenceDiagram;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.interaction.session.InteractionTracker;
+import org.apache.isis.core.security.authentication.AuthenticationContext;
 
 import lombok.Builder;
 import lombok.NonNull;
@@ -38,10 +39,10 @@ public final class XrayUtil {
 
     /**
      * Returns the sequence diagram data model's id, that is bound to the current thread and interaction.
-     * @param iaTracker
+     * @param iaContext
      */
-    public static Optional<String> currentSequenceId(final @NonNull InteractionTracker iaTracker) {
-        return iaTracker.getInteractionId()
+    public static Optional<String> currentSequenceId(final @NonNull InteractionContext iaContext) {
+        return iaContext.getInteractionId()
                 .map(XrayUtil::sequenceId);
     }
     
@@ -63,8 +64,10 @@ public final class XrayUtil {
     
     // -- SEQUENCE HANDLE
     
-    public static Optional<SequenceHandle> createSequenceHandle(
-            final @NonNull InteractionTracker iaTracker,
+    // Using parameter that implements multiple interfaces, because we have no access to InteractionTracker
+    public static <T extends InteractionContext & AuthenticationContext> 
+    Optional<SequenceHandle> createSequenceHandle(
+            final @NonNull T iaTracker,
             final String ... callees) {
 
         if(!iaTracker.isInInteraction()) {
@@ -72,10 +75,10 @@ public final class XrayUtil {
         }
         
         final int authStackSize = iaTracker.getAuthenticationLayerCount();
-        val conversationId = iaTracker.getInteractionId().orElseThrow(_Exceptions::unexpectedCodeReach);
+        val interactionId = iaTracker.getInteractionId().orElseThrow(_Exceptions::unexpectedCodeReach);
         
         val handle = SequenceHandle.builder()
-                .sequenceId(XrayUtil.sequenceId(conversationId))
+                .sequenceId(XrayUtil.sequenceId(interactionId))
                 .caller(authStackSize>0
                         ? XrayUtil.nestedInteractionId(authStackSize)
                         : "thread")
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 563c995..e4728a5 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
@@ -63,7 +63,7 @@ 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;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.runtime.util.XrayUtil;
+import org.apache.isis.core.security.util.XrayUtil;
 import org.apache.isis.core.transaction.events.TransactionBeforeCompletionEvent;
 import org.apache.isis.testdomain.jdo.JdoTestDomainPersona;
 import org.apache.isis.testdomain.jdo.entities.JdoBook;