This is an automated email from the ASF dual-hosted git repository.

remm pushed a commit to branch 11.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/11.0.x by this push:
     new 550129d9b7 Avoid quotes for numbers in JSON from status servlet
550129d9b7 is described below

commit 550129d9b707f8f1698d252a0968ce9bbaadfb19
Author: remm <r...@apache.org>
AuthorDate: Mon Nov 18 20:51:22 2024 +0100

    Avoid quotes for numbers in JSON from status servlet
---
 .../apache/catalina/manager/StatusTransformer.java | 79 ++++++++++++----------
 webapps/docs/changelog.xml                         |  4 ++
 2 files changed, 46 insertions(+), 37 deletions(-)

diff --git a/java/org/apache/catalina/manager/StatusTransformer.java 
b/java/org/apache/catalina/manager/StatusTransformer.java
index ef17d077d0..b5a1d2963f 100644
--- a/java/org/apache/catalina/manager/StatusTransformer.java
+++ b/java/org/apache/catalina/manager/StatusTransformer.java
@@ -214,9 +214,9 @@ public class StatusTransformer {
             indent(writer, 
1).append('"').append("jvm").append('"').append(':').append('{').println();
 
             indent(writer, 
2).append('"').append("memory").append('"').append(':').append('{');
-            appendJSonValue(writer, "free", 
Long.toString(Runtime.getRuntime().freeMemory())).append(',');
-            appendJSonValue(writer, "total", 
Long.toString(Runtime.getRuntime().totalMemory())).append(',');
-            appendJSonValue(writer, "max", 
Long.toString(Runtime.getRuntime().maxMemory()));
+            appendJSonValue(writer, "free", 
Long.valueOf(Runtime.getRuntime().freeMemory())).append(',');
+            appendJSonValue(writer, "total", 
Long.valueOf(Runtime.getRuntime().totalMemory())).append(',');
+            appendJSonValue(writer, "max", 
Long.valueOf(Runtime.getRuntime().maxMemory()));
             writer.append('}').append(',').println();
 
             indent(writer, 
2).append('"').append("memorypool").append('"').append(':').append('[');
@@ -232,10 +232,10 @@ public class StatusTransformer {
                 indent(writer, 3).append('{');
                 appendJSonValue(writer, "name", 
JSONFilter.escape(memoryPoolMBean.getName())).append(',');
                 appendJSonValue(writer, "type", 
memoryPoolMBean.getType().toString()).append(',');
-                appendJSonValue(writer, "usageInit", 
Long.toString(usage.getInit())).append(',');
-                appendJSonValue(writer, "usageCommitted", 
Long.toString(usage.getCommitted())).append(',');
-                appendJSonValue(writer, "usageMax", 
Long.toString(usage.getMax())).append(',');
-                appendJSonValue(writer, "usageUsed", 
Long.toString(usage.getUsed()));
+                appendJSonValue(writer, "usageInit", 
Long.valueOf(usage.getInit())).append(',');
+                appendJSonValue(writer, "usageCommitted", 
Long.valueOf(usage.getCommitted())).append(',');
+                appendJSonValue(writer, "usageMax", 
Long.valueOf(usage.getMax())).append(',');
+                appendJSonValue(writer, "usageUsed", 
Long.valueOf(usage.getUsed()));
                 writer.append('}');
             }
             writer.println();
@@ -247,8 +247,13 @@ public class StatusTransformer {
     }
 
 
-    private static PrintWriter appendJSonValue(PrintWriter writer, String 
name, String value) {
-        return 
writer.append('"').append(name).append('"').append(':').append('"').append(value).append('"');
+    private static PrintWriter appendJSonValue(PrintWriter writer, String 
name, Object value) {
+        writer.append('"').append(name).append('"').append(':');
+        if (value instanceof Number) {
+            return writer.append(value.toString());
+        } else {
+            return writer.append('"').append(value.toString()).append('"');
+        }
     }
 
 
@@ -446,12 +451,12 @@ public class StatusTransformer {
             }
             appendJSonValue(writer, "name", jsonName).append(',').println();
             indent(writer, 
3).append('"').append("threadInfo").append('"').append(':').append('{');
-            appendJSonValue(writer, "maxThreads", 
mBeanServer.getAttribute(tpName, "maxThreads").toString())
+            appendJSonValue(writer, "maxThreads", 
mBeanServer.getAttribute(tpName, "maxThreads"))
                     .append(',');
             appendJSonValue(writer, "currentThreadCount",
-                    mBeanServer.getAttribute(tpName, 
"currentThreadCount").toString()).append(',');
+                    mBeanServer.getAttribute(tpName, 
"currentThreadCount")).append(',');
             appendJSonValue(writer, "currentThreadsBusy",
-                    mBeanServer.getAttribute(tpName, 
"currentThreadsBusy").toString());
+                    mBeanServer.getAttribute(tpName, "currentThreadsBusy"));
             writer.append('}');
 
             ObjectName grpName = null;
