You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2005/12/04 19:41:24 UTC

svn commit: r353887 - in /tomcat/container/tc5.5.x: catalina/src/share/org/apache/catalina/core/ApplicationContext.java webapps/docs/changelog.xml

Author: markt
Date: Sun Dec  4 10:41:19 2005
New Revision: 353887

URL: http://svn.apache.org/viewcvs?rev=353887&view=rev
Log:
Fix bug 13040. getContext() now allows retrieval of an external context that is
a sub-context of the current context.
Ported from TC4.

Modified:
    tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java
    tomcat/container/tc5.5.x/webapps/docs/changelog.xml

Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java?rev=353887&r1=353886&r2=353887&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java Sun Dec  4 10:41:19 2005
@@ -208,22 +208,9 @@
         if ((uri == null) || (!uri.startsWith("/")))
             return (null);
 
-        // Return the current context if requested
-        String contextPath = context.getPath();
-        if (!contextPath.endsWith("/"))
-            contextPath = contextPath + "/";
-
-        if (((contextPath.length() > 1) && (uri.startsWith(contextPath))) ||
-            ((contextPath.equals("/")) && (uri.equals("/")))) {
-            return (this);
-        }
-
-        // Return other contexts only if allowed
-        if (!context.getCrossContext())
-            return (null);
+        Context child = null;
         try {
             Host host = (Host) context.getParent();
-            Context child = null;
             String mapuri = uri;
             while (true) {
                 child = (Context) host.findChild(mapuri);
@@ -234,17 +221,23 @@
                     break;
                 mapuri = mapuri.substring(0, slash);
             }
-            if (child == null) {
-                child = (Context) host.findChild("");
-            }
-            if (child != null)
-                return (child.getServletContext());
-            else
-                return (null);
         } catch (Throwable t) {
             return (null);
         }
 
+        if (child == null)
+            return (null);
+
+        if (context.getCrossContext()) {
+            // If crossContext is enabled, can always return the context
+            return child.getServletContext();
+        } else if (child == context) {
+            // Can still return the current context
+            return context.getServletContext();
+        } else {
+            // Nothing to return
+            return (null);
+        }
     }
 
 
@@ -929,28 +922,6 @@
             }
         }
         parameters = results;
-
-    }
-
-
-    /**
-     * List resource paths (recursively), and store all of them in the given
-     * Set.
-     */
-    private static void listPaths(Set set, DirContext resources, String path)
-        throws NamingException {
-
-        Enumeration childPaths = resources.listBindings(path);
-        while (childPaths.hasMoreElements()) {
-            Binding binding = (Binding) childPaths.nextElement();
-            String name = binding.getName();
-            String childPath = path + "/" + name;
-            set.add(childPath);
-            Object object = binding.getObject();
-            if (object instanceof DirContext) {
-                listPaths(set, resources, childPath);
-            }
-        }
 
     }
 

Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=353887&r1=353886&r2=353887&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Sun Dec  4 10:41:19 2005
@@ -22,6 +22,10 @@
 
   <subsection name="Catalina">
     <changelog>
+      <fix>
+        <bug>13040</bug>Fix getContext() when used to obtain a context that is a sub-context
+        of the current context. Ported from TC4. (markt) 
+      </fix>
     </changelog>
   </subsection>
 



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