public static Filter optimize(Filter... filters) { return optimize(Arrays.asList(filters)); }
private static void unwrap(List<Filter> filters, Set<Filter> unwrapped) { for (Filter filter : filters) { if (filter instanceof FilterList) { FilterList filterList = (FilterList) filter; unwrap(filterList.getFilters(), unwrapped); } else { unwrapped.add(filter); } } }
public UriSet include(String pattern) { return filter(patterns(pattern)); }
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 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)); } }
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(); }
public static Set<String> callers() { return callers(Filters.classes("javax.ejb.embeddable.EJBContainer", "javax.naming.InitialContext")); }
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("openejb-jstl", "myfaces-impl", "javax.faces-2.", "spring-security-taglibs", "spring-webmvc")); } catch (final IOException e) { DeploymentLoader.logger.warning("Error scanning class loader for JSP tag libraries", e); } return urlSet.getUrls(); }
public UrlSet matching(String pattern) { return filter(patterns(pattern)); }
excluded = Filters.prefixes(toExclude.toArray(new String[toExclude.size()]));
final Filter includes = Filters.packages(packages.toArray(new String[packages.size()]));
public UriSet matching(String pattern) { return filter(patterns(pattern)); }
public static Filter optimize(Filter... filters) { return optimize(Arrays.asList(filters)); }
private static void unwrap(List<Filter> filters, Set<Filter> unwrapped) { for (Filter filter : filters) { if (filter instanceof FilterList) { FilterList filterList = (FilterList) filter; unwrap(filterList.getFilters(), unwrapped); } else { unwrapped.add(filter); } } }
excluded = Filters.prefixes(toExclude.toArray(new String[toExclude.size()]));