< prev index next >

src/java.management/share/classes/sun/management/StackTraceElementCompositeData.java

Print this page

        

@@ -29,10 +29,12 @@
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.CompositeDataSupport;
 import javax.management.openmbean.OpenDataException;
 import javax.management.openmbean.OpenType;
 import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.stream.Stream;
 
 /**
  * A CompositeData for StackTraceElement for the local management support.
  * This class avoids the performance penalty paid to the

@@ -73,28 +75,23 @@
         StackTraceElementCompositeData cd = new StackTraceElementCompositeData(ste);
         return cd.getCompositeData();
     }
 
     protected CompositeData getCompositeData() {
-        // CONTENTS OF THIS ARRAY MUST BE SYNCHRONIZED WITH
-        // STACK_TRACE_ELEMENT_ATTRIBUTES!
-        final Object[] stackTraceElementItemValues = {
-            // JDK 5 attributes
-            ste.getClassName(),
-            ste.getMethodName(),
-            ste.getFileName(),
-            ste.getLineNumber(),
-            ste.isNativeMethod(),
-            // JDK 9 attributes
-            ste.getClassLoaderName(),
-            ste.getModuleName(),
-            ste.getModuleVersion(),
-        };
+        // values may be null; so can't use Map.of
+        Map<String,Object> items = new HashMap<>();
+        items.put(CLASS_LOADER_NAME, ste.getClassLoaderName());
+        items.put(MODULE_NAME,       ste.getModuleName());
+        items.put(MODULE_VERSION,    ste.getModuleVersion());
+        items.put(CLASS_NAME,        ste.getClassName());
+        items.put(METHOD_NAME,       ste.getMethodName());
+        items.put(FILE_NAME,         ste.getFileName());
+        items.put(LINE_NUMBER,       ste.getLineNumber());
+        items.put(NATIVE_METHOD,     ste.isNativeMethod());
+
         try {
-            return new CompositeDataSupport(STACK_TRACE_ELEMENT_COMPOSITE_TYPE,
-                                            STACK_TRACE_ELEMENT_ATTRIBUTES,
-                                            stackTraceElementItemValues);
+            return new CompositeDataSupport(STACK_TRACE_ELEMENT_COMPOSITE_TYPE, items);
         } catch (OpenDataException e) {
             // Should never reach here
             throw new AssertionError(e);
         }
     }

@@ -121,14 +118,10 @@
         CLASS_LOADER_NAME,
         MODULE_NAME,
         MODULE_VERSION,
     };
 
-    private static final String[] STACK_TRACE_ELEMENT_ATTRIBUTES =
-        Stream.of(V5_ATTRIBUTES, V9_ATTRIBUTES).flatMap(Arrays::stream)
-              .toArray(String[]::new);
-
     private static final CompositeType STACK_TRACE_ELEMENT_COMPOSITE_TYPE;
     private static final CompositeType V5_COMPOSITE_TYPE;
     static {
         try {
             STACK_TRACE_ELEMENT_COMPOSITE_TYPE = (CompositeType)

@@ -151,13 +144,10 @@
     }
 
     static CompositeType v5CompositeType() {
         return V5_COMPOSITE_TYPE;
     }
-    static CompositeType compositeType() {
-        return STACK_TRACE_ELEMENT_COMPOSITE_TYPE;
-    }
 
     /**
      * Validate if the input CompositeData has the expected
      * CompositeType (i.e. contain all attributes with expected
      * names and types).
< prev index next >