< 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 >