public static Archive packageArchive(final Set<String> packageNames, final ClassLoader loader, final URL url) { if (!packageNames.isEmpty()) { return new FilteredArchive(ClasspathArchive.archive(loader, url), filters(packageNames)); } return null; }
public static UrlSet filterArchives(final Filter filter, final ClassLoader classLoader, UrlSet urlSet) { for (final URL url : urlSet.getUrls()) { for (final Archive archive : ClasspathArchive.archives(classLoader, url)) { final FilteredArchive filtered = new FilteredArchive(archive, filter); if (!filtered.iterator().hasNext()) { urlSet = urlSet.exclude(url); } } } return urlSet; }
private void consume(FilteredArchive entries) { StreamSupport.stream(entries.spliterator(), false).forEach(e -> { }); }
public static Archive packageArchive(final Set<String> packageNames, final ClassLoader loader, final URL url) { if (!packageNames.isEmpty()) { return new FilteredArchive(ClasspathArchive.archive(loader, url), filters(packageNames)); } return null; }
public static UrlSet filterArchives(final Filter filter, final ClassLoader classLoader, UrlSet urlSet) { for (final URL url : urlSet.getUrls()) { for (final Archive archive : ClasspathArchive.archives(classLoader, url)) { final FilteredArchive filtered = new FilteredArchive(archive, filter); if (!filtered.iterator().hasNext()) { urlSet = urlSet.exclude(url); } } } return urlSet; }
public WebappAggregatedArchive(final Archive delegate, final Iterable<URL> urls) { final List<Archive> archives = doScan(Thread.currentThread().getContextClassLoader(), urls, null); final List<String> classes = new ArrayList<String>(); final Archive archive = new FilteredArchive(delegate, new ScanXmlSaverFilter(scanXmlExists, handler, classes, null)); try { this.map.put(new URL("jar:file://!/META-INF/beans.xml"), classes); } catch (final MalformedURLException e) { throw new IllegalArgumentException(e); } archives.add(archive); this.archive = new CompositeArchive(archives); }
private List<Archive> doScan(final ClassLoader loader, final Iterable<URL> urls, final Filter filter) { final List<Archive> archives = new ArrayList<>(); for (final URL url : urls) { final List<String> classes = new ArrayList<>(); final Archive archive = new FilteredArchive( new ConfigurableClasspathArchive(loader, singletonList(url)), new ScanXmlSaverFilter(scanXmlExists, handler, classes, filter)); map.put(url, classes); archives.add(archive); } return archives; }
public CdiArchive(BeanArchiveService beanArchiveService, ClassLoader loader, Map<String, URL> urls, Filter userFilter, Archive customArchive) { Collection<Archive> archives = new ArrayList<>(); boolean customAdded = false; for (URL url : urls.values()) { List<String> urlClasses = new ArrayList<>(); BeanArchiveInformation beanArchiveInfo = beanArchiveService.getBeanArchiveInformation(url); final boolean custom = "openwebbeans".equals(url.getProtocol()); Archive archive = new FilteredArchive( custom ? customArchive : ClasspathArchive.archive(loader, url), new BeanArchiveFilter(beanArchiveInfo, urlClasses, userFilter)); if (!customAdded && custom) { customAdded = true; } classesByUrl.put(url.toExternalForm(), new FoundClasses(url, urlClasses, beanArchiveInfo)); archives.add(archive); } if (!customAdded && customArchive != null) { archives.add(userFilter != null ? new FilteredArchive(customArchive, userFilter) : customArchive); } delegate = new CompositeArchive(archives); }
private static IAnnotationFinder finderFromClasses(final DeploymentModule module, final Class<?>[] value, final Collection<File> others, final String[] excludes) { final Collection<Archive> archives = new ArrayList<>(1 + (others == null ? 0 : others.size())); final Filter filter = excludes == null || excludes.length == 0 ? null : Filters.invert(Filters.prefixes(excludes)); final Collection<Class<?>> classes = new ArrayList<>(asList(FinderFactory.ensureMinimalClasses(module))); if (value != null) { classes.addAll(asList(value)); } final ClassesArchive classesArchive = new ClassesArchive(classes); archives.add(filter == null ? classesArchive : new FilteredArchive(classesArchive, filter)); if (others != null) { final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); for (final File f : others) { try { final Archive archive = f.isDirectory() ? new FileArchive(classLoader, f) : new JarArchive(classLoader, f.toURI().toURL()); archives.add(filter == null ? archive : new FilteredArchive(archive, filter)); } catch (final MalformedURLException e) { throw new IllegalArgumentException(e); } } } return new FinderFactory.OpenEJBAnnotationFinder(new CompositeArchive(archives)).link(); }
public WebappAggregatedArchive(final Module module, final Iterable<URL> urls) { final List<Archive> archives = new ArrayList<Archive>(); final URL scanXml = (URL) module.getAltDDs().get(ScanConstants.SCAN_XML_NAME); if (scanXml != null) { try { handler = ScanUtil.read(scanXml); scanXmlExists = true; } catch (final IOException e) { // ignored, will not use filtering with scan.xml } } for (final URL url : urls) { final List<String> classes = new ArrayList<String>(); final Archive archive = new FilteredArchive(new ConfigurableClasspathArchive(module.getClassLoader(), Arrays.asList(url)), new ScanXmlSaverFilter(scanXmlExists, handler, classes)); map.put(url, classes); archives.add(archive); } archive = new CompositeArchive(archives); }
consume(new FilteredArchive(new JarArchive(loader, url), capturedClasses)); break; case "file": consume(new FilteredArchive(new FileArchive(loader, file), capturedClasses)); break; default:
for (final URL url : DeploymentLoader.filterWebappUrls(additionalPaths.toArray(new URL[additionalPaths.size()]), null)) { final List<String> currentClasses = new ArrayList<String>(); final org.apache.xbean.finder.archive.Archive newArchive = new FilteredArchive(new JarArchive(cl, url), new WebappAggregatedArchive.ScanXmlSaverFilter(false, null, currentClasses)); classesByUrl.put(url, currentClasses); archives.add(newArchive);
final URL url = UrlAsset.class.isInstance(asset) ? get(URL.class, "url", asset) : get(File.class, "file", asset).toURI().toURL(); final List<String> classes = new ArrayList<String>(); archives.add(new FilteredArchive( new JarArchive(parent, url), new WebappAggregatedArchive.ScanXmlSaverFilter(false, null, classes, null)));
log.debug(e.getMessage(), e); finder = new AnnotationFinder(new FilteredArchive(archive, filter)); } finally { if (AutoCloseable.class.isInstance(archive)) {
try (final URLClassLoader scanningLoader = new URLClassLoader(new URL[]{jar.toURI().toURL()}, loader)) { final AnnotationFinder finder = new AnnotationFinder( new FilteredArchive( jar.isDirectory() ? new FileArchive(scanningLoader, jar) : new JarArchive(scanningLoader, jar.toURI().toURL()), Filters.packages("com.tomitribe.tribestream.container")))
private AppModule createTribestreamNotificationCoreModule() { final ClassLoader loader = ParentClassLoaderFinder.Helper.get(); final EjbModule module = new EjbModule(new EjbJar(moduleName), new OpenejbJar()); // activate CDI final Beans beans = new Beans(); beans.addManagedClass(AlterPersisterObserver.class); module.setBeans(beans); // find all from current jar final File jar = JarLocation.jarLocation(Installer.class); try { module.setFinder(new AnnotationFinder( new FilteredArchive( jar.isDirectory() ? new FileArchive(loader, jar) : new JarArchive(loader, jar.toURI().toURL()), Filters.packages("com.tomitribe.tribestream.notifications.core"))) .link()); } catch (final MalformedURLException e) { throw new IllegalStateException(e); } // add unit for persistence final PersistenceUnit unit = new PersistenceUnit(unitName); unit.setJtaDataSource(dataSourceName); unit.setNonJtaDataSource(dataSourceName + "NonJta"); unit.addClass(Alert.class); unit.setExcludeUnlistedClasses(true); unit.setProperty("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)"); // here we are, assemble eveything final AppModule appModule = new AppModule(module); appModule.addPersistenceModule(new PersistenceModule("", new Persistence(unit))); return appModule; }
private AppModule createTribestreamCoreModule() { final ClassLoader loader = ParentClassLoaderFinder.Helper.get(); final EjbModule module = new EjbModule(new EjbJar(moduleName), new OpenejbJar()); // activate CDI final Beans beans = new Beans(); module.setBeans(beans); // find all from current jar final File jar = JarLocation.jarLocation(SignaturesService.class); try { module.setFinder(new AnnotationFinder( new FilteredArchive( jar.isDirectory() ? new FileArchive(loader, jar) : new JarArchive(loader, jar.toURI().toURL()), Filters.packages("com.tomitribe.tribestream.security.signatures"))) .link()); } catch (final MalformedURLException e) { throw new IllegalStateException(e); } // add unit for persistence final PersistenceUnit unit = new PersistenceUnit(unitName); unit.setJtaDataSource(dataSourceName); unit.setNonJtaDataSource(dataSourceName + "NonJta"); unit.addClass(KeyId.class); unit.addClass(Key.class); unit.setExcludeUnlistedClasses(true); unit.setProperty("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)"); // here we are, assemble everything final AppModule appModule = new AppModule(module); appModule.addPersistenceModule(new PersistenceModule("", new Persistence(unit))); return appModule; }
final Archive finalArchive = classes.excludes().length > 0 ? new FilteredArchive(archive, Filters.invert(Filters.prefixes(classes.excludes()))) : archive; ejbModule.setFinder(new FinderFactory.OpenEJBAnnotationFinder(finalArchive).link());