Author: markt Date: Fri Dec 12 17:40:48 2014 New Revision: 1644989 URL: http://svn.apache.org/r1644989 Log: Follow on to r1642697. Only currently running contexts should be returned. Handle the case where the mapper returns an unwanted non-exact match.
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.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=1644989&r1=1644988&r2=1644989&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Fri Dec 12 17:40:48 2014 @@ -257,6 +257,11 @@ public class ApplicationContext Container host = context.getParent(); child = (Context) host.findChild(uri); + // Non-running contexts should be ignored. + if (!child.getState().isAvailable()) { + child = null; + } + // Remove any version information and use the mapper if (child == null) { int i = uri.indexOf("##"); @@ -276,15 +281,20 @@ public class ApplicationContext MappingData mappingData = new MappingData(); ((Engine) host.getParent()).getService().getMapper().map(hostMB, pathMB, null, mappingData); - child = mappingData.context; + // Must be an exact match. It is no good returning the ROOT + // context if the caller is looking for "/something-else" + if (mappingData.context.getPath().equals(uri)) { + child = mappingData.context; + } } } catch (Throwable t) { ExceptionUtils.handleThrowable(t); - return (null); + return null; } - if (child == null) - return (null); + if (child == null) { + return null; + } if (context.getCrossContext()) { // If crossContext is enabled, can always return the context @@ -294,7 +304,7 @@ public class ApplicationContext return context.getServletContext(); } else { // Nothing to return - return (null); + return null; } } Modified: tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java?rev=1644989&r1=1644988&r2=1644989&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java (original) +++ tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java Fri Dec 12 17:40:48 2014 @@ -200,8 +200,7 @@ public class TestApplicationContext exte Assert.assertTrue(body, body.contains("03-foo1")); Assert.assertTrue(body, body.contains("04-foo2")); Assert.assertTrue(body, body.contains("05-foo2")); - // FIXME: Enable this test - //Assert.assertTrue(body, body.contains("06-null")); + Assert.assertTrue(body, body.contains("06-null")); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org