public Class<?> classForName(String name) { try { return classLoader.loadClass(name); } catch (Exception e) { throw new ResourceLoadingException(e); } } });
testClass = isolatedArchiveCL.loadClass(testClassName); } catch (final ClassNotFoundException cnfe) { throw new IllegalStateException("Could not load class " + testClassName + " from deployed archive: " testRunnersClass = isolatedArchiveCL.loadClass(CLASS_NAME_ARQ_TEST_RUNNERS); } catch (final ClassNotFoundException cnfe) { throw new IllegalStateException("Could not load class " + CLASS_NAME_ARQ_TEST_RUNNERS
@Test public void shouldBeAbleToLoadVetoedClasses() throws Exception { Archive<JavaArchive> jarWithVetoedServiceImpl = createJarWithVetoedServices(); ClassLoader emptyParent = null; ShrinkWrapClassLoader swClassloader = new ShrinkWrapClassLoader(emptyParent, jarWithVetoedServiceImpl); ClassLoader emptyClassLoader = new ClassLoader(null) { }; ClassLoader originalClassLoader = SecurityActions.getThreadContextClassLoader(); Map<Class<?>, Set<Class<?>>> vetoed = null; Class<?> service; try { Thread.currentThread().setContextClassLoader(emptyClassLoader); service = swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.FakeService"); swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.ShouldBeIncluded"); swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.ShouldBeExcluded"); vetoed = new JavaSPIExtensionLoader().loadVetoed(swClassloader); } finally { Thread.currentThread().setContextClassLoader(originalClassLoader); } Assert.assertEquals("Unexpected number of vetoed services", 1, vetoed.size()); Assert.assertEquals("Unexpected number of vetoed services impl", 2, vetoed.get(service).size()); }
@Test public void shouldBeAbleToLoadVetoedClasses() throws Exception { Archive<JavaArchive> jarWithVetoedServiceImpl = createJarWithVetoedServices(); ClassLoader emptyParent = null; ShrinkWrapClassLoader swClassloader = new ShrinkWrapClassLoader(emptyParent, jarWithVetoedServiceImpl); ClassLoader emptyClassLoader = new ClassLoader(null) { }; ClassLoader originalClassLoader = SecurityActions.getThreadContextClassLoader(); Map<Class<?>, Set<Class<?>>> vetoed = null; Class<?> service; try { Thread.currentThread().setContextClassLoader(emptyClassLoader); service = swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.FakeService"); swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.ShouldBeIncluded"); swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.ShouldBeExcluded"); vetoed = new JavaSPIExtensionLoader().loadVetoed(swClassloader); } finally { Thread.currentThread().setContextClassLoader(originalClassLoader); } Assert.assertEquals("Unexpected number of vetoed services", 1, vetoed.size()); Assert.assertEquals("Unexpected number of vetoed services impl", 2, vetoed.get(service).size()); }
@Test public void shouldBeAbleToAddSelectedProviderFromClassLoader() throws Exception { Archive<JavaArchive> jarWithDefaultServiceImpl = createJarWithDefaultServiceImpl(); Archive<JavaArchive> jarThatReplaceServiceImpl = createJarThatReplaceServiceImpl(); ClassLoader emptyParent = null; ShrinkWrapClassLoader swClassloader = new ShrinkWrapClassLoader(emptyParent, jarThatReplaceServiceImpl, jarWithDefaultServiceImpl); ClassLoader emptyClassLoader = new ClassLoader(null) { }; ClassLoader originalClassLoader = SecurityActions.getThreadContextClassLoader(); Collection<?> providers = null; Class<?> expectedImplClass = null; try { Thread.currentThread().setContextClassLoader(emptyClassLoader); Class<?> serviceClass = swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.FakeService"); expectedImplClass = swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.ShouldBeIncluded"); providers = new JavaSPIExtensionLoader().all(swClassloader, serviceClass); } finally { Thread.currentThread().setContextClassLoader(originalClassLoader); } Assert.assertEquals("Unexpected number of providers loaded", 1, providers.size()); Assert.assertEquals("Wrong provider loaded", expectedImplClass, providers.iterator().next().getClass()); }
@Test public void shouldBeAbleToAddSelectedProviderFromClassLoader() throws Exception { Archive<JavaArchive> jarWithDefaultServiceImpl = createJarWithDefaultServiceImpl(); Archive<JavaArchive> jarThatReplaceServiceImpl = createJarThatReplaceServiceImpl(); ClassLoader emptyParent = null; ShrinkWrapClassLoader swClassloader = new ShrinkWrapClassLoader(emptyParent, jarThatReplaceServiceImpl, jarWithDefaultServiceImpl); ClassLoader emptyClassLoader = new ClassLoader(null) { }; ClassLoader originalClassLoader = SecurityActions.getThreadContextClassLoader(); Collection<?> providers = null; Class<?> expectedImplClass = null; try { Thread.currentThread().setContextClassLoader(emptyClassLoader); Class<?> serviceClass = swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.FakeService"); expectedImplClass = swClassloader.loadClass("org.jboss.arquillian.core.impl.loadable.util.ShouldBeIncluded"); providers = new JavaSPIExtensionLoader().all(swClassloader, serviceClass); } finally { Thread.currentThread().setContextClassLoader(originalClassLoader); } Assert.assertEquals("Unexpected number of providers loaded", 1, providers.size()); Assert.assertEquals("Wrong provider loaded", expectedImplClass, providers.iterator().next().getClass()); }