From 05d4ee87846c5d3269b3dd1019db6c21c8819cb2 Mon Sep 17 00:00:00 2001 From: kohsuke Date: Sun, 29 Jul 2007 19:05:37 +0000 Subject: [PATCH] unified classicThreadDump and threadDump by auto-detecting the runtime version. git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@3914 71c3de6d-444a-0410-be80-ed276b4c234a --- core/src/main/java/hudson/Functions.java | 26 ++++++++++++++----- core/src/main/java/hudson/model/Hudson.java | 7 +++++ .../model/Hudson/classicThreadDump.jelly | 21 --------------- .../hudson/model/Hudson/threadDump.jelly | 24 ++++++++++++----- 4 files changed, 44 insertions(+), 34 deletions(-) delete mode 100644 core/src/main/resources/hudson/model/Hudson/classicThreadDump.jelly diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java index 42e4b8f551..44f27d73e5 100644 --- a/core/src/main/java/hudson/Functions.java +++ b/core/src/main/java/hudson/Functions.java @@ -26,23 +26,23 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; +import java.lang.management.LockInfo; +import java.lang.management.ManagementFactory; +import java.lang.management.MonitorInfo; +import java.lang.management.ThreadInfo; +import java.lang.management.ThreadMXBean; import java.net.URI; import java.net.URISyntaxException; import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; -import java.util.Collection; -import java.util.Collections; import java.util.logging.LogRecord; import java.util.logging.SimpleFormatter; -import java.lang.management.ManagementFactory; -import java.lang.management.ThreadMXBean; -import java.lang.management.ThreadInfo; -import java.lang.management.MonitorInfo; -import java.lang.management.LockInfo; /** * Utility functions used in views. @@ -483,6 +483,18 @@ public class Functions { return mbean.getThreadInfo(mbean.getAllThreadIds(),mbean.isObjectMonitorUsageSupported(),mbean.isSynchronizerUsageSupported()); } + /** + * Are we running on JRE6 or above? + */ + public static boolean isMustangOrAbove() { + try { + System.console(); + return true; + } catch(LinkageError e) { + return false; + } + } + // ThreadInfo.toString() truncates the stack trace by first 8, so needed my own version public static String dumpThreadInfo(ThreadInfo ti) { StringBuilder sb = new StringBuilder("\"" + ti.getThreadName() + "\"" + diff --git a/core/src/main/java/hudson/model/Hudson.java b/core/src/main/java/hudson/model/Hudson.java index 22458c8900..a1dac4de24 100644 --- a/core/src/main/java/hudson/model/Hudson.java +++ b/core/src/main/java/hudson/model/Hudson.java @@ -1148,6 +1148,13 @@ public final class Hudson extends View implements ItemGroup, Node rsp.sendRedirect2("."); } + /** + * Backward compatibility. Redirect to the thread dump. + */ + public void doClassicThreadDump( StaplerRequest req, StaplerResponse rsp ) throws IOException, ServletException { + rsp.sendRedirect2("threadDump"); + } + public synchronized Item doCreateItem( StaplerRequest req, StaplerResponse rsp ) throws IOException, ServletException { if(!Hudson.adminCheck(req,rsp)) return null; diff --git a/core/src/main/resources/hudson/model/Hudson/classicThreadDump.jelly b/core/src/main/resources/hudson/model/Hudson/classicThreadDump.jelly deleted file mode 100644 index 0587989e7d..0000000000 --- a/core/src/main/resources/hudson/model/Hudson/classicThreadDump.jelly +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - -

Thread Dump

- -

${e.key} (${e.key.state})

- -
${f}
-
-
-
-
-
diff --git a/core/src/main/resources/hudson/model/Hudson/threadDump.jelly b/core/src/main/resources/hudson/model/Hudson/threadDump.jelly index d52df4617f..03ee6d27a4 100644 --- a/core/src/main/resources/hudson/model/Hudson/threadDump.jelly +++ b/core/src/main/resources/hudson/model/Hudson/threadDump.jelly @@ -1,7 +1,5 @@ @@ -9,10 +7,24 @@

Thread Dump

- -

${t.threadName}

-
${h.dumpThreadInfo(t)}
-
+ + + + +

${t.threadName}

+
${h.dumpThreadInfo(t)}
+
+
+ + + +

${e.key} (${e.key.state})

+ +
${f}
+
+
+
+
-- GitLab