28 * that is not known to the VM. A class loader loads
29 * twice the same class. Should trigger exception in
30 * SystemDictionary::check_constraints().
31 * @compile ../common/Foo.java
32 * @compile ../common/J.java
33 * @compile ParentClassLoader.java
34 * PreemptingChildClassLoader.java
35 * @run main/othervm Test
36 */
37
38 public class Test {
39
40 // Check that all names have external formatting ('.' and not '/' in package names).
41 // Check for parent of class loader.
42 // Break expectedErrorMessage into 2 parts due to the class loader name containing
43 // the unique @<id> identity hash which cannot be compared against.
44
45 // Check that all names have external formatting ('.' and not '/' in package names).
46 // Check for name and parent of class loader. Type should be mentioned as 'class'.
47 static String expectedErrorMessage_part1 = "loader 'DuplicateParentLE_Test_Loader' @";
48 static String expectedErrorMessage_part2 = " (instance of PreemptingChildClassLoader, child of ParentClassLoader @";
49 static String expectedErrorMessage_part3 = " ParentClassLoader) attempted duplicate class definition for test.Foo";
50
51 // Test that the error message is correct when a loader constraint error is
52 // detected during vtable creation.
53 //
54 // In this test, during vtable creation for class Task, method "Task.m()LFoo;"
55 // overrides "J.m()LFoo;". But, Task's class Foo and super type J's class Foo
56 // are different. So, a LinkageError exception should be thrown because the
57 // loader constraint check will fail.
58 public static void test(String loaderName,
59 String testType) throws Exception {
60 String[] classNames = {testType};
61 ClassLoader l = new PreemptingChildClassLoader(loaderName, classNames, false);
62 l.loadClass(testType);
63 try {
64 l.loadClass(testType).newInstance();
65 throw new RuntimeException("Expected LinkageError exception not thrown");
66 } catch (LinkageError e) {
67 String errorMsg = e.getMessage();
68 if (!errorMsg.contains(expectedErrorMessage_part1) ||
69 !errorMsg.contains(expectedErrorMessage_part2) ||
|
28 * that is not known to the VM. A class loader loads
29 * twice the same class. Should trigger exception in
30 * SystemDictionary::check_constraints().
31 * @compile ../common/Foo.java
32 * @compile ../common/J.java
33 * @compile ParentClassLoader.java
34 * PreemptingChildClassLoader.java
35 * @run main/othervm Test
36 */
37
38 public class Test {
39
40 // Check that all names have external formatting ('.' and not '/' in package names).
41 // Check for parent of class loader.
42 // Break expectedErrorMessage into 2 parts due to the class loader name containing
43 // the unique @<id> identity hash which cannot be compared against.
44
45 // Check that all names have external formatting ('.' and not '/' in package names).
46 // Check for name and parent of class loader. Type should be mentioned as 'class'.
47 static String expectedErrorMessage_part1 = "loader 'DuplicateParentLE_Test_Loader' @";
48 static String expectedErrorMessage_part2 = " attempted duplicate class definition for test.Foo. (test.Foo is in unnamed module of loader 'DuplicateParentLE_Test_Loader' @";
49 static String expectedErrorMessage_part3 = ", parent loader ParentClassLoader @";
50
51
52 // Test that the error message is correct when a loader constraint error is
53 // detected during vtable creation.
54 //
55 // In this test, during vtable creation for class Task, method "Task.m()LFoo;"
56 // overrides "J.m()LFoo;". But, Task's class Foo and super type J's class Foo
57 // are different. So, a LinkageError exception should be thrown because the
58 // loader constraint check will fail.
59 public static void test(String loaderName,
60 String testType) throws Exception {
61 String[] classNames = {testType};
62 ClassLoader l = new PreemptingChildClassLoader(loaderName, classNames, false);
63 l.loadClass(testType);
64 try {
65 l.loadClass(testType).newInstance();
66 throw new RuntimeException("Expected LinkageError exception not thrown");
67 } catch (LinkageError e) {
68 String errorMsg = e.getMessage();
69 if (!errorMsg.contains(expectedErrorMessage_part1) ||
70 !errorMsg.contains(expectedErrorMessage_part2) ||
|