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 2018/08/30 12:38:58 UTC

[isis] 02/04: ISIS-1841: Internal API: new debug utility

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

commit ba97ffdf22468cc89e007595abcb7da44076c794
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Aug 30 07:50:13 2018 +0200

    ISIS-1841: Internal API: new debug utility
    
    for printing current thread's StackTrace
---
 .../commons/internal/exceptions/_Exceptions.java   | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java b/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
index 6f7cca2..968f0f9 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/exceptions/_Exceptions.java
@@ -19,8 +19,10 @@
 
 package org.apache.isis.commons.internal.exceptions;
 
+import static org.apache.isis.commons.internal.base._NullSafe.stream;
 import static org.apache.isis.commons.internal.base._With.requires;
 
+import java.io.PrintStream;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
@@ -31,7 +33,6 @@ import java.util.stream.Stream;
 
 import javax.annotation.Nullable;
 
-import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.functions._Functions;
 
@@ -139,11 +140,25 @@ public final class _Exceptions {
         if(ex==null) {
             return Stream.empty();
         }
-        return _NullSafe.stream(ex.getStackTrace())
+        return stream(ex.getStackTrace())
                 .map(StackTraceElement::toString)
                 .limit(maxLines);
     }
 
+    /**
+     * Dumps the current thread's stack-trace onto the given {@code writer}.
+     * @param writer
+     * @param skipLines
+     * @param maxLines
+     */
+    public static void dumpStackTrace(PrintStream writer, int skipLines, int maxLines) {
+        stream(Thread.currentThread().getStackTrace())
+        .map(StackTraceElement::toString)
+        .skip(skipLines)
+        .limit(maxLines)
+        .forEach(writer::println);
+    }
+
     // -- CAUSAL CHAIN
 
     public static List<Throwable> getCausalChain(@Nullable Throwable ex) {
@@ -279,7 +294,4 @@ public final class _Exceptions {
     }
 
 
-
-
-
 }