You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/05/30 13:36:16 UTC
svn commit: r661660 - in
/incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher:
app/ClassLoaderResourceProvider.java
app/main/ClassLoaderResourceProvider.java app/main/Main.java
webapp/SlingServlet.java
Author: fmeschbe
Date: Fri May 30 04:36:16 2008
New Revision: 661660
URL: http://svn.apache.org/viewvc?rev=661660&view=rev
Log:
SLING-472 Have SlingServlet's ResourceProvider extend from
ClassLoaderResourceProvider and fallback to the latter in case
the web app does not provide resources.
Added:
incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/ClassLoaderResourceProvider.java
- copied, changed from r660415, incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/ClassLoaderResourceProvider.java
Removed:
incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/ClassLoaderResourceProvider.java
Modified:
incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/Main.java
incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/webapp/SlingServlet.java
Copied: incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/ClassLoaderResourceProvider.java (from r660415, incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/ClassLoaderResourceProvider.java)
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/ClassLoaderResourceProvider.java?p2=incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/ClassLoaderResourceProvider.java&p1=incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/ClassLoaderResourceProvider.java&r1=660415&r2=661660&rev=661660&view=diff
==============================================================================
--- incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/ClassLoaderResourceProvider.java (original)
+++ incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/ClassLoaderResourceProvider.java Fri May 30 04:36:16 2008
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.sling.launcher.app.main;
+package org.apache.sling.launcher.app;
import java.io.IOException;
import java.net.JarURLConnection;
@@ -29,13 +29,11 @@
import java.util.jar.JarFile;
import java.util.regex.Pattern;
-import org.apache.sling.launcher.app.ResourceProvider;
-import org.apache.sling.launcher.app.Sling;
/**
* The <code>ClassLoaderResourceProvider</code> TODO
*/
-class ClassLoaderResourceProvider extends ResourceProvider {
+public class ClassLoaderResourceProvider extends ResourceProvider {
private final ClassLoader classLoader;
Modified: incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/Main.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/Main.java?rev=661660&r1=661659&r2=661660&view=diff
==============================================================================
--- incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/Main.java (original)
+++ incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/app/main/Main.java Fri May 30 04:36:16 2008
@@ -23,6 +23,7 @@
import org.apache.felix.framework.Logger;
import org.apache.sling.commons.log.LogManager;
+import org.apache.sling.launcher.app.ClassLoaderResourceProvider;
import org.apache.sling.launcher.app.ResourceProvider;
import org.apache.sling.launcher.app.Sling;
import org.osgi.framework.BundleException;
Modified: incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/webapp/SlingServlet.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/webapp/SlingServlet.java?rev=661660&r1=661659&r2=661660&view=diff
==============================================================================
--- incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/webapp/SlingServlet.java (original)
+++ incubator/sling/trunk/launchpad/base/src/main/java/org/apache/sling/launcher/webapp/SlingServlet.java Fri May 30 04:36:16 2008
@@ -38,6 +38,7 @@
import javax.servlet.http.HttpServletResponse;
import org.apache.felix.framework.Logger;
+import org.apache.sling.launcher.app.ClassLoaderResourceProvider;
import org.apache.sling.launcher.app.ResourceProvider;
import org.apache.sling.launcher.app.Sling;
import org.eclipse.equinox.http.servlet.HttpServiceServlet;
@@ -358,7 +359,7 @@
}
private static class ServletContextResourceProvider extends
- ResourceProvider {
+ ClassLoaderResourceProvider {
/**
* The root folder for internal web application files (value is
@@ -367,8 +368,9 @@
private static final String WEB_INF = "/WEB-INF";
private ServletContext servletContext;
-
+
private ServletContextResourceProvider(ServletContext servletContext) {
+ super(SlingServlet.class.getClassLoader());
this.servletContext = servletContext;
}
@@ -385,6 +387,23 @@
resources = servletContext.getResourcePaths(WEB_INF + path); // unchecked
}
+ Iterator resourceIterator;
+ if ( resources == null || resources.isEmpty() ) {
+ // fall back to the class path
+ resourceIterator = super.getChildren(path);
+
+ if(resourceIterator.hasNext()) {
+ return resourceIterator;
+ }
+
+ // fall back to WEB-INF within the class path
+ resourceIterator = super.getChildren(WEB_INF + path);
+
+ if(resourceIterator.hasNext()) {
+ return resourceIterator;
+ }
+ }
+
if ( resources == null ) {
return Collections.EMPTY_LIST.iterator();
}
@@ -410,7 +429,22 @@
}
// otherwise try WEB-INF location
- return servletContext.getResource(WEB_INF + path);
+ resource = servletContext.getResource(WEB_INF + path);
+ if(resource != null) {
+ return resource;
+ }
+
+ // try classpath
+ resource = super.getResource(path);
+ if(resource != null) {
+ return resource;
+ }
+
+ // try WEB-INF within the classpath
+ resource = super.getResource(WEB_INF + path);
+ if(resource != null) {
+ return resource;
+ }
} catch (MalformedURLException mue) {
servletContext.log("Failure to get resource " + path, mue);