From 09484dd10bba52e2bc2c7bc2ce742e4a8e58a8be Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 10 Mar 2016 08:40:41 +0000
Subject: [PATCH] Added MonitorData class to simplify writing monitored objects
---
opendj-server-legacy/src/main/java/org/opends/server/monitors/StackTraceMonitorProvider.java | 73 ++++++++++++++++++------------------
1 files changed, 37 insertions(+), 36 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/monitors/StackTraceMonitorProvider.java b/opendj-server-legacy/src/main/java/org/opends/server/monitors/StackTraceMonitorProvider.java
index 27c2569..910f6f8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/monitors/StackTraceMonitorProvider.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/monitors/StackTraceMonitorProvider.java
@@ -12,21 +12,19 @@
* information: "Portions Copyright [year] [name of copyright owner]".
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2014-2015 ForgeRock AS.
+ * Portions Copyright 2014-2016 ForgeRock AS.
*/
package org.opends.server.monitors;
-import static org.opends.server.util.CollectionUtils.*;
-
-import java.util.List;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Map;
import java.util.TreeMap;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.admin.std.server.StackTraceMonitorProviderCfg;
+import org.opends.server.api.MonitorData;
import org.opends.server.api.MonitorProvider;
-import org.opends.server.types.Attribute;
-import org.opends.server.types.AttributeBuilder;
import org.opends.server.types.InitializationException;
/**
@@ -52,7 +50,7 @@
}
@Override
- public List<Attribute> getMonitorData()
+ public MonitorData getMonitorData()
{
Map<Thread,StackTraceElement[]> threadStacks = Thread.getAllStackTraces();
@@ -63,48 +61,51 @@
orderedStacks.put(e.getKey().getId(), e);
}
- AttributeBuilder builder = new AttributeBuilder("jvmThread");
+ Collection<String> jvmThreads = new ArrayList<>();
for (Map.Entry<Thread,StackTraceElement[]> e : orderedStacks.values())
{
Thread t = e.getKey();
StackTraceElement[] stackElements = e.getValue();
- long id = t.getId();
- builder.add("id=" + id + " ---------- " + t.getName() + " ----------");
+ long tid = t.getId();
+ jvmThreads.add("id=" + tid + " ---------- " + t.getName() + " ----------");
// Create an attribute for the stack trace.
if (stackElements != null)
{
- for (int j=0; j < stackElements.length; j++)
+ for (int j = 0; j < stackElements.length; j++)
{
- StringBuilder buffer = new StringBuilder();
- buffer.append("id=");
- buffer.append(id);
- buffer.append(" frame[");
- buffer.append(j);
- buffer.append("]=");
-
- buffer.append(stackElements[j].getClassName());
- buffer.append(".");
- buffer.append(stackElements[j].getMethodName());
- buffer.append("(");
- buffer.append(stackElements[j].getFileName());
- buffer.append(":");
- if (stackElements[j].isNativeMethod())
- {
- buffer.append("native");
- }
- else
- {
- buffer.append(stackElements[j].getLineNumber());
- }
- buffer.append(")");
-
- builder.add(buffer.toString());
+ jvmThreads.add(toString(tid, j, stackElements[j]));
}
}
}
- return newArrayList(builder.toAttribute());
+ MonitorData result = new MonitorData(1);
+ result.add("jvmThread", jvmThreads);
+ return result;
+ }
+
+ private String toString(long tid, int frame, StackTraceElement stackElement)
+ {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("id=").append(tid);
+ buffer.append(" frame[").append(frame).append("]=");
+
+ buffer.append(stackElement.getClassName());
+ buffer.append(".");
+ buffer.append(stackElement.getMethodName());
+ buffer.append("(");
+ buffer.append(stackElement.getFileName());
+ buffer.append(":");
+ if (stackElement.isNativeMethod())
+ {
+ buffer.append("native");
+ }
+ else
+ {
+ buffer.append(stackElement.getLineNumber());
+ }
+ buffer.append(")");
+ return buffer.toString();
}
}
--
Gitblit v1.10.0