# HG changeset patch # User Jaroslav Tulach # Date 1287584300 25200 # Branch release692 # Node ID 447b0b8d99c01523a1f0e46323d481986289648d # Parent 071aeefc4126285b47b334cbd4961f052cede051 Critial refinement to #190901 to prevent Oracle Bug 10197084 diff -r 071aeefc4126 -r 447b0b8d99c0 core.netigso/test/unit/src/org/netbeans/core/netigso/NetigsoOSGiActivationVisibleTest.java --- a/core.netigso/test/unit/src/org/netbeans/core/netigso/NetigsoOSGiActivationVisibleTest.java Wed Oct 20 14:29:52 2010 +0200 +++ b/core.netigso/test/unit/src/org/netbeans/core/netigso/NetigsoOSGiActivationVisibleTest.java Wed Oct 20 07:18:20 2010 -0700 @@ -54,6 +54,7 @@ import org.netbeans.Module; import org.netbeans.ModuleManager; import org.netbeans.SetupHid; +import org.netbeans.Util; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; @@ -142,6 +143,13 @@ assertNotNull("Something loaded from module CL", someModule); } + public void testClassLoaderImplementsUtilModuleProvider() { + final ClassLoader l = m2.getClassLoader(); + assertTrue("ModuleProvider interface implemented: " + l, l instanceof Util.ModuleProvider); + Util.ModuleProvider mp = (Util.ModuleProvider)l; + assertEquals("Module is returned", m2, mp.getModule()); + } + public void testClassFromDirectBundle() throws Exception { loadClass = directBundle.getMethod("loadClass", String.class, ClassLoader.class); Class directly = (Class) loadClass.invoke(null, "org.foo.Something", null); diff -r 071aeefc4126 -r 447b0b8d99c0 o.n.bootstrap/src/org/netbeans/NetigsoModule.java --- a/o.n.bootstrap/src/org/netbeans/NetigsoModule.java Wed Oct 20 14:29:52 2010 +0200 +++ b/o.n.bootstrap/src/org/netbeans/NetigsoModule.java Wed Oct 20 07:18:20 2010 -0700 @@ -180,7 +180,8 @@ return s.replaceFirst(";.*$", ""); } - private static final class DelegateCL extends ProxyClassLoader { + private final class DelegateCL extends ProxyClassLoader + implements Util.ModuleProvider { public DelegateCL() { super(new ClassLoader[0], false); } @@ -217,5 +218,10 @@ ClassLoader l = firstParent(); return l == null ? "Netigso[uninitialized]" : "Netigso[" + l.toString() + "]"; // NOI18N } + + @Override + public Module getModule() { + return NetigsoModule.this; + } } }