public static UrlSet cullSystemJars(final UrlSet original) throws IOException { UrlSet urls = new UrlSet(original.getUrls()); urls = urls.exclude(ClassLoader.getSystemClassLoader().getParent()); urls = urls.excludeJvm(); urls = urls.excludePaths(System.getProperty("sun.boot.class.path", "")); urls = urls.exclude(".*/JavaVM.framework/.*"); return urls; }
UrlSet set; try { set = new UrlSet(cl); if (cl.getParent() != cl) { set = set.exclude(cl.getParent()); set = set.excludeJavaExtDirs(); set = set.excludeJavaHome(); set = set.excludeJavaEndorsedDirs(); set = set.exclude(".*/activation(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/activeio-core(-[\\d.]+)?(-incubator)?.jar(!/)?"); set = set.exclude(".*/activemq-(core|ra)(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/annotations-api-6.[01].[\\d.]+.jar(!/)?"); set = set.exclude(".*/asm-(all|commons|util|tree)?[\\d.]+.jar(!/)?"); set = set.exclude(".*/avalon-framework(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/axis2-jaxws-api(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/backport-util-concurrent(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/bcprov-jdk15(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/catalina(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/cglib-(nodep-)?[\\d.]+.jar(!/)?"); set = set.exclude(".*/com\\.ibm\\.ws\\.[^/]*.jar(!/)?"); set = set.exclude(".*/commons-(logging|logging-api|cli|pool|lang|collections|dbcp|dbcp-all)(-[\\d.r-]+)?.jar(!/)?"); set = set.exclude(".*/cxf-bundle(-[\\d.]+)?(incubator)?.jar(!/)?"); set = set.exclude(".*/openejb-cxf-bundle(-[\\d.]+)?(incubator)?.jar(!/)?"); set = set.exclude(".*/derby(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/ejb31-api-experimental(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/geronimo-(connector|transaction)(-[\\d.]+)?.jar(!/)?"); set = set.exclude(".*/geronimo-[^/]+_spec(-[\\d.]+)?.jar(!/)?");
public UrlSet excludeJvm() throws MalformedURLException { UrlSet urls = excludeJavaHome().excludeJavaExtDirs().excludeJavaEndorsedDirs(); if (isOsx()) { urls = urls.exclude(new File("/System/Library/Java/Support")); } return urls; }
public static UrlSet applyBuiltinExcludes(final UrlSet urlSet, final Filter includeFilter, final Filter excludeFilter) throws MalformedURLException { getExclusions(); // force init final List<URL> urls = urlSet.getUrls(); final Iterator<URL> iterator = urls.iterator(); while (iterator.hasNext()) { final URL url = iterator.next(); if (skip(url, includeFilter, excludeFilter)) { iterator.remove(); } } return new UrlSet(urls); }
public ClasspathSearcher loadUrls(final ClassLoader classLoader) { try { final UrlSet original = cleanUpUrlSet(new UrlSet(classLoader)); urlSet = URLs.cullSystemJars(original); urlSet = urlSet.filter(filter); } else { includeFilter = null; if (prefiltered.size() == urlSet.size()) { urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet, includeFilter); urlSet = urlSet.exclude(".*/openejb-[^/]+(.(jar|ear|war)(!/)?|/target/(test-)?classes/?)"); urls = urlSet.getUrls(); } else { urls = new ArrayList<>(); for (final URL url : urlSet.getUrls()) { final String ef = url.toExternalForm().toLowerCase(); final URL u = new URL(ef);
UrlSet urlSet = new UrlSet(classLoader); UrlSet includes = urlSet.matching(include); urlSet = urlSet.exclude(ClassLoader.getSystemClassLoader().getParent()); urlSet = urlSet.excludeJavaExtDirs(); urlSet = urlSet.excludeJavaEndorsedDirs(); urlSet = urlSet.excludeJavaHome(); urlSet = urlSet.excludePaths(System.getProperty("sun.boot.class.path", "")); urlSet = urlSet.exclude(".*/JavaVM.framework/.*"); urlSet = urlSet.exclude(exclude); urlSet = urlSet.include(includes); urlSet = urlSet.exclude(".*/openejb-[^/]+(.(jar|ear|war)(!/)?|/target/(test-)?classes/?)"); List<URL> urls = urlSet.getUrls(); int size = urls.size(); if (size == 0 && include.length() > 0) { logger.warning("No classpath URLs matched. Current settings: " + CLASSPATH_EXCLUDE + "='" + exclude + "', " + CLASSPATH_INCLUDE + "='" + include + "'"); return; } else if (size == 0 && (!filterDescriptors && prefiltered.getUrls().size() == 0)) { return; } else if (size < 20) { UrlSet unchecked = new UrlSet(); if (!filterDescriptors){ unchecked = prefiltered.exclude(urlSet); if (filterSystemApps){ unchecked = unchecked.exclude(".*/openejb-[^/]+(.(jar|ear|war)(./)?|/target/classes/?)");
private static Set<URL> findUrls(final ClassLoader classLoader, final Properties args) throws IOException { if ("true".equals(args.getProperty("fast-scan", "true"))) { try { return new HashSet<>(NewLoaderLogic.applyBuiltinExcludes(new UrlSet(ClassLoaders.findUrls(classLoader)).excludeJvm()).getUrls()); } catch (final Throwable fallback) { // let it fallback } } return ClassLoaders.findUrls(classLoader); }
public UrlSet include(UrlSet urlSet){ Map<String, URL> urls = new HashMap<String, URL>(this.urls); urls.putAll(urlSet.urls); return new UrlSet(urls); }
try { URLClassLoader classLoader = new URLClassLoader(array(URL.class, urls), JniClass.class.getClassLoader()); UrlSet urlSet = new UrlSet(classLoader); urlSet = urlSet.excludeJavaHome(); ClassFinder finder = new ClassFinder(classLoader, urlSet.getUrls()); collectMatchingClasses(finder, JniClass.class, jniClasses); } catch (Exception e) {
private UrlSet cleanUpUrlSet(final UrlSet set) { if (set.size() >= 5) { // if set size == 1 then we use both getURLs() and getresource(META-INF) to find jar, ensure we don't duplicate it, ie size ~ 2 return set; } final List<URL> copy = set.getUrls(); for (final URL url : set.getUrls()) { try { if ("file".equals(url.getProtocol()) && copy.contains(new URL("jar:" + url.toExternalForm() + "!/"))) { copy.remove(url); } } catch (final MalformedURLException e) { // no-op } } return new UrlSet(copy); }
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 UrlSet(ClassLoader classLoader) throws IOException { this(getUrls(classLoader)); }
public UrlSet excludePaths(String pathString) throws MalformedURLException { String[] paths = pathString.split(File.pathSeparator); UrlSet urlSet = this; for (String path : paths) { File file = new File(path); urlSet = urlSet.exclude(file); } return urlSet; }
/** * Calls excludePaths(System.getProperty("java.ext.dirs")) * @return * @throws MalformedURLException */ public UrlSet excludeJavaExtDirs() throws MalformedURLException { String extDirs = System.getProperty("java.ext.dirs"); return extDirs == null ? this : excludePaths(extDirs); }
public UrlSet matching(String pattern) { return filter(patterns(pattern)); }
public static UrlSet applyBuiltinExcludes(final UrlSet urlSet, final Filter includeFilter, final Filter excludeFilter) throws MalformedURLException { getExclusions(); // force init //filter = Filters.optimize(filter, new PatternFilter(".*/openejb-.*")); final List<URL> urls = urlSet.getUrls(); final Iterator<URL> iterator = urls.iterator(); while (iterator.hasNext()) { final URL url = iterator.next(); if (skip(url, includeFilter, excludeFilter)) { iterator.remove(); } } return new UrlSet(urls); }