@Override public void classFound(String className) { archive.addClass( className ); } };
protected void processClasses(ClassContainer<?> archive) { if ( classes == null ) { return; } for ( String clazz : classes ) { if ( testClazz.getName().equals( clazz ) ) { continue; } archive.addClass( clazz ); } }
private void addAdditionalObserverClassesIfPresent(ClassContainer<?> classContainer, Class<?> testClass){ if (testClass.isAnnotationPresent(Observer.class)) { Observer annotation = testClass.getAnnotation(Observer.class); Class<?>[] classes = annotation.value(); for (Class<?> observerClass : classes) { classContainer.addClass(observerClass); } } }
private void addAdditionalObserverClassesIfPresent(ClassContainer<?> classContainer, Class<?> testClass){ if (testClass.isAnnotationPresent(Observer.class)) { Observer annotation = testClass.getAnnotation(Observer.class); Class<?>[] classes = annotation.value(); for (Class<?> observerClass : classes) { classContainer.addClass(observerClass); } } }
((ClassContainer<?>)javaArchive).addClass(clazz);
@Override public void classFound(String className) { if (isAsClientMode() && (testClazzName.equals(className) || className.startsWith(testClazzName))) { return; } if (excludedClasses != null && !excludedClasses.isEmpty()) { for (String exludeClassName : excludedClasses) { // Handle annonymous inner classes if (className.equals(exludeClassName)) return; else if (className.startsWith(exludeClassName) && className.contains("$")) return; } } // This is a performance WORKAROUND - adding classes via // ClassContainer.addClass() is much slower // Actually the performace loss is caused by inner classes // handling - which is not necessary here // See also // org.jboss.shrinkwrap.impl.base.container.ContainerBase // addPackage() and getClassesPath() methods ArchivePath classesPath = resolveClassesPath(archive); if (classesPath != null) { ArchivePath classNamePath = AssetUtil.getFullPathForClassResource(className); archive.add(new ClassLoaderAsset(classNamePath.get().substring(1), clToUse), ArchivePaths.create(classesPath, classNamePath)); } else { archive.addClass(className); } } };
String path = clazz.getName().replace('.', '/') + ".class"; if (appArchive.contains(path) == false) { ((ClassContainer<?>) appArchive).addClass(clazz);
((ClassContainer<?>) appArchive).addClass(clazz);
continue; archive.addClass(clazz);
/** * Ensure a class can be added to a container * * @throws Exception */ @Test @ArchiveType(ClassContainer.class) public void testAddClass() throws Exception { getClassContainer().addClass(DummyClassA.class); this.ensureClassesAdded(); }
/** * Ensure classes can be added to containers by name using a classloader * * @throws Exception */ @Test @ArchiveType(ClassContainer.class) public void testAddClassesByFqnAndTccl() throws Exception { final Class<?> classToAdd = DummyClassA.class; getClassContainer().addClass(classToAdd.getName(), classToAdd.getClassLoader()); ArchivePath expectedPath = new BasicPath(getClassPath(), AssetUtil.getFullPathForClassResource(classToAdd)); assertContainsClass(expectedPath); }
@Test @ArchiveType(ClassContainer.class) public void testAddClassFromCustomClassloader() throws Exception { ClassLoader emptyClassLoader = new ClassLoader(null) { }; ClassLoader originalClassLoader = SecurityActions.getThreadContextClassLoader(); ClassLoaderTester myClassLoader = new ClassLoaderTester("cl-test.jar"); try { Thread.currentThread().setContextClassLoader(emptyClassLoader); Class<?> dummyClass = myClassLoader.loadClass("test.classloader.DummyClass"); getClassContainer().addClass(dummyClass); } finally { Thread.currentThread().setContextClassLoader(originalClassLoader); } Assert.assertTrue("Classloader not used to load inner class", myClassLoader.isUsedForInnerClasses()); ArchivePath expectedClassPath = new BasicPath(getClassPath(), AssetUtil.getFullPathForClassResource("/test/classloader/DummyClass")); assertContainsClass(expectedClassPath); }
/** * Ensure classes can be added to containers by name * * @throws Exception */ @Test @ArchiveType(ClassContainer.class) public void testAddClassesByFqn() throws Exception { final Class<?> classToAdd = DummyClassA.class; getClassContainer().addClass(classToAdd.getName()); ArchivePath expectedPath = new BasicPath(getClassPath(), AssetUtil.getFullPathForClassResource(classToAdd)); assertContainsClass(expectedPath); }
/** * Ensure classes can be added to containers by name using a classloader * * @throws Exception */ @Test @ArchiveType(ClassContainer.class) public void testAddClassByFqnAndClassLoader() throws Exception { ClassLoader emptyClassLoader = new ClassLoader(null) { }; ClassLoader originalClassLoader = SecurityActions.getThreadContextClassLoader(); ClassLoaderTester classCl = new ClassLoaderTester("cl-test.jar"); try { Thread.currentThread().setContextClassLoader(emptyClassLoader); getClassContainer().addClass("test.classloader.DummyClass", classCl); } finally { Thread.currentThread().setContextClassLoader(originalClassLoader); } Assert.assertTrue("Classloader not used to load inner class", classCl.isUsedForInnerClasses()); ArchivePath expectedClassPath = new BasicPath(getClassPath(), AssetUtil.getFullPathForClassResource("/test/classloader/DummyClass")); assertContainsClass(expectedClassPath); }
/** * Ensure classes from the Bootstrap CL can be added to {@link ClassContainer}s. * * SHRINKWRAP-335 * * @throws Exception */ @Test @ArchiveType(ClassContainer.class) public void testAddClassFromBootstrapCl() throws Exception { final ClassContainer<T> archive = this.getClassContainer(); archive.addClass(String.class); final ArchivePath classRoot = this.getClassPath(); Assert.assertTrue("Archive does not contain class added from bootstrap CL", ((Archive<?>) archive).contains(ArchivePaths.create(classRoot, "/java/lang/String.class"))); }
classContainer.addClass(testCase.getJavaClass()); addAdditionalObserverClassesIfPresent(classContainer, testCase.getJavaClass());
classContainer.addClass(testCase.getJavaClass()); addAdditionalObserverClassesIfPresent(classContainer, testCase.getJavaClass());
classContainer.addClass(testCase.getJavaClass());
classContainer.addClass(testCase.getJavaClass());