From 35d4bb3283baf6956611296c9cfb28d4e458519b Mon Sep 17 00:00:00 2001 From: rjung Date: Sat, 15 May 2010 12:59:21 +0000 Subject: [PATCH] List array elements in the JMX proxy output of the Manager application. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@944633 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/catalina/manager/JMXProxyServlet.java | 42 ++++++++++++++++++++-- webapps/docs/changelog.xml | 4 +++ 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/java/org/apache/catalina/manager/JMXProxyServlet.java b/java/org/apache/catalina/manager/JMXProxyServlet.java index 1c71cb53c..a612561eb 100644 --- a/java/org/apache/catalina/manager/JMXProxyServlet.java +++ b/java/org/apache/catalina/manager/JMXProxyServlet.java @@ -21,6 +21,7 @@ package org.apache.catalina.manager; import java.io.IOException; import java.io.PrintWriter; +import java.lang.reflect.Array; import java.util.Iterator; import java.util.Set; import javax.management.MBeanServer; @@ -169,6 +170,7 @@ public class JMXProxyServlet extends HttpServlet { if( ! attrs[i].isReadable() ) continue; if( ! isSupported( attrs[i].getType() )) continue; String attName=attrs[i].getName(); + if( "modelerType".equals( attName)) continue; if( attName.indexOf( "=") >=0 || attName.indexOf( ":") >=0 || attName.indexOf( " ") >=0 ) { @@ -183,9 +185,43 @@ public class JMXProxyServlet extends HttpServlet { continue; } if( value==null ) continue; - if( "modelerType".equals( attName)) continue; - String valueString=value.toString(); - writer.println( attName + ": " + escape(valueString)); + String valueString; + try { + Class c = value.getClass(); + if (c.isArray()) { + int len = Array.getLength(value); + StringBuilder sb = new StringBuilder("Array[" + + c.getComponentType().getName() + "] of length " + len); + if (len > 0) { + sb.append("\r\n"); + } + for (int j = 0; j < len; j++) { + sb.append("\t"); + Object item = Array.get(value, j); + if (item == null) { + sb.append("NULL VALUE"); + } else { + try { + sb.append(escape(item.toString())); + } + catch (Throwable t) { + sb.append("NON-STRINGABLE VALUE"); + } + } + if (j < len - 1) { + sb.append("\r\n"); + } + } + valueString = sb.toString(); + } + else { + valueString = escape(value.toString()); + } + writer.println( attName + ": " + valueString); + } + catch (Throwable t) { + // Ignore + } } } catch (Exception e) { // Ignore diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 82b194c40..1b342aa4e 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -213,6 +213,10 @@ CSRF protection was added to the Manager and Host Manager applications. (markt) + + List array elements in the JMX proxy output of the Manager application. + (rjung) + -- 2.11.0