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/26 14:35:19 UTC

[isis] branch master updated: ISIS-2573: xray: house keeping

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 a77d523  ISIS-2573: xray: house keeping
a77d523 is described below

commit a77d523bf5445b518d15d20d9df67457b3a0bba7
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Mar 26 15:35:04 2021 +0100

    ISIS-2573: xray: house keeping
---
 .../apache/isis/core/runtime/util/XrayUtil.java    | 11 +++
 .../isis/core/runtimeservices/executor/_Xray.java  | 90 ++++++++--------------
 .../isis/core/runtimeservices/publish/_Xray.java   | 48 ++++++------
 .../isis/core/runtimeservices/session/_Xray.java   |  3 +
 4 files changed, 70 insertions(+), 82 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java
index d503bbc..4b543c8 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/util/XrayUtil.java
@@ -20,8 +20,11 @@ package org.apache.isis.core.runtime.util;
 
 import java.util.Optional;
 import java.util.UUID;
+import java.util.function.Consumer;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.debug.xray.XrayUi;
+import org.apache.isis.commons.internal.debug.xray.XrayDataModel.Sequence;
 import org.apache.isis.commons.internal.debug.xray.XrayModel.ThreadMemento;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.interaction.session.InteractionTracker;
@@ -87,6 +90,14 @@ public final class XrayUtil {
         final @NonNull String sequenceId;
         final @NonNull String caller;
         final @NonNull Can<String> callees;
+        
+        public void submit(Consumer<Sequence> onSequenceEntry) {
+            XrayUi.updateModel(model->{
+                model.lookupSequence(getSequenceId())
+                .ifPresent(onSequenceEntry);
+            });
+        }
+        
     }
     
 }
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 1fa0ead..b95dbaa 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
@@ -32,14 +32,14 @@ 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 lombok.Builder;
 import lombok.NonNull;
 import lombok.val;
 
 final class _Xray {
 
-    static Handle enterActionInvocation(
+    static SequenceHandle enterActionInvocation(
             final @NonNull InteractionTracker iaTracker,
             final @NonNull InternalInteraction interaction, 
             final @NonNull ObjectAction owningAction,
@@ -63,7 +63,7 @@ final class _Xray {
         return enterInvocation(iaTracker, interaction, participantLabel, enteringLabel);
     }
     
-    public static Handle enterPropertyEdit(
+    public static SequenceHandle enterPropertyEdit(
             final @NonNull InteractionTracker iaTracker,
             final @NonNull InternalInteraction interaction, 
             final @NonNull OneToOneAssociation owningProperty,
@@ -81,79 +81,57 @@ final class _Xray {
         return enterInvocation(iaTracker, interaction, participantLabel, enteringLabel);
     }
     
-    private static Handle enterInvocation(
+    private static SequenceHandle enterInvocation(
             final @NonNull InteractionTracker iaTracker,
             final InternalInteraction interaction,
             final String participantLabel,
             final String enteringLabel) {
-        
-
 
-//        val execution = interaction.getCurrentExecution(); // XXX why not populated?
-//
-//        val command = interaction.getCommand();
-//        if(command==null
-//                || command.getCommandDto()==null
-//                || command.getCommandDto().getMember()==null) {
-//            return null;
-//        }
-//        
-//        // the act/prop/coll that is interacted with
-//        val memberDto = command.getCommandDto().getMember();
-//        
-//        val memberLogicalId = memberDto.getLogicalMemberIdentifier();
-//        
-//        val interactionDescription = memberDto.getInteractionType()==InteractionType.PROPERTY_EDIT
-//                ? String.format("property edit -> '%s'", 
-//                        CommonDtoUtils.<Object>getValue(((PropertyDto)memberDto).getNewValue()))
-//                : String.format("action invocation");
-        
-        final int authStackSize = iaTracker.getAuthenticationLayerCount();
+        // val execution = interaction.getCurrentExecution(); // XXX why not populated?
         
-        val handle = Handle.builder()
-                .sequenceId(XrayUtil.sequenceId(interaction.getInteractionId()))
-                .caller(authStackSize>0
-                    ? XrayUtil.nestedInteractionId(authStackSize)
-                    : "thread")
-                .callee(participantLabel)
-                .build();
-        
-        XrayUi.updateModel(model->{
-            model.lookupSequence(handle.sequenceId)
-            .ifPresent(sequence->{
+        val handleIfAny = XrayUtil.createSequenceHandle(iaTracker, "executor", participantLabel);
+        handleIfAny.ifPresent(handle->{
+           
+            handle.submit(sequence->{
                 val sequenceData = sequence.getData();
                 
                 sequenceData.alias("executor", "Member-\nExecutorService-\n(Default)");
                 
-                sequenceData.enter(handle.caller, "executor");
-                sequenceData.enter("executor", handle.callee, enteringLabel);
+                val callee1 = handle.getCallees().getFirstOrFail();
+                val callee2 = handle.getCallees().getLastOrFail();
+                
+                sequenceData.enter(handle.getCaller(), callee1);
+                sequenceData.activate(callee1);
+                
+                sequenceData.enter(callee1, callee2, enteringLabel);
+                sequenceData.activate(callee2);
             });
+            
         });
         
-        return handle;
+        return handleIfAny.orElse(null);
+ 
     }
 
-    static void exitInvocation(final @Nullable Handle handle) {
+    static void exitInvocation(final @Nullable SequenceHandle handle) {
         if(handle==null) {
             return; // x-ray is not enabled
         }
         
-        XrayUi.updateModel(model->{
-            model.lookupSequence(handle.sequenceId)
-            .ifPresent(sequence->{
-                val sequenceData = sequence.getData();
-                sequenceData.exit(handle.callee, "executor");
-                sequenceData.exit("executor", handle.caller);
-            });
+        handle.submit(sequence->{
+            val sequenceData = sequence.getData();
+            
+            val callee1 = handle.getCallees().getFirstOrFail();
+            val callee2 = handle.getCallees().getLastOrFail();
+            
+            sequenceData.exit(callee2, callee1);
+            sequenceData.deactivate(callee2);
+            
+            sequenceData.exit(callee1, handle.getCaller());
+            sequenceData.deactivate(callee1);
+            
         });
+        
     }
-    
-    @Builder
-    static final class Handle {
-        final @NonNull String sequenceId;
-        final @NonNull String caller;
-        final @NonNull String callee;
-    }
-
 
 }
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 8a9daf8..b2f2ce4 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
@@ -54,15 +54,14 @@ final class _Xray {
         val handleIfAny = XrayUtil.createSequenceHandle(iaTracker, "cmd-publisher");
         handleIfAny.ifPresent(handle->{
            
-            XrayUi.updateModel(model->{
-                model.lookupSequence(handle.getSequenceId())
-                .ifPresent(sequence->{
-                    val sequenceData = sequence.getData();
-                    
-                    sequenceData.alias("cmd-publisher", "Command-\nPublisher-\n(Default)");
-                    sequenceData.enter(handle.getCaller(), handle.getCallees().getFirstOrFail(), enteringLabel);
-                    
-                });
+            handle.submit(sequence->{
+                val sequenceData = sequence.getData();
+                
+                sequenceData.alias("cmd-publisher", "Command-\nPublisher-\n(Default)");
+                
+                val callee = handle.getCallees().getFirstOrFail();
+                sequenceData.enter(handle.getCaller(), callee, enteringLabel);
+                sequenceData.activate(callee);
             });
             
         });
@@ -89,16 +88,15 @@ final class _Xray {
         
         val handleIfAny = XrayUtil.createSequenceHandle(iaTracker, "exec-publisher");
         handleIfAny.ifPresent(handle->{
-           
-            XrayUi.updateModel(model->{
-                model.lookupSequence(handle.getSequenceId())
-                .ifPresent(sequence->{
-                    val sequenceData = sequence.getData();
-                    
-                    sequenceData.alias("exec-publisher", "Execution-\nPublisher-\n(Default)");
-                    sequenceData.enter(handle.getCaller(), handle.getCallees().getFirstOrFail(), enteringLabel);
-                    
-                });
+            
+            handle.submit(sequence->{
+                val sequenceData = sequence.getData();
+                
+                sequenceData.alias("exec-publisher", "Execution-\nPublisher-\n(Default)");
+                
+                val callee = handle.getCallees().getFirstOrFail();
+                sequenceData.enter(handle.getCaller(), callee, enteringLabel);
+                sequenceData.activate(callee);
             });
             
         });
@@ -115,15 +113,13 @@ final class _Xray {
             return; // x-ray is not enabled
         }
         
-        XrayUi.updateModel(model->{
-            model.lookupSequence(handle.getSequenceId())
-            .ifPresent(sequence->{
-                val sequenceData = sequence.getData();
-                sequenceData.exit(handle.getCallees().getFirstOrFail(), handle.getCaller());
-            });
+        handle.submit(sequence->{
+            val sequenceData = sequence.getData();
+            val callee = handle.getCallees().getFirstOrFail();
+            sequenceData.exit(callee, handle.getCaller());
+            sequenceData.deactivate(callee);
         });
         
     }
-
     
 }
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 72fefdb..8e150a1 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
@@ -67,6 +67,7 @@ final class _Xray {
                 sequenceData.alias(uiInteractionId, iaLabelMultiline);
                 
                 sequenceData.enter("thread", uiInteractionId, iaOpeningLabel);
+                sequenceData.activate(uiInteractionId);
                 
                 return;
             }
@@ -76,6 +77,7 @@ final class _Xray {
                 val sequenceData = sequence.getData();
                 sequenceData
                 .enter(XrayUtil.nestedInteractionId(authStackSize-1), uiInteractionId, iaOpeningLabel);
+                sequenceData.activate(uiInteractionId);
             });
             
             
@@ -108,6 +110,7 @@ final class _Xray {
                 
                 sequenceData
                 .exit(uiInteractionId, XrayUtil.nestedInteractionId(authStackSize-1), "close");
+                sequenceData.deactivate(uiInteractionId);
             });
             
         });