mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-23 12:34:32 +02:00
8212795: ThreadInfoCompositeData.toCompositeData fails to map ThreadInfo to CompositeData
Reviewed-by: dfuchs
This commit is contained in:
parent
85598bc90f
commit
d523a17e80
5 changed files with 85 additions and 126 deletions
|
@ -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 @@ public class MonitorInfoCompositeData extends LazyCompositeData {
|
|||
}
|
||||
|
||||
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<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);
|
||||
|
@ -126,10 +115,6 @@ public class MonitorInfoCompositeData extends LazyCompositeData {
|
|||
return V6_COMPOSITE_TYPE;
|
||||
}
|
||||
|
||||
static CompositeType compositeType() {
|
||||
return MONITOR_INFO_COMPOSITE_TYPE;
|
||||
}
|
||||
|
||||
public static String getClassName(CompositeData cd) {
|
||||
return getString(cd, CLASS_NAME);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue