--- old/src/java.management/share/classes/sun/management/MonitorInfoCompositeData.java 2018-10-24 15:06:16.000000000 -0700 +++ new/src/java.management/share/classes/sun/management/MonitorInfoCompositeData.java 2018-10-24 15:06:16.000000000 -0700 @@ -26,6 +26,8 @@ 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; @@ -54,31 +56,18 @@ } 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); - } - } + StackTraceElement ste = lock.getLockedStackFrame(); + CompositeData steCData = ste != null ? StackTraceElementCompositeData.toCompositeData(ste) + : null; + // values may be null; can't use Map.of + Map 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); @@ -126,10 +115,6 @@ return V6_COMPOSITE_TYPE; } - static CompositeType compositeType() { - return MONITOR_INFO_COMPOSITE_TYPE; - } - public static String getClassName(CompositeData cd) { return getString(cd, CLASS_NAME); }