@Override public final boolean mkdir(String path) { checkPath(path); return false; }
protected final String getBase() { return archiveResourceSet.getBase(); }
@Override public void close() throws IOException { if (closed.compareAndSet(false, true)) { // Must only call this once else the usage counting will break archiveResourceSet.closeJarFile(); } is.close(); }
@Override public final WebResource getResource(String path) { checkPath(path); String webAppMount = getWebAppMount(); WebResourceRoot root = getRoot(); String pathInJar = getInternalPath() + path.substring( webAppMount.length(), path.length()); return new JarResourceRoot(root, new File(getBase()), baseUrlString, path); } else { JarEntry jarEntry = null; if (isMultiRelease()) { jarEntry = getArchiveEntry(pathInJar); } else { Map<String,JarEntry> jarEntries = getArchiveEntries(true); if (!(pathInJar.charAt(pathInJar.length() - 1) == '/')) { if (jarEntries == null) { jarEntry = getArchiveEntry(pathInJar + '/'); } else { jarEntry = jarEntries.get(pathInJar + '/'); jarEntry = getArchiveEntry(pathInJar); } else { jarEntry = jarEntries.get(pathInJar); return new EmptyResource(root, path); } else {
@Override public final WebResource getResource(String path) { checkPath(path); String webAppMount = getWebAppMount(); WebResourceRoot root = getRoot(); String pathInJar = getInternalPath() + path.substring( webAppMount.length(), path.length()); return new JarResourceRoot(root, new File(getBase()), pathInJar, path); } else { return new EmptyResource(root, path); } else { return createArchiveResource(jarEntry, path, manifest);
@Override public final String[] list(String path) { checkPath(path); String webAppMount = getWebAppMount(); getInternalPath() + path.substring(webAppMount.length()); for (String name : getArchiveEntries(false).keySet()) { if (name.length() > pathInJar.length() && name.startsWith(pathInJar)) {
@Override public final String[] list(String path) { checkPath(path); String webAppMount = getWebAppMount(); getInternalPath() + path.substring(webAppMount.length());
protected AbstractArchiveResource(AbstractArchiveResourceSet archiveResourceSet, String webAppPath, String baseUrl, JarEntry jarEntry, String codeBaseUrl) { super(archiveResourceSet.getRoot(), webAppPath); this.archiveResourceSet = archiveResourceSet; this.baseUrl = baseUrl; this.resource = jarEntry; this.codeBaseUrl = codeBaseUrl; String resourceName = resource.getName(); if (resourceName.charAt(resourceName.length() - 1) == '/') { resourceName = resourceName.substring(0, resourceName.length() - 1); } String internalPath = archiveResourceSet.getInternalPath(); if (internalPath.length() > 0 && resourceName.equals( internalPath.subSequence(1, internalPath.length()))) { name = ""; } else { int index = resourceName.lastIndexOf('/'); if (index == -1) { name = resourceName; } else { name = resourceName.substring(index + 1); } } }
JarEntry entry = null; try { warFile = getArchiveResourceSet().openJarFile(); JarEntry jarFileInWar = warFile.getJarEntry(archivePath); InputStream isInWar = warFile.getInputStream(jarFileInWar); getArchiveResourceSet().closeJarFile();
@Override public Manifest getManifest() { return archiveResourceSet.getManifest(); }
@Override public final WebResource getResource(String path) { checkPath(path); String webAppMount = getWebAppMount(); WebResourceRoot root = getRoot(); String pathInJar = getInternalPath() + path.substring( webAppMount.length(), path.length()); return new JarResourceRoot(root, new File(getBase()), baseUrlString, path); } else { JarEntry jarEntry = null; if (isMultiRelease()) { jarEntry = getArchiveEntry(pathInJar); } else { Map<String,JarEntry> jarEntries = getArchiveEntries(true); if (!(pathInJar.charAt(pathInJar.length() - 1) == '/')) { if (jarEntries == null) { jarEntry = getArchiveEntry(pathInJar + '/'); } else { jarEntry = jarEntries.get(pathInJar + '/'); jarEntry = getArchiveEntry(pathInJar); } else { jarEntry = jarEntries.get(pathInJar); return new EmptyResource(root, path); } else {
@Override public final String[] list(String path) { checkPath(path); String webAppMount = getWebAppMount(); getInternalPath() + path.substring(webAppMount.length()); for (String name : getArchiveEntries(false).keySet()) { if (name.length() > pathInJar.length() && name.startsWith(pathInJar)) {
@Override public final Set<String> listWebAppPaths(String path) { checkPath(path); String webAppMount = getWebAppMount(); getInternalPath() + path.substring(webAppMount.length()); if (name.startsWith(pathInJar)) { result.add(webAppMount + '/' + name.substring(getInternalPath().length()));
protected AbstractArchiveResource(AbstractArchiveResourceSet archiveResourceSet, String webAppPath, String baseUrl, JarEntry jarEntry, String codeBaseUrl) { super(archiveResourceSet.getRoot(), webAppPath); this.archiveResourceSet = archiveResourceSet; this.baseUrl = baseUrl; this.resource = jarEntry; this.codeBaseUrl = codeBaseUrl; String resourceName = resource.getName(); if (resourceName.charAt(resourceName.length() - 1) == '/') { resourceName = resourceName.substring(0, resourceName.length() - 1); } String internalPath = archiveResourceSet.getInternalPath(); if (internalPath.length() > 0 && resourceName.equals( internalPath.subSequence(1, internalPath.length()))) { name = ""; } else { int index = resourceName.lastIndexOf('/'); if (index == -1) { name = resourceName; } else { name = resourceName.substring(index + 1); } } }
JarEntry entry = null; try { warFile = getArchiveResourceSet().openJarFile(); JarEntry jarFileInWar = warFile.getJarEntry(archivePath); InputStream isInWar = warFile.getInputStream(jarFileInWar); getArchiveResourceSet().closeJarFile();
@Override public Manifest getManifest() { return archiveResourceSet.getManifest(); }
@Override public final Set<String> listWebAppPaths(String path) { checkPath(path); String webAppMount = getWebAppMount(); getInternalPath() + path.substring(webAppMount.length()); for (String name : getArchiveEntries(false).keySet()) { if (name.length() > pathInJar.length() && name.startsWith(pathInJar)) { int nextSlash = name.indexOf('/', pathInJar.length()); name = name.substring(0, nextSlash + 1); result.add(webAppMount + '/' + name.substring(getInternalPath().length()));
@Override protected JarInputStreamWrapper getJarInputStreamWrapper() { JarFile jarFile = null; try { jarFile = getArchiveResourceSet().openJarFile(); // Need to create a new JarEntry so the certificates can be read JarEntry jarEntry = jarFile.getJarEntry(getResource().getName()); InputStream is = jarFile.getInputStream(jarEntry); return new JarInputStreamWrapper(jarEntry, is); } catch (IOException e) { if (getLog().isDebugEnabled()) { getLog().debug(sm.getString("jarResource.getInputStreamFail", getResource().getName(), getBaseUrl()), e); } if (jarFile != null) { getArchiveResourceSet().closeJarFile(); } return null; } } }
@Override public final boolean mkdir(String path) { checkPath(path); return false; }
protected final String getBase() { return archiveResourceSet.getBase(); }