You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/05/05 00:45:20 UTC
svn commit: r1479212 - in /tomcat/trunk/java/org/apache:
catalina/manager/ManagerServlet.java tomcat/util/Diagnostics.java
tomcat/util/LocalStrings.properties
Author: markt
Date: Sat May 4 22:45:19 2013
New Revision: 1479212
URL: http://svn.apache.org/r1479212
Log:
i18n for diagnostics using the user's Locale
Added:
tomcat/trunk/java/org/apache/tomcat/util/LocalStrings.properties (with props)
Modified:
tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java
tomcat/trunk/java/org/apache/tomcat/util/Diagnostics.java
Modified: tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java?rev=1479212&r1=1479211&r2=1479212&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java (original)
+++ tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java Sat May 4 22:45:19 2013
@@ -368,9 +368,9 @@ public class ManagerServlet extends Http
} else if (command.equals("/findleaks")) {
findleaks(statusLine, writer, smClient);
} else if (command.equals("/vminfo")) {
- vmInfo(writer, smClient);
+ vmInfo(writer, request.getLocales());
} else if (command.equals("/threaddump")) {
- threadDump(writer, smClient);
+ threadDump(writer, request.getLocales());
} else if (command.equals("/sslConnectorCiphers")) {
sslConnectorCiphers(writer, smClient);
} else {
@@ -543,8 +543,9 @@ public class ManagerServlet extends Http
*
* @param writer
*/
- protected void vmInfo(PrintWriter writer, StringManager smClient) {
- writer.print(Diagnostics.getVMInfo());
+ protected void vmInfo(PrintWriter writer,
+ Enumeration<Locale> requestedLocales) {
+ writer.print(Diagnostics.getVMInfo(requestedLocales));
}
/**
@@ -553,8 +554,9 @@ public class ManagerServlet extends Http
*
* @param writer
*/
- protected void threadDump(PrintWriter writer, StringManager smClient) {
- writer.print(Diagnostics.getThreadDump());
+ protected void threadDump(PrintWriter writer,
+ Enumeration<Locale> requestedLocales) {
+ writer.print(Diagnostics.getThreadDump(requestedLocales));
}
protected void sslConnectorCiphers(PrintWriter writer,
Modified: tomcat/trunk/java/org/apache/tomcat/util/Diagnostics.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/Diagnostics.java?rev=1479212&r1=1479211&r2=1479212&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/Diagnostics.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/Diagnostics.java Sat May 4 22:45:19 2013
@@ -16,7 +16,6 @@
*/
// XXX TODO: Source code line length
-// XXX TODO: StringManager
// XXX TODO: Sort logger names and system property keys in getVMInfo()
// XXX TODO: Add memory and GC MBeans to getVMInfo()
// XXX Optional: Wire setters to the manager:
@@ -40,13 +39,20 @@ import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.Enumeration;
+import java.util.Locale;
//import java.util.List;
import java.util.Map;
import java.util.logging.LogManager;
import java.util.logging.LoggingMXBean;
+import org.apache.tomcat.util.res.StringManager;
+
public class Diagnostics {
+ private static final String PACKAGE = "org.apache.tomcat.util";
+ private static final StringManager sm = StringManager.getManager(PACKAGE);
+
private static final String INDENT1 = " ";
private static final String INDENT2 = "\t";
private static final String INDENT3 = " ";
@@ -288,11 +294,32 @@ public class Diagnostics {
return "";
}
+ private static StringManager getStringManager(
+ Enumeration<Locale> requestedLocales) {
+ while (requestedLocales.hasMoreElements()) {
+ Locale locale = requestedLocales.nextElement();
+ StringManager result = StringManager.getManager(PACKAGE, locale);
+ if (result.getLocale().equals(locale)) {
+ return result;
+ }
+ }
+ // Return the default
+ return sm;
+ }
+
+ public static String getThreadDump() {
+ return getThreadDump(sm);
+ }
+
+ public static String getThreadDump(Enumeration<Locale> requestedLocales) {
+ return getThreadDump(getStringManager(requestedLocales));
+ }
+
/**
* Retrieve a formatted JVM thread dump.
* @return the thread dump
*/
- public static String getThreadDump() {
+ public static String getThreadDump(StringManager requestedSm) {
StringBuilder sb = new StringBuilder();
synchronized(timeformat) {
@@ -300,7 +327,8 @@ public class Diagnostics {
}
sb.append(CRLF);
- sb.append("Full thread dump ");
+ sb.append(requestedSm.getString("diagnostics.threadDumpTitle"));
+ sb.append(" ");
sb.append(runtimeMXBean.getVmName());
sb.append(" (");
sb.append(runtimeMXBean.getVmVersion());
@@ -318,11 +346,19 @@ public class Diagnostics {
return sb.toString();
}
+ public static String getVMInfo() {
+ return getVMInfo(sm);
+ }
+
+ public static String getVMInfo(Enumeration<Locale> requestedLocales) {
+ return getVMInfo(getStringManager(requestedLocales));
+ }
+
/**
* Retrieve a formatted JVM thread dump.
* @return the thread dump
*/
- public static String getVMInfo() {
+ public static String getVMInfo(StringManager requestedSm) {
StringBuilder sb = new StringBuilder();
synchronized(timeformat) {
@@ -330,7 +366,8 @@ public class Diagnostics {
}
sb.append(CRLF);
- sb.append("Runtime information:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoRuntime"));
+ sb.append(":" + CRLF);
sb.append(INDENT1 + "vmName: " + runtimeMXBean.getVmName() + CRLF);
sb.append(INDENT1 + "vmVersion: " + runtimeMXBean.getVmVersion() + CRLF);
sb.append(INDENT1 + "vmVendor: " + runtimeMXBean.getVmVendor() + CRLF);
@@ -346,7 +383,8 @@ public class Diagnostics {
runtimeMXBean.isBootClassPathSupported() + CRLF);
sb.append(CRLF);
- sb.append("OS information:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoOs"));
+ sb.append(":" + CRLF);
sb.append(INDENT1 + "name: " + operatingSystemMXBean.getName() + CRLF);
sb.append(INDENT1 + "version: " + operatingSystemMXBean.getVersion() + CRLF);
sb.append(INDENT1 + "architecture: " + operatingSystemMXBean.getArch() + CRLF);
@@ -356,7 +394,8 @@ public class Diagnostics {
operatingSystemMXBean.getSystemLoadAverage() + CRLF);
sb.append(CRLF);
- sb.append("ThreadMXBean capabilities:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoThreadMxBean"));
+ sb.append(":" + CRLF);
sb.append(INDENT1 + "isCurrentThreadCpuTimeSupported: " +
threadMXBean.isCurrentThreadCpuTimeSupported() + CRLF);
sb.append(INDENT1 + "isThreadCpuTimeSupported: " +
@@ -373,7 +412,8 @@ public class Diagnostics {
threadMXBean.isThreadContentionMonitoringEnabled() + CRLF);
sb.append(CRLF);
- sb.append("Thread counts:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoThreadCounts"));
+ sb.append(":" + CRLF);
sb.append(INDENT1 + "daemon: " + threadMXBean.getDaemonThreadCount() + CRLF);
sb.append(INDENT1 + "total: " + threadMXBean.getThreadCount() + CRLF);
sb.append(INDENT1 + "peak: " + threadMXBean.getPeakThreadCount() + CRLF);
@@ -381,7 +421,8 @@ public class Diagnostics {
threadMXBean.getTotalStartedThreadCount() + CRLF);
sb.append(CRLF);
- sb.append("Class loading:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoClassLoading"));
+ sb.append(":" + CRLF);
sb.append(INDENT1 + "loaded: " +
classLoadingMXBean.getLoadedClassCount() + CRLF);
sb.append(INDENT1 + "unloaded: " +
@@ -392,7 +433,8 @@ public class Diagnostics {
classLoadingMXBean.isVerbose() + CRLF);
sb.append(CRLF);
- sb.append("Class compilation:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoClassCompilation"));
+ sb.append(":" + CRLF);
sb.append(INDENT1 + "name: " + compilationMXBean.getName() + CRLF);
sb.append(INDENT1 + "totalCompilationTime: " +
compilationMXBean.getTotalCompilationTime() + CRLF);
@@ -400,26 +442,30 @@ public class Diagnostics {
compilationMXBean.isCompilationTimeMonitoringSupported() + CRLF);
sb.append(CRLF);
- sb.append("Path information:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoPath"));
+ sb.append(":" + CRLF);
sb.append(INDENT1 + "bootClassPath: " + runtimeMXBean.getBootClassPath() + CRLF);
sb.append(INDENT1 + "classPath: " + runtimeMXBean.getClassPath() + CRLF);
sb.append(INDENT1 + "libraryPath: " + runtimeMXBean.getLibraryPath() + CRLF);
sb.append(CRLF);
- sb.append("Startup arguments:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoStartup"));
+ sb.append(":" + CRLF);
for (String arg: runtimeMXBean.getInputArguments()) {
sb.append(INDENT1 + arg + CRLF);
}
sb.append(CRLF);
- sb.append("System properties:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoSystem"));
+ sb.append(":" + CRLF);
Map<String,String> props = runtimeMXBean.getSystemProperties();
for (String prop: props.keySet()) {
sb.append(INDENT1 + prop + ": " + props.get(prop) + CRLF);
}
sb.append(CRLF);
- sb.append("Logger information:" + CRLF);
+ sb.append(requestedSm.getString("diagnostics.vmInfoLogger"));
+ sb.append(":" + CRLF);
for (String logger: loggingMXBean.getLoggerNames()) {
sb.append(INDENT1 + logger +
": level=" + loggingMXBean.getLoggerLevel(logger) +
Added: tomcat/trunk/java/org/apache/tomcat/util/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/LocalStrings.properties?rev=1479212&view=auto
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/LocalStrings.properties (added)
+++ tomcat/trunk/java/org/apache/tomcat/util/LocalStrings.properties Sat May 4 22:45:19 2013
@@ -0,0 +1,27 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+diagnostics.threadDumpTitle=Full thread dump
+
+diagnostics.vmInfoClassCompilation=Class compilation
+diagnostics.vmInfoClassLoading=Class loading
+diagnostics.vmInfoLogger=Logger information
+diagnostics.vmInfoOs=OS information
+diagnostics.vmInfoPath=Path information
+diagnostics.vmInfoRuntime=Runtime information
+diagnostics.vmInfoStartup=Startup arguments
+diagnostics.vmInfoSystem=System properties
+diagnostics.vmInfoThreadCounts=Thread counts
+diagnostics.vmInfoThreadMxBean=ThreadMXBean capabilities
\ No newline at end of file
Propchange: tomcat/trunk/java/org/apache/tomcat/util/LocalStrings.properties
------------------------------------------------------------------------------
svn:eol-style = native
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org