public static Filter and(final Filter first, final Filter second) { if (Stream .of(first, second) .anyMatch(f -> !FilterList.class.isInstance(f) || !FilterList.class.cast(f).getFilters().stream().allMatch(PrefixFilter.class::isInstance))) { throw new IllegalArgumentException("And only works with filter list of prefix filters"); // for optims } final FilterList list1 = FilterList.class.cast(first); final FilterList list2 = FilterList.class.cast(second); return Filters .prefixes(Stream .of(list1.getFilters(), list2.getFilters()) .flatMap(Collection::stream) .map(PrefixFilter.class::cast) .map(PrefixFilter::getPrefix) .distinct() .toArray(String[]::new)); } }
excluded = Filters.prefixes(toExclude.toArray(new String[toExclude.size()]));
excluded = Filters.prefixes(toExclude.toArray(new String[toExclude.size()]));
public static List<URL> filterWebappUrls(final URL[] webUrls, final Filter filter, final URL exclusions) { Filter excludeFilter = null; if (exclusions != null) { try { final String[] prefixes = NewLoaderLogic.readInputStreamList(exclusions.openStream()); excludeFilter = Filters.prefixes(prefixes); } catch (final IOException e) { logger.warning("can't read " + exclusions.toExternalForm()); } } UrlSet urls = new UrlSet(webUrls); try { urls = NewLoaderLogic.applyBuiltinExcludes(urls, filter, excludeFilter); } catch (final MalformedURLException e) { return Arrays.asList(webUrls); } return urls.getUrls(); }
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 static List<URL> filterWebappUrls(final URL[] webUrls, final URL exclusions) { Filter excludeFilter = null; if (exclusions != null) { try { final String[] prefixes = NewLoaderLogic.readInputStreamList(exclusions.openStream()); excludeFilter = Filters.prefixes(prefixes); } catch (final IOException e) { logger.warning("can't read " + exclusions.toExternalForm()); } } UrlSet urls = new UrlSet(webUrls); try { urls = NewLoaderLogic.applyBuiltinExcludes(urls, null, excludeFilter); } catch (final MalformedURLException e) { return Arrays.asList(webUrls); } return urls.getUrls(); }
StreamSupport.stream(ServiceLoader.load(Customizer.class, tccl).spliterator(), false).collect(toList()); classesFilter = Filters .prefixes(Stream .concat(Stream .of("org.talend.sdk.component.api.", "org.talend.sdk.component.spi.", .distinct() .toArray(String[]::new)); excludeClassesFilter = Filters.prefixes("org.apache.beam.sdk.io.", "org.apache.beam.sdk.extensions.");
private static List<URL> urls(final ClassLoader classLoader) { UrlSet urlSet = new UrlSet(); if (classLoader instanceof URLClassLoader) { final URLClassLoader urlClassLoader = (URLClassLoader) classLoader; try { urlSet = new UrlSet(urlClassLoader.getURLs()); } catch (final NullPointerException npe) { // happen for closeable classloaders like WebappClassLoader when already clean up return Collections.emptyList(); } } else { try { urlSet = new UrlSet(classLoader); } catch (final IOException e) { DeploymentLoader.logger.warning("Error scanning class loader for JSP tag libraries", e); } } try { urlSet = URLs.cullSystemJars(urlSet); urlSet = applyBuiltinExcludes( urlSet, Filters.tokens("taglibs-standard-impl", "taglibs-standard-jstlel", "javax.faces-2.", "spring-security-taglibs", "spring-webmvc"), Filters.prefixes("commons-jcs-", "myfaces-", "tomcat-websocket.jar")); // myfaces is hardcoded in tomee } catch (final IOException e) { DeploymentLoader.logger.warning("Error scanning class loader for JSP tag libraries", e); } return urlSet.getUrls(); }
final Archive finalArchive = classes.excludes().length > 0 ? new FilteredArchive(archive, Filters.invert(Filters.prefixes(classes.excludes()))) : archive; ejbModule.setFinder(new FinderFactory.OpenEJBAnnotationFinder(finalArchive).link());