8212197: OpenDataException thrown when constructing CompositeData for StackTraceElement

Reviewed-by: alanb
This commit is contained in:
Mandy Chung 2018-10-16 11:47:33 -07:00
parent 180a8773fb
commit a9b4ac9c37
2 changed files with 17 additions and 4 deletions

View file

@ -78,14 +78,16 @@ public class StackTraceElementCompositeData extends LazyCompositeData {
// CONTENTS OF THIS ARRAY MUST BE SYNCHRONIZED WITH // CONTENTS OF THIS ARRAY MUST BE SYNCHRONIZED WITH
// STACK_TRACE_ELEMENT_ATTRIBUTES! // STACK_TRACE_ELEMENT_ATTRIBUTES!
final Object[] stackTraceElementItemValues = { final Object[] stackTraceElementItemValues = {
ste.getClassLoaderName(), // JDK 5 attributes
ste.getModuleName(),
ste.getModuleVersion(),
ste.getClassName(), ste.getClassName(),
ste.getMethodName(), ste.getMethodName(),
ste.getFileName(), ste.getFileName(),
ste.getLineNumber(), ste.getLineNumber(),
ste.isNativeMethod(), ste.isNativeMethod(),
// JDK 9 attributes
ste.getClassLoaderName(),
ste.getModuleName(),
ste.getModuleVersion(),
}; };
try { try {
return new CompositeDataSupport(STACK_TRACE_ELEMENT_COMPOSITE_TYPE, return new CompositeDataSupport(STACK_TRACE_ELEMENT_COMPOSITE_TYPE,

View file

@ -36,7 +36,7 @@ import static org.testng.Assert.*;
/* /*
* @test * @test
* @bug 8139587 * @bug 8139587 8212197
* @modules java.management/sun.management * @modules java.management/sun.management
* @summary Check backward compatibility of StackTraceElementCompositeData * @summary Check backward compatibility of StackTraceElementCompositeData
* @author Jaroslav Bachorik * @author Jaroslav Bachorik
@ -154,5 +154,16 @@ public class CompatibilityTest {
assertEquals(ste.isNativeMethod(), false); assertEquals(ste.isNativeMethod(), false);
assertEquals(ste.getLineNumber(), 123); assertEquals(ste.getLineNumber(), 123);
} }
@Test
public void testCompositeData() throws Exception {
StackTraceElement ste = new StackTraceElement("app",
"m", "1.0",
"p.MyClass", "myMethod",
"MyClass.java", 123);
CompositeData cd = StackTraceElementCompositeData.toCompositeData(ste);
StackTraceElement ste1 = StackTraceElementCompositeData.from(cd);
assertEquals(ste, ste1);
}
} }