@@ -465,16 +470,16 @@ public class StatusTransformer {
             if (grpName != null) {
                 writer.append(',').println();
                 indent(writer, 
3).append('"').append("requestInfo").append('"').append(':').append('{');
-                appendJSonValue(writer, "maxTime", 
mBeanServer.getAttribute(grpName, "maxTime").toString()).append(',');
+                appendJSonValue(writer, "maxTime", 
mBeanServer.getAttribute(grpName, "maxTime")).append(',');
                 appendJSonValue(writer, "processingTime",
-                        mBeanServer.getAttribute(grpName, 
"processingTime").toString()).append(',');
-                appendJSonValue(writer, "requestCount", 
mBeanServer.getAttribute(grpName, "requestCount").toString())
+                        mBeanServer.getAttribute(grpName, 
"processingTime")).append(',');
+                appendJSonValue(writer, "requestCount", 
mBeanServer.getAttribute(grpName, "requestCount"))
                         .append(',');
-                appendJSonValue(writer, "errorCount", 
mBeanServer.getAttribute(grpName, "errorCount").toString())
+                appendJSonValue(writer, "errorCount", 
mBeanServer.getAttribute(grpName, "errorCount"))
                         .append(',');
-                appendJSonValue(writer, "bytesReceived", 
mBeanServer.getAttribute(grpName, "bytesReceived").toString())
+                appendJSonValue(writer, "bytesReceived", 
mBeanServer.getAttribute(grpName, "bytesReceived"))
                         .append(',');
-                appendJSonValue(writer, "bytesSent", 
mBeanServer.getAttribute(grpName, "bytesSent").toString());
+                appendJSonValue(writer, "bytesSent", 
mBeanServer.getAttribute(grpName, "bytesSent"));
                 writer.append('}').println();
                 // Note: No detailed per processor info
             }
@@ -831,11 +836,11 @@ public class StatusTransformer {
             indent(writer, 2).append('{').println();
             appendJSonValue(indent(writer, 3), "name", 
JSONFilter.escape(JSONFilter.escape(name))).append(',');
             appendJSonValue(writer, "startTime",
-                    new Date(((Long) mBeanServer.getAttribute(objectName, 
"startTime")).longValue()).toString())
+                    new Date(((Long) mBeanServer.getAttribute(objectName, 
"startTime"))).toString())
                     .append(',');
-            appendJSonValue(writer, "startupTime", 
mBeanServer.getAttribute(objectName, "startupTime").toString())
+            appendJSonValue(writer, "startupTime", 
mBeanServer.getAttribute(objectName, "startupTime"))
                     .append(',');
-            appendJSonValue(writer, "tldScanTime", 
mBeanServer.getAttribute(objectName, "tldScanTime").toString());
+            appendJSonValue(writer, "tldScanTime", 
mBeanServer.getAttribute(objectName, "tldScanTime"));
             if (managerON != null) {
                 writeManager(writer, managerON, mBeanServer, mode);
             }
@@ -900,22 +905,22 @@ public class StatusTransformer {
         } else if (mode == 2) {
             writer.append(',').println();
             indent(writer, 
3).append('"').append("manager").append('"').append(':').append('{');
-            appendJSonValue(writer, "activeSessions", 
mBeanServer.getAttribute(objectName, "activeSessions").toString())
+            appendJSonValue(writer, "activeSessions", 
mBeanServer.getAttribute(objectName, "activeSessions"))
                     .append(',');
-            appendJSonValue(writer, "sessionCounter", 
mBeanServer.getAttribute(objectName, "sessionCounter").toString())
+            appendJSonValue(writer, "sessionCounter", 
mBeanServer.getAttribute(objectName, "sessionCounter"))
                     .append(',');
-            appendJSonValue(writer, "maxActive", 
mBeanServer.getAttribute(objectName, "maxActive").toString())
+            appendJSonValue(writer, "maxActive", 
mBeanServer.getAttribute(objectName, "maxActive"))
                     .append(',');
             appendJSonValue(writer, "rejectedSessions",
-                    mBeanServer.getAttribute(objectName, 
"rejectedSessions").toString()).append(',');
+                    mBeanServer.getAttribute(objectName, 
"rejectedSessions")).append(',');
             appendJSonValue(writer, "expiredSessions",
-                    mBeanServer.getAttribute(objectName, 
"expiredSessions").toString()).append(',');
+                    mBeanServer.getAttribute(objectName, 
"expiredSessions")).append(',');
             appendJSonValue(writer, "sessionMaxAliveTime",
-                    mBeanServer.getAttribute(objectName, 
"sessionMaxAliveTime").toString()).append(',');
+                    mBeanServer.getAttribute(objectName, 
"sessionMaxAliveTime")).append(',');
             appendJSonValue(writer, "sessionAverageAliveTime",
-                    mBeanServer.getAttribute(objectName, 
"sessionAverageAliveTime").toString()).append(',');
+                    mBeanServer.getAttribute(objectName, 
"sessionAverageAliveTime")).append(',');
             appendJSonValue(writer, "processingTime",
-                    mBeanServer.getAttribute(objectName, 
"processingTime").toString());
+                    mBeanServer.getAttribute(objectName, "processingTime"));
             writer.append('}');
         }
 
@@ -956,8 +961,8 @@ public class StatusTransformer {
         } else if (mode == 2) {
             writer.append(',').println();
             indent(writer, 
3).append('"').append("jsp").append('"').append(':').append('{');
-            appendJSonValue(writer, "jspCount", 
Integer.toString(jspCount)).append(',');
-            appendJSonValue(writer, "jspReloadCount", 
Integer.toString(jspReloadCount));
+            appendJSonValue(writer, "jspCount", 
Integer.valueOf(jspCount)).append(',');
+            appendJSonValue(writer, "jspReloadCount", 
Integer.valueOf(jspReloadCount));
             writer.append('}');
         }
     }
@@ -1014,16 +1019,16 @@ public class StatusTransformer {
         } else if (mode == 2) {
             indent(writer, 4).append('{');
             appendJSonValue(writer, "servletName", 
JSONFilter.escape(servletName)).append(',');
-            appendJSonValue(writer, "processingTime", 
mBeanServer.getAttribute(objectName, "processingTime").toString())
+            appendJSonValue(writer, "processingTime", 
mBeanServer.getAttribute(objectName, "processingTime"))
                     .append(',');
-            appendJSonValue(writer, "maxTime", 
mBeanServer.getAttribute(objectName, "maxTime").toString()).append(',');
-            appendJSonValue(writer, "requestCount", 
mBeanServer.getAttribute(objectName, "requestCount").toString())
+            appendJSonValue(writer, "maxTime", 
mBeanServer.getAttribute(objectName, "maxTime")).append(',');
+            appendJSonValue(writer, "requestCount", 
mBeanServer.getAttribute(objectName, "requestCount"))
                     .append(',');
-            appendJSonValue(writer, "errorCount", 
mBeanServer.getAttribute(objectName, "errorCount").toString())
+            appendJSonValue(writer, "errorCount", 
mBeanServer.getAttribute(objectName, "errorCount"))
                     .append(',');
-            appendJSonValue(writer, "loadTime", 
mBeanServer.getAttribute(objectName, "loadTime").toString())
+            appendJSonValue(writer, "loadTime", 
mBeanServer.getAttribute(objectName, "loadTime"))
                     .append(',');
-            appendJSonValue(writer, "classLoadTime", 
mBeanServer.getAttribute(objectName, "classLoadTime").toString());
+            appendJSonValue(writer, "classLoadTime", 
mBeanServer.getAttribute(objectName, "classLoadTime"));
             writer.append('}');
         }
 
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index aca4e7ed0a..ed6c0fa05d 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -141,6 +141,10 @@
         <code>jakarta.servlet.error.message</code> request attribute is set 
when
         an application defined error page is called. (markt)
       </fix>
+      <fix>
+        Avoid quotes for numeric values in the JSON generated by the status
+        servlet. (remm)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to