public void destroy() { synchronized (lock) { if (destroyed) { return; } destroyed = true; urls.clear(); for (Iterator iterator = classPath.values().iterator(); iterator.hasNext();) { ResourceLocation resourceLocation = (ResourceLocation) iterator.next(); resourceLocation.close(); } classPath.clear(); } }
private List getManifestClassPath(ResourceLocation resourceLocation) { try { Manifest manifest = resourceLocation.getManifest(); if (manifest == null) { URL codeSource = resourceLocation.getCodeSource(); LinkedList classPathUrls = new LinkedList(); for (StringTokenizer tokenizer = new StringTokenizer(manifestClassPath, " "); tokenizer.hasMoreTokens();) {
classPath.put(resourceLocation.getCodeSource(), resourceLocation); resourceLocation.close();
private void fetchNext() { if (iterator == null) { return; } if (next != null) { return; } try { while (iterator.hasNext()) { ResourceLocation resourceLocation = (ResourceLocation) iterator.next(); ResourceHandle resourceHandle = resourceLocation.getResourceHandle(resourceName); if (resourceHandle != null) { next = resourceHandle.getUrl(); return; } } // no more elements // clear the iterator so it can be GCed iterator = null; } catch (IllegalStateException e) { // Jar file was closed... this means the resource finder was destroyed // clear the iterator so it can be GCed iterator = null; throw e; } } }
public ResourceHandle getResource(String resourceName) { synchronized (lock) { if (destroyed) { return null; } for (Iterator iterator = getClassPath().entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); ResourceLocation resourceLocation = (ResourceLocation) entry.getValue(); ResourceHandle resourceHandle = resourceLocation.getResourceHandle(resourceName); if (resourceHandle != null && !resourceHandle.isDirectory()) { return resourceHandle; } } } return null; }
public URL findResource(String resourceName) { synchronized (lock) { if (destroyed) { return null; } for (Iterator iterator = getClassPath().entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); ResourceLocation resourceLocation = (ResourceLocation) entry.getValue(); ResourceHandle resourceHandle = resourceLocation.getResourceHandle(resourceName); if (resourceHandle != null) { return resourceHandle.getUrl(); } } } return null; }