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);
});
});