Handle case when the OSGi container is not Equinox.
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/TomcatServletContainer.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/TomcatServletContainer.java
index 72d714c..4bc673a 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/TomcatServletContainer.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/TomcatServletContainer.java
@@ -102,7 +102,7 @@
BundleWebappLoader loader = new BundleWebappLoader(bundle, this.classLoaderCustomizer);
context.setLoader(loader);
- context.setResources(new BundleWebResourceRoot(bundle, docBase));
+ context.setResources(new BundleWebResourceRoot(bundle));
ServletContext servletContext = context.getServletContext();
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceRoot.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceRoot.java
index d645640..7360db0 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceRoot.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceRoot.java
@@ -25,7 +25,6 @@
import org.apache.catalina.Host;
import org.apache.catalina.WebResource;
import org.apache.catalina.WebResourceSet;
-import org.apache.catalina.webresources.EmptyResourceSet;
import org.apache.catalina.webresources.StandardRoot;
import org.osgi.framework.Bundle;
@@ -37,16 +36,9 @@
private Path docBase;
- public BundleWebResourceRoot(Bundle bundle, String docBaseStr) {
+ public BundleWebResourceRoot(Bundle bundle) {
this.bundle = bundle;
this.main = new BundleWebResource(this.bundle, this);
-
- if (docBaseStr != null) {
- this.docBase = Paths.get(docBaseStr);
- if (!this.docBase.isAbsolute()) {
- this.docBase = Paths.get(((Host) getContext().getParent()).getAppBaseFile().getPath()).resolve(this.docBase);
- }
- }
}
@Override
@@ -59,31 +51,18 @@
public void createWebResourceSet(ResourceSetType type, String webAppMount, String base, String archivePath, String internalPath) {
WebResourceSet resourceSet = null;
- if (base.startsWith("bundleentry")) {
- if (archivePath != null) {
- if (archivePath.toLowerCase(Locale.ENGLISH).endsWith(".jar")) {
- resourceSet = new BundleJarResourceSet(this, webAppMount, base + archivePath, internalPath);
- } else {
- WebResource entry = ((BundleWebResource) this.main).getNamedEntry(archivePath).getKey();
- if (entry != null) {
- resourceSet = new BundleWebResourceSet(entry, this, webAppMount, this.docBase.toAbsolutePath().toString() + archivePath,
- internalPath);
- }
- }
-
- if (type.equals(ResourceSetType.CLASSES_JAR) && resourceSet != null) {
- resourceSet.setClassLoaderOnly(true);
+ if (archivePath != null) {
+ if (archivePath.toLowerCase(Locale.ENGLISH).endsWith(".jar")) {
+ resourceSet = new BundleJarResourceSet(this, webAppMount, base + archivePath, internalPath);
+ } else {
+ WebResource entry = ((BundleWebResource) this.main).getNamedEntry(archivePath).getKey();
+ if (entry != null) {
+ resourceSet = new BundleWebResourceSet(entry, this, webAppMount, base + archivePath, internalPath);
}
}
- } else {
- // TODO need additional testing
- WebResource entry = ((BundleWebResource) this.main).getNamedEntry(base).getKey();
- if (entry != null) {
- resourceSet = new BundleWebResourceSet(entry, this, webAppMount, base, internalPath);
- if (type.equals(ResourceSetType.CLASSES_JAR)) {
- resourceSet.setClassLoaderOnly(true);
- }
+ if (type.equals(ResourceSetType.CLASSES_JAR) && resourceSet != null) {
+ resourceSet.setClassLoaderOnly(true);
}
}
@@ -122,16 +101,15 @@
@Override
protected WebResourceSet createMainResourceSet() {
- WebResourceSet mainResourceSet;
-
- if (this.docBase == null) {
- // TODO When we are in not Equinox case the docBase will be null
- // we need to handle this case also
- mainResourceSet = new EmptyResourceSet(this);
- } else {
- mainResourceSet = new BundleWebResourceSet(this.main, this, "/", this.docBase.toAbsolutePath().toString(), "/");
+ String docBaseStr = getContext().getDocBase();
+ if (docBaseStr != null) {
+ this.docBase = Paths.get(docBaseStr);
+ if (!this.docBase.isAbsolute()) {
+ this.docBase = Paths.get(((Host) getContext().getParent()).getAppBaseFile().getPath()).resolve(this.docBase);
+ }
}
- return mainResourceSet;
+
+ return new BundleWebResourceSet(this.main, this, "/", this.docBase != null ? this.docBase.toAbsolutePath().toString() : null, "/");
}
private static class BaseLocation {
diff --git a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceSet.java b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceSet.java
index b44bd94..f6bfbe6 100644
--- a/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceSet.java
+++ b/org.eclipse.gemini.web.tomcat/src/main/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceSet.java
@@ -17,9 +17,6 @@
package org.eclipse.gemini.web.tomcat.internal.bundleresources;
import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
@@ -28,7 +25,6 @@
import org.apache.catalina.LifecycleException;
import org.apache.catalina.WebResource;
import org.apache.catalina.WebResourceRoot;
-import org.apache.catalina.WebResourceRoot.ResourceSetType;
import org.apache.catalina.util.ResourceSet;
import org.apache.catalina.webresources.EmptyResource;
@@ -43,14 +39,6 @@
setInternalPath(internalPath);
this.bundleEntry = bundleEntry;
- if (root.getContext().getAddWebinfClassesResources()) {
- Path f = Paths.get(base, internalPath, "/WEB-INF/classes/META-INF/resources");
-
- if (Files.isDirectory(f)) {
- root.createWebResourceSet(ResourceSetType.RESOURCE_JAR, "/", f.toAbsolutePath().toString(), null, "/");
- }
- }
-
if (getRoot().getState().isAvailable()) {
try {
start();
diff --git a/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceSetTests.java b/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceSetTests.java
index 5bf3be3..a2ec273 100644
--- a/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceSetTests.java
+++ b/org.eclipse.gemini.web.tomcat/src/test/java/org/eclipse/gemini/web/tomcat/internal/bundleresources/BundleWebResourceSetTests.java
@@ -25,7 +25,6 @@
import java.io.File;
-import org.apache.catalina.Context;
import org.apache.catalina.LifecycleState;
import org.apache.catalina.WebResource;
import org.apache.catalina.WebResourceRoot;
@@ -46,8 +45,6 @@
private WebResourceRoot root;
- private Context context;
-
@Before
public void setUp() throws Exception {
this.testBundle.addEntry("", new File("src/test/resources/").toURI().toURL());
@@ -56,15 +53,12 @@
this.testBundle.setFindEntriesDelegate(new FindEntriesDelegateImpl(this.testBundle));
this.root = createMock(WebResourceRoot.class);
- this.context = createMock(Context.class);
- expect(this.root.getContext()).andReturn(this.context);
- expect(this.context.getAddWebinfClassesResources()).andReturn(false);
expect(this.root.getState()).andReturn(LifecycleState.STARTED);
}
@Test
public void testGetAttributesOfDirectory() {
- replay(this.root, this.context);
+ replay(this.root);
this.bundleWebResourceSet = new BundleWebResourceSet(new BundleWebResource(this.testBundle, this.root), this.root, "/", null, "/");
WebResource webResource = this.bundleWebResourceSet.getResource(DIRECTORY_NAME);
@@ -78,12 +72,12 @@
assertTrue(webResource.getContentLength() != -1);
- verify(this.root, this.context);
+ verify(this.root);
}
@Test
public void testGetAttributesOfFile() {
- replay(this.root, this.context);
+ replay(this.root);
this.bundleWebResourceSet = new BundleWebResourceSet(new BundleWebResource(this.testBundle, this.root), this.root, "/", null, "/");
WebResource webResource = this.bundleWebResourceSet.getResource(FILE_NAME);
@@ -97,7 +91,7 @@
assertTrue(webResource.getContentLength() != -1);
- verify(this.root, this.context);
+ verify(this.root);
}
}