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:34:38 UTC

svn commit: r353884 - /tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java

Author: markt
Date: Sun Dec  4 10:34:35 2005
New Revision: 353884

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

Modified:
    tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java

Modified: tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java
URL: http://svn.apache.org/viewcvs/tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java?rev=353884&r1=353883&r2=353884&view=diff
==============================================================================
--- tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java (original)
+++ tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/core/ApplicationContext.java Sun Dec  4 10:34:35 2005
@@ -404,8 +404,8 @@
      * obtain <code>RequestDispatcher</code> objects or resources from the
      * context.  The given path must be absolute (beginning with a "/"),
      * and is interpreted based on our virtual host's document root.
-     *
-     * @param uri Absolute URI of a resource on the server
+     * @param uri a <code>String</code> specifying the context path of a web
+     * application in the container.
      */
     public ServletContext getContext(String uri) {
 
@@ -413,26 +413,24 @@
         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);
+        // Use the host mapper to match the uri to a context
         try {
             Host host = (Host) context.getParent();
             Context child = host.map(uri);
-            if (child != null)
-                return (child.getServletContext());
-            else
-                return (null);
+            if (child != null) {
+            	// Without crossContext, can only return the current context
+                if (context.getCrossContext()) {
+                	return child.getServletContext();
+                } else {
+                	if (context == child) {
+                		return (this);
+                	} else {
+                		return (null);
+                	}
+                }
+            } else {
+            	return (null);
+            }
         } catch (Throwable t) {
             return (null);
         }
@@ -1105,28 +1103,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);
-            }
-        }
 
     }
 



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