< prev index next >

test/testlibrary/com/oracle/java/testlibrary/ByteCodeLoader.java

Print this page
rev 7510 : 8066497: Update c.o.j.t.ByteCodeLoader to be able really reload given class
Reviewed-by:
Contributed-by: pavel.chistyakov@oracle.com

*** 35,44 **** --- 35,45 ---- * @see InMemoryCompiler */ public class ByteCodeLoader extends SecureClassLoader { private final String className; private final byte[] byteCode; + private volatile Class<?> holder; /** * Creates a new {@code ByteCodeLoader} ready to load a class with the * given name and the given byte code. *
*** 49,58 **** --- 50,74 ---- this.className = className; this.byteCode = byteCode; } @Override + public Class<?> loadClass(String name) throws ClassNotFoundException { + if (!name.equals(className)) { + return super.loadClass(name); + } + if (holder == null) { + synchronized(this) { + if (holder == null) { + holder = findClass(name); + } + } + } + return holder; + } + + @Override protected Class<?> findClass(String name) throws ClassNotFoundException { if (!name.equals(className)) { throw new ClassNotFoundException(name); }
< prev index next >