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/12/03 17:18:37 UTC

[isis] branch master updated: ISIS-2903: Xray/Debug: minor rendering improvement

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 1936e91  ISIS-2903: Xray/Debug: minor rendering improvement
1936e91 is described below

commit 1936e91c1316bc0e69e1ff31c4bbf2318aee4e2a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Dec 3 18:17:33 2021 +0100

    ISIS-2903: Xray/Debug: minor rendering improvement
---
 .../apache/isis/commons/internal/debug/_Debug.java | 34 +++-------------------
 .../internal/debug/xray/_CallStackMerger.java      |  8 +++--
 .../commons/internal/exceptions/_Exceptions.java   | 33 +++++++++++++++++++++
 3 files changed, 42 insertions(+), 33 deletions(-)

diff --git a/commons/src/main/java/org/apache/isis/commons/internal/debug/_Debug.java b/commons/src/main/java/org/apache/isis/commons/internal/debug/_Debug.java
index 225c7cf..6b3269b 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/debug/_Debug.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/debug/_Debug.java
@@ -18,14 +18,13 @@
  */
 package org.apache.isis.commons.internal.debug;
 
-import java.util.Map;
 import java.util.stream.Collectors;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.handler.ChainOfResponsibility;
 import org.apache.isis.commons.internal.base._NullSafe;
-import org.apache.isis.commons.internal.base._Refs;
 import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.debug.xray.XrayUi;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 
 import lombok.val;
@@ -35,7 +34,7 @@ import lombok.experimental.UtilityClass;
  * <h1>- internal use only -</h1>
  * <p>
  * Utility for adding temporary debug code,
- * that needs to be removed later.
+ * that needs to be removed later. Also integrates with {@link XrayUi}, if enabled.
  * </p>
  * <p>
  * <b>WARNING</b>: Do <b>NOT</b> use any of the classes provided by this package! <br/>
@@ -123,37 +122,12 @@ public class _Debug {
         return se.getLineNumber()>1
                 && !se.getClassName().equals(_Debug.class.getName())
                 && !se.getClassName().startsWith(ChainOfResponsibility.class.getName())
+                && !se.getClassName().startsWith("java.util.stream") // suppress Stream processing details
                 ;
     }
 
-    private final static Map<String, String> packageReplacements = Map.of(
-            //"org.apache.isis", "", // unfortunately no IDE support for this (click on StackTraceElement links)
-            "org.apache.wicket", "{wkt}",
-            "org.springframework", "{spring}",
-            "org.apache.tomcat", "{tomcat}",
-            "org.apache.catalina", "{catalina}"
-            );
-
     private String stringify(final StackTraceElement se) {
-        val str = se.toString();
-
-        return packageReplacements.entrySet().stream()
-        .filter(entry->str.startsWith(entry.getKey()))
-        .map(entry->{
-            val replacement = entry.getValue();
-            var s = str;
-            s = s.replace(entry.getKey() + ".", replacement.isEmpty() ? "{" : replacement + ".");
-            val ref = _Refs.stringRef(s);
-            val left = ref.cutAtIndexOfAndDrop(".");
-            val right = ref.getValue();
-            s = replacement.isEmpty()
-                    ? left + "}." + right
-                    : left + "." + right;
-            return s;
-        })
-        .findFirst()
-        .orElse(str);
+        return _Exceptions.abbreviate(se.toString());
     }
 
-
 }
diff --git a/commons/src/main/java/org/apache/isis/commons/internal/debug/xray/_CallStackMerger.java b/commons/src/main/java/org/apache/isis/commons/internal/debug/xray/_CallStackMerger.java
index 2d90585..b0fb9e4 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/debug/xray/_CallStackMerger.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/debug/xray/_CallStackMerger.java
@@ -33,6 +33,7 @@ import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.commons.internal.debug.xray.XrayDataModel.LogEntry;
 import org.apache.isis.commons.internal.debug.xray.graphics.CallStackDiagram;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
@@ -106,9 +107,9 @@ final class _CallStackMerger {
             for (Iterator<IntTreeNode> it = children.iterator(); it.hasNext();) {
                 IntTreeNode next = it.next();
                 if (it.hasNext()) {
-                    next.print(valueMapper, buffer, childrenPrefix + "├── ", childrenPrefix + "│   ");
+                    next.print(valueMapper, buffer, childrenPrefix + "├─ ", childrenPrefix + "│  ");
                 } else {
-                    next.print(valueMapper, buffer, childrenPrefix + "└── ", childrenPrefix + "    ");
+                    next.print(valueMapper, buffer, childrenPrefix + "└─ ", childrenPrefix + "   ");
                 }
             }
         }
@@ -148,7 +149,8 @@ final class _CallStackMerger {
 
         val root = merge(executionLanes);
         callStackDiagram = new CallStackDiagram(root.print(id->{
-            return executionNodeMap.getOrDefault(id, "root");
+            return _Exceptions.abbreviate(
+                    executionNodeMap.getOrDefault(id, "root"));
         }).toString());
     }
 
diff --git a/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java b/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
index 1305fef..11f13d6 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
@@ -21,6 +21,7 @@ package org.apache.isis.commons.internal.exceptions;
 import java.io.PrintStream;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Optional;
 import java.util.function.Predicate;
@@ -31,6 +32,7 @@ import org.springframework.lang.Nullable;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._NullSafe;
+import org.apache.isis.commons.internal.base._Refs;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 
@@ -385,6 +387,35 @@ public final class _Exceptions {
         return false;
     }
 
+    // -- STACKTRACE FORMATTING UTILITY
+
+    private final static Map<String, String> packageReplacements = Map.of(
+            //"org.apache.isis", "", // unfortunately no IDE support for this (click on StackTraceElement links)
+            "org.apache.wicket", "{wkt}",
+            "org.springframework", "{spring}",
+            "org.apache.tomcat", "{tomcat}",
+            "org.apache.catalina", "{catalina}"
+            );
+
+    public static String abbreviate(final String className) {
+        val str = className;
+        return packageReplacements.entrySet().stream()
+                .filter(entry->str.startsWith(entry.getKey()))
+                .map(entry->{
+                    val replacement = entry.getValue();
+                    var s = str;
+                    s = s.replace(entry.getKey() + ".", replacement.isEmpty() ? "{" : replacement + ".");
+                    val ref = _Refs.stringRef(s);
+                    val left = ref.cutAtIndexOfAndDrop(".");
+                    val right = ref.getValue();
+                    s = replacement.isEmpty()
+                            ? left + "}." + right
+                            : left + "." + right;
+                    return s;
+                })
+                .findFirst()
+                .orElse(str);
+    }
 
     // -- FLUENT EXCEPTION
 
@@ -446,4 +477,6 @@ public final class _Exceptions {
     }
 
 
+
+
 }