Author: remy.maucherat(a)jboss.com
Date: 2009-11-10 22:29:33 -0500 (Tue, 10 Nov 2009)
New Revision: 1263
Modified:
trunk/java/org/apache/catalina/core/ApplicationContext.java
trunk/java/org/apache/catalina/core/StandardContext.java
trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java
Log:
- Changes to support the special pseudo exact "" wrapper.
Modified: trunk/java/org/apache/catalina/core/ApplicationContext.java
===================================================================
--- trunk/java/org/apache/catalina/core/ApplicationContext.java 2009-11-11 00:31:24 UTC
(rev 1262)
+++ trunk/java/org/apache/catalina/core/ApplicationContext.java 2009-11-11 03:29:33 UTC
(rev 1263)
@@ -431,6 +431,10 @@
// Validate the path argument
if (path == null)
return (null);
+ if (path.equals(""))
+ path = "/";
+ if (path.startsWith("?"))
+ path = "/" + path;
if (!path.startsWith("/"))
throw new IllegalArgumentException
(sm.getString
Modified: trunk/java/org/apache/catalina/core/StandardContext.java
===================================================================
--- trunk/java/org/apache/catalina/core/StandardContext.java 2009-11-11 00:31:24 UTC (rev
1262)
+++ trunk/java/org/apache/catalina/core/StandardContext.java 2009-11-11 03:29:33 UTC (rev
1263)
@@ -5198,6 +5198,9 @@
if (urlPattern.indexOf('\n') >= 0 || urlPattern.indexOf('\r')
>= 0) {
return (false);
}
+ if (urlPattern.equals("")) {
+ return (true);
+ }
if (urlPattern.startsWith("*.")) {
if (urlPattern.indexOf('/') < 0) {
checkUnusualURLPattern(urlPattern);
Modified: trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java
===================================================================
--- trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java 2009-11-11 00:31:24 UTC (rev
1262)
+++ trunk/java/org/apache/tomcat/util/http/mapper/Mapper.java 2009-11-11 03:29:33 UTC (rev
1263)
@@ -371,7 +371,6 @@
*/
protected void addWrapper(Context context, String path, Object wrapper,
boolean jspWildCard) {
-
synchronized (context) {
Wrapper newWrapper = new Wrapper();
newWrapper.object = wrapper;
@@ -402,6 +401,10 @@
// Default wrapper
newWrapper.name = "";
context.defaultWrapper = newWrapper;
+ } else if (path.equals("")) {
+ // Root wrapper
+ newWrapper.name = "";
+ context.rootWrapper = newWrapper;
} else {
// Exact wrapper
newWrapper.name = path;
@@ -485,6 +488,9 @@
} else if (path.equals("/")) {
// Default wrapper
context.defaultWrapper = null;
+ } else if (path.equals("")) {
+ // Root wrapper
+ context.rootWrapper = null;
} else {
// Exact wrapper
String name = path;
@@ -697,7 +703,14 @@
// Rule 1 -- Exact Match
Wrapper[] exactWrappers = context.exactWrappers;
- internalMapExactWrapper(exactWrappers, path, mappingData);
+ if (!noServletPath && (pathEnd - servletPath) == 1 &&
context.rootWrapper != null) {
+ mappingData.requestPath.setString("/");
+ mappingData.wrapperPath.setString("");
+ mappingData.pathInfo.setString("/");
+ mappingData.wrapper = context.rootWrapper.object;
+ } else {
+ internalMapExactWrapper(exactWrappers, path, mappingData);
+ }
// Rule 2 -- Prefix Match
boolean checkJspWelcomeFiles = false;
@@ -1305,6 +1318,7 @@
public String[] welcomeResources = new String[0];
public javax.naming.Context resources = null;
public Wrapper defaultWrapper = null;
+ public Wrapper rootWrapper = null;
public Wrapper[] exactWrappers = new Wrapper[0];
public Wrapper[] wildcardWrappers = new Wrapper[0];
public Wrapper[] extensionWrappers = new Wrapper[0];
Show replies by date