@Override @Nullable Resource getResource(String name, boolean flag) { JarMemoryLoader loader = myMemoryLoader != null ? myMemoryLoader.get() : null; if (loader != null) { Resource resource = loader.getResource(name); if (resource != null) return resource; } try { ZipFile zipFile = getZipFile(); try { ZipEntry entry = zipFile.getEntry(name); if (entry != null) { return MemoryResource.load(getBaseURL(), zipFile, entry, myAttributes); } } finally { releaseZipFile(zipFile); } } catch (Exception e) { error("file: " + myCanonicalFile, e); } return null; }
@Override @Nullable Resource getResource(String name, boolean flag) { final long started = myDebugTime ? System.nanoTime() : 0; if (myMemoryLoader != null) { JarMemoryLoader loader = myMemoryLoader.get(); if (loader != null) { Resource resource = loader.getResource(name); if (resource != null) return resource; } } ZipFile file = null; try { file = acquireZipFile(); if (file == null) return null; ZipEntry entry = file.getEntry(name); if (entry != null) { ++hits; if (hits % 1000 == 0 && ClasspathCache.doDebug) { ClasspathCache.LOG.debug("Exists jar loader: misses:" + misses + ", hits:" + hits); } return new MyResource(entry, new URL(getBaseURL(), name)); } if (misses % 1000 == 0 && ClasspathCache.doDebug) { ClasspathCache.LOG.debug("Missed " + name + " from jar:" + myURL); } ++misses; } catch (Exception e) { return null; } finally { try { releaseZipFile(file); } catch (IOException ignored) { } final long doneFor = myDebugTime ? System.nanoTime() - started : 0; if (doneFor > NS_THRESHOLD) { ClasspathCache.LOG.debug(doneFor / 1000000 + " ms for jar loader get resource:" + name); } } return null; }