< prev index next >

test/hotspot/jtreg/runtime/LoaderConstraints/common/PreemptingClassLoader.java

Print this page
rev 49654 : 8199852: Print more information about class loaders in LinkageErrors.

@@ -25,18 +25,30 @@
 import java.io.*;
 
 public class PreemptingClassLoader extends ClassLoader {
 
     private final Set<String> names = new HashSet<>();
+    boolean checkLoaded = true;
 
     public PreemptingClassLoader(String... names) {
         for (String n : names) this.names.add(n);
     }
 
+    public PreemptingClassLoader(String name, String[] names) {
+        super(name, ClassLoader.getSystemClassLoader());
+        for (String n : names) this.names.add(n);
+    }
+
+    public PreemptingClassLoader(String name, String[] names, boolean cL) {
+        super(name, ClassLoader.getSystemClassLoader());
+        for (String n : names) this.names.add(n);
+        checkLoaded = cL;
+    }
+
     protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
         if (!names.contains(name)) return super.loadClass(name, resolve);
-        Class<?> result = findLoadedClass(name);
+        Class<?> result = checkLoaded ? findLoadedClass(name) : null;
         if (result == null) {
             String filename = name.replace('.', '/') + ".class";
             try (InputStream data = getResourceAsStream(filename)) {
                 if (data == null) throw new ClassNotFoundException();
                 try (ByteArrayOutputStream buffer = new ByteArrayOutputStream()) {
< prev index next >