Author: markt
Date: Mon Nov  9 20:43:47 2009
New Revision: 834220

URL: http://svn.apache.org/viewvc?rev=834220&view=rev
Log:
The assumption that contexts will always be file system based or that resources 
will always be extracted to the work does not hold true, particularly for 
custom DirContext implementations. Don't make the assumption and clean-up up 
the redundant field that is no longer required.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
    tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
    tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java
    tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=834220&r1=834219&r2=834220&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Mon Nov  
9 20:43:47 2009
@@ -19,7 +19,6 @@
 package org.apache.catalina.core;
 
 
-import java.io.File;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -90,10 +89,9 @@
      *
      * @param context The associated Context instance
      */
-    public ApplicationContext(String basePath, StandardContext context) {
+    public ApplicationContext(StandardContext context) {
         super();
         this.context = context;
-        this.basePath = basePath;
         
         // Populate session tracking modes
         populateSessionTrackingModes();
@@ -158,12 +156,6 @@
 
 
     /**
-     * Base path.
-     */
-    private String basePath = null;
-
-
-    /**
      * Thread local data used during request dispatch.
      */
     private ThreadLocal<DispatchData> dispatchData =
@@ -492,37 +484,21 @@
             throw new 
MalformedURLException(sm.getString("applicationContext.requestDispatcher.iae", 
path));
 
         
-        path = RequestUtil.normalize(path);
-        if (path == null)
+        String normPath = RequestUtil.normalize(path);
+        if (normPath == null)
             return (null);
 
-        String libPath = "/WEB-INF/lib/";
-        if ((path.startsWith(libPath)) && (path.endsWith(".jar"))) {
-            File jarFile = null;
-            if (context.isFilesystemBased()) {
-                jarFile = new File(basePath, path);
-            } else {
-                jarFile = new File(context.getWorkPath(), path);
-            }
-            if (jarFile.exists()) {
-                return jarFile.toURI().toURL();
-            } else {
-                return null;
-            }
-        } else {
-
-            DirContext resources = context.getResources();
-            if (resources != null) {
-                String fullPath = context.getName() + path;
-                String hostName = context.getParent().getName();
-                try {
-                    resources.lookup(path);
-                    return new URL
-                        ("jndi", "", 0, getJNDIUri(hostName, fullPath),
-                         new DirContextURLStreamHandler(resources));
-                } catch (Exception e) {
-                    // Ignore
-                }
+        DirContext resources = context.getResources();
+        if (resources != null) {
+            String fullPath = context.getName() + normPath;
+            String hostName = context.getParent().getName();
+            try {
+                resources.lookup(path);
+                return new URL
+                    ("jndi", "", 0, getJNDIUri(hostName, fullPath),
+                     new DirContextURLStreamHandler(resources));
+            } catch (Exception e) {
+                // Ignore
             }
         }
 

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=834220&r1=834219&r2=834220&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Mon Nov  9 
20:43:47 2009
@@ -1758,7 +1758,7 @@
     public ServletContext getServletContext() {
 
         if (context == null) {
-            context = new ApplicationContext(getBasePath(), this);
+            context = new ApplicationContext(this);
             if (altDDName != null)
                 context.setAttribute(Globals.ALT_DD_ATTR,altDDName);
         }

Modified: 
tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java?rev=834220&r1=834219&r2=834220&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/context/ReplicatedContext.java Mon 
Nov  9 20:43:47 2009
@@ -54,7 +54,7 @@
         super.addLifecycleListener(this);            
         try {
             CatalinaCluster catclust = (CatalinaCluster)this.getCluster();
-            if (this.context == null) this.context = new 
ReplApplContext(this.getBasePath(), this);
+            if (this.context == null) this.context = new ReplApplContext(this);
             if ( catclust != null ) {
                 ReplicatedMap map = new 
ReplicatedMap(this,catclust.getChannel(),DEFAULT_REPL_TIMEOUT,
                                                       
getName(),getClassLoaders());
@@ -116,7 +116,7 @@
     @Override
     public ServletContext getServletContext() {
         if (context == null) {
-            context = new ReplApplContext(getBasePath(), this);
+            context = new ReplApplContext(this);
             if (getAltDDName() != null)
                 context.setAttribute(Globals.ALT_DD_ATTR,getAltDDName());
         }
@@ -130,8 +130,8 @@
         protected ConcurrentHashMap<String, Object> tomcatAttributes =
             new ConcurrentHashMap<String, Object>();
         
-        public ReplApplContext(String basePath, ReplicatedContext context) {
-            super(basePath,context);
+        public ReplApplContext(ReplicatedContext context) {
+            super(context);
         }
         
         protected ReplicatedContext getParent() {

Modified: tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java?rev=834220&r1=834219&r2=834220&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/DefaultJarScanner.java Mon 
Nov  9 20:43:47 2009
@@ -163,7 +163,7 @@
             callback.scan((JarURLConnection) conn);
         } else {
             String urlStr = url.toString();
-            if (urlStr.startsWith("file:")) {
+            if (urlStr.startsWith("file:") || urlStr.startsWith("jndi:")) {
                 if (urlStr.endsWith(JAR_EXT)) {
                     URL jarURL = new URL("jar:" + urlStr + "!/");
                     callback.scan((JarURLConnection) jarURL.openConnection());



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to