< prev index next >
src/java.management/share/classes/sun/management/MonitorInfoCompositeData.java
Print this page
@@ -24,10 +24,12 @@
*/
package sun.management;
import java.lang.management.MonitorInfo;
+import java.util.HashMap;
+import java.util.Map;
import javax.management.openmbean.CompositeType;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.OpenType;
@@ -52,35 +54,22 @@
MonitorInfoCompositeData micd = new MonitorInfoCompositeData(mi);
return micd.getCompositeData();
}
protected CompositeData getCompositeData() {
- // CONTENTS OF THIS ARRAY MUST BE SYNCHRONIZED WITH
- // MONITOR_INFO_ATTRIBUTES!
-
- int len = MONITOR_INFO_ATTRIBUTES.length;
- Object[] values = new Object[len];
- CompositeData li = LockInfoCompositeData.toCompositeData(lock);
-
- for (int i = 0; i < len; i++) {
- String item = MONITOR_INFO_ATTRIBUTES[i];
- if (item.equals(LOCKED_STACK_FRAME)) {
StackTraceElement ste = lock.getLockedStackFrame();
- values[i] = (ste != null ? StackTraceElementCompositeData.
- toCompositeData(ste)
- : null);
- } else if (item.equals(LOCKED_STACK_DEPTH)) {
- values[i] = lock.getLockedStackDepth();
- } else {
- values[i] = li.get(item);
- }
- }
+ CompositeData steCData = ste != null ? StackTraceElementCompositeData.toCompositeData(ste)
+ : null;
+ // values may be null; can't use Map.of
+ Map<String,Object> items = new HashMap<>();
+ items.put(CLASS_NAME, lock.getClassName());
+ items.put(IDENTITY_HASH_CODE, lock.getIdentityHashCode());
+ items.put(LOCKED_STACK_FRAME, steCData);
+ items.put(LOCKED_STACK_DEPTH, lock.getLockedStackDepth());
try {
- return new CompositeDataSupport(MONITOR_INFO_COMPOSITE_TYPE,
- MONITOR_INFO_ATTRIBUTES,
- values);
+ return new CompositeDataSupport(MONITOR_INFO_COMPOSITE_TYPE, items);
} catch (OpenDataException e) {
// Should never reach here
throw new AssertionError(e);
}
}
@@ -124,14 +113,10 @@
static CompositeType v6CompositeType() {
return V6_COMPOSITE_TYPE;
}
- static CompositeType compositeType() {
- return MONITOR_INFO_COMPOSITE_TYPE;
- }
-
public static String getClassName(CompositeData cd) {
return getString(cd, CLASS_NAME);
}
public static int getIdentityHashCode(CompositeData cd) {
< prev index next >