@Override protected Enumeration<URL> findResources(final String name) throws IOException { try { return readAction(new Callable<Enumeration<URL>>(){ @Override public Enumeration<URL> call() throws Exception { @SuppressWarnings("UseOfObsoleteCollectionType") final Vector<URL> v = new Vector<URL>(); for (final Pair<URL,Archive> p : archives) { final Archive archive = p.second(); final FileObject file = archive.getFile(name); if (file != null) { v.add(file.toUri().toURL()); usedRoots .map((c) -> RES_PROCESSORS.equals(name) ? null : c) .ifPresent((c) -> c.accept(p.first())); } } return v.elements(); } }); } catch (Exception ex) { throw new IOException(ex); } }
public static ClassLoader forClassPath( @NonNull final ClassPath classPath, @NullAllowed final ClassLoader parent, @NullAllowed final Consumer<? super URL> usedRoots) { Parameters.notNull("classPath", classPath); //NOI18N final List<ClassPath.Entry> entries = classPath.entries(); final URL[] urls = new URL[entries.size()]; final Iterator<ClassPath.Entry> eit = entries.iterator(); for (int i=0; eit.hasNext(); i++) { urls[i] = eit.next().getURL(); } return forURLs(urls, parent, usedRoots); }
public Collection<? extends Processor> resolveProcessors(boolean onScan) { ClassPath pp = validatePaths(); ClassLoader cl; final ClassLoaderRef cache = classLoaderCache; if (cache == null || (cl=cache.get(root)) == null) { if (pp == null) { pp = ClassPath.EMPTY; } cl = CachingArchiveClassLoader.forClassPath( pp, new BypassOpenIDEUtilClassLoader(Context.class.getClassLoader()), usedRoots); classLoaderCache = !DISABLE_CLASSLOADER_CACHE ? new ClassLoaderRef(cl, root) : null; } Collection<Processor> result = lookupProcessors(cl, onScan); return result; }
public static ClassLoader forURLs( @NonNull final URL[] urls, @NullAllowed final ClassLoader parent, @NullAllowed final Consumer<? super URL> usedRoots) { Parameters.notNull("urls", urls); //NOI18N final List<Pair<URL,Archive>> archives = new ArrayList<>(urls.length); for (URL url : urls) { final Archive arch = CachingArchiveProvider.getDefault().getArchive(url, false); if (arch != null) { archives.add(Pair.of(url,arch)); } } return new CachingArchiveClassLoader( archives, parent, usedRoots); }
@Override protected URL findResource(final String name) { FileObject file = null; try { file = readAction(new Callable<FileObject>() { @Override public FileObject call() throws Exception { return findFileObject(name); } }); } catch (Exception e) { Exceptions.printStackTrace(e); } if (file != null) { try { return file.toUri().toURL(); } catch (MalformedURLException ex) { LOG.log(Level.INFO, ex.getMessage(), ex); } } return super.findResource(name); }
@NonNull private Iterable<? extends String> getProcessorNames(@NonNull final ClassLoader cl) { try { return CachingArchiveClassLoader.readAction(() -> { Collection<String> result = new LinkedList<>(); Enumeration<URL> resources = cl.getResources("META-INF/services/" + Processor.class.getName()); //NOI18N
Class<?> c = null; try { c = readAction(new Callable<Class<?>>() { @Override public Class<?> call() throws Exception {