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: [email protected]
For additional commands, e-mail: [email protected]