Author: remm
Date: Wed Nov 29 09:46:00 2017
New Revision: 1816617
URL: http://svn.apache.org/viewvc?rev=1816617&view=rev
Log:
Add a bare bones default-context-path impl (best effort really, it's a bad
feature). Also fix for some mapping paths, excluded pending some clarifications.
Modified:
tomcat/trunk/java/org/apache/catalina/Context.java
tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
tomcat/trunk/java/org/apache/catalina/core/ApplicationMapping.java
tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java
tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/LocalStrings.properties
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebXml.java
tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/Context.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/Context.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/Context.java (original)
+++ tomcat/trunk/java/org/apache/catalina/Context.java Wed Nov 29 09:46:00 2017
@@ -348,6 +348,20 @@ public interface Context extends Contain
/**
+ * Get the best effort path for mapping.
+ * @return the default context path
+ */
+ public String getDefaultContextPath();
+
+
+ /**
+ * Return the best effort path for mapping.
+ * @param defaultContextPath The default context path
+ */
+ public void setDefaultContextPath(String defaultContextPath);
+
+
+ /**
* Return the deny-uncovered-http-methods flag for this web application.
*
* @return The current value of the flag
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=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Wed Nov
29 09:46:00 2017
@@ -287,7 +287,11 @@ public class ApplicationContext implemen
@Override
public String getContextPath() {
- return context.getPath();
+ if (Globals.STRICT_SERVLET_COMPLIANCE &&
context.getDefaultContextPath() != null) {
+ return context.getDefaultContextPath();
+ } else {
+ return context.getPath();
+ }
}
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java Wed
Nov 29 09:46:00 2017
@@ -626,7 +626,9 @@ final class ApplicationDispatcher implem
wrequest.setQueryString(queryString);
wrequest.setQueryParams(queryString);
}
- wrequest.setMapping(mapping);
+ if (!Globals.STRICT_SERVLET_COMPLIANCE) {
+ wrequest.setMapping(mapping);
+ }
invoke(state.outerRequest, state.outerResponse, state);
}
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationMapping.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationMapping.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationMapping.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationMapping.java Wed Nov
29 09:46:00 2017
@@ -19,6 +19,7 @@ package org.apache.catalina.core;
import javax.servlet.http.HttpServletMapping;
import javax.servlet.http.MappingMatch;
+import org.apache.catalina.Globals;
import org.apache.catalina.mapper.MappingData;
public class ApplicationMapping {
@@ -47,7 +48,8 @@ public class ApplicationMapping {
mapping = new MappingImpl("", "",
mappingData.matchType, servletName);
break;
case DEFAULT:
- mapping = new MappingImpl("", "/",
mappingData.matchType, servletName);
+ String match = Globals.STRICT_SERVLET_COMPLIANCE ?
"default" : "";
+ mapping = new MappingImpl(match, "/",
mappingData.matchType, servletName);
break;
case EXACT:
mapping = new
MappingImpl(mappingData.wrapperPath.toString().substring(1),
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Wed Nov 29
09:46:00 2017
@@ -343,6 +343,12 @@ public class StandardContext extends Con
/**
+ * Best effort mapping path.
+ */
+ private String defaultContextPath;
+
+
+ /**
* Override the default context xml location.
*/
private String defaultContextXml;
@@ -1598,6 +1604,21 @@ public class StandardContext extends Con
}
+ @Override
+ public String getDefaultContextPath() {
+ return defaultContextPath;
+ }
+
+ /**
+ * Set the best effort path for mapping.
+ *
+ * @param defaultContextPath The default context path
+ */
+ @Override
+ public void setDefaultContextPath(String defaultContextPath) {
+ this.defaultContextPath = defaultContextPath;
+ }
+
public String getDefaultContextXml() {
return defaultContextXml;
}
Modified: tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/MapperListener.java Wed Nov 29
09:46:00 2017
@@ -24,6 +24,7 @@ import org.apache.catalina.ContainerEven
import org.apache.catalina.ContainerListener;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
+import org.apache.catalina.Globals;
import org.apache.catalina.Host;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
@@ -364,11 +365,14 @@ public class MapperListener extends Life
*/
private void registerContext(Context context) {
- String contextPath = context.getPath();
+ Host host = (Host)context.getParent();
+ String contextPath = Globals.STRICT_SERVLET_COMPLIANCE ?
context.getDefaultContextPath() : null;
+ if (contextPath == null || host.findChild(contextPath) != null) {
+ contextPath = context.getPath();
+ }
if ("/".equals(contextPath)) {
contextPath = "";
}
- Host host = (Host)context.getParent();
WebResourceRoot resources = context.getResources();
String[] welcomeFiles = context.findWelcomeFiles();
@@ -399,7 +403,11 @@ public class MapperListener extends Life
*/
private void unregisterContext(Context context) {
- String contextPath = context.getPath();
+ Host host = (Host)context.getParent();
+ String contextPath = Globals.STRICT_SERVLET_COMPLIANCE ?
context.getDefaultContextPath() : null;
+ if (contextPath == null || host.findChild(contextPath) != null) {
+ contextPath = context.getPath();
+ }
if ("/".equals(contextPath)) {
contextPath = "";
}
Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Wed Nov 29
09:46:00 2017
@@ -1257,6 +1257,7 @@ public class ContextConfig implements Li
for (Entry<String, String> entry :
webxml.getContextParams().entrySet()) {
context.addParameter(entry.getKey(), entry.getValue());
}
+ context.setDefaultContextPath(webxml.getDefaultContextPath());
context.setDenyUncoveredHttpMethods(
webxml.getDenyUncoveredHttpMethods());
context.setDisplayName(webxml.getDisplayName());
Modified: tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java Wed Nov 29
09:46:00 2017
@@ -372,6 +372,11 @@ public class FailedContext extends Lifec
public void setAltDDName(String altDDName) { /* NO-OP */ }
@Override
+ public String getDefaultContextPath() { return null; }
+ @Override
+ public void setDefaultContextPath(String defaultContextPath) { /* NO-OP */
}
+
+ @Override
public boolean getDenyUncoveredHttpMethods() { return false; }
@Override
public void setDenyUncoveredHttpMethods(boolean denyUncoveredHttpMethods) {
Modified:
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/LocalStrings.properties?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
---
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/LocalStrings.properties
(original)
+++
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/LocalStrings.properties
Wed Nov 29 09:46:00 2017
@@ -39,6 +39,7 @@ webXml.duplicateResourceRef=Duplicate re
webXml.duplicateServletMapping=The servlets named [{0}] and [{1}] are both
mapped to the url-pattern [{2}] which is not permitted
webXml.duplicateTaglibUri=Duplicate tag library URI [{0}]
webXml.reservedName=A web.xml file was detected using a reserved name [{0}].
The name element will be ignored for this fragment.
+webXml.mergeConflictDefaultContextPath=The default context path was defined in
multiple fragments with different values including fragment with name [{0}]
located at [{1}]
webXml.mergeConflictDisplayName=The display name was defined in multiple
fragments with different values including fragment with name [{0}] located at
[{1}]
webXml.mergeConflictFilter=The Filter [{0}] was defined inconsistently in
multiple fragments including fragment with name [{1}] located at [{2}]
webXml.mergeConflictLoginConfig=A LoginConfig was defined inconsistently in
multiple fragments including fragment with name [{0}] located at [{1}]
Modified:
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java Wed
Nov 29 09:46:00 2017
@@ -203,6 +203,9 @@ public class WebRuleSet implements RuleS
digester.addCallParam(fullPrefix + "/context-param/param-name", 0);
digester.addCallParam(fullPrefix + "/context-param/param-value", 1);
+ digester.addCallMethod(fullPrefix + "/default-context-path",
+ "setDefaultContextPath", 0);
+
digester.addCallMethod(fullPrefix + "/display-name",
"setDisplayName", 0);
Modified: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebXml.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebXml.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebXml.java
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebXml.java Wed Nov
29 09:46:00 2017
@@ -231,6 +231,13 @@ public class WebXml extends XmlEncodingB
// - description
// - icon
+ // default-context-path
+ private String defaultContextPath = null;
+ public String getDefaultContextPath() { return defaultContextPath; }
+ public void setDefaultContextPath(String defaultContextPath) {
+ this.defaultContextPath = defaultContextPath;
+ }
+
// display-name - TODO should support multiple with language
private String displayName = null;
public String getDisplayName() { return displayName; }
@@ -1424,6 +1431,24 @@ public class WebXml extends XmlEncodingB
}
contextParams.putAll(temp.getContextParams());
+ if (defaultContextPath == null) {
+ for (WebXml fragment : fragments) {
+ String value = fragment.getDefaultContextPath();
+ if (value != null) {
+ if (temp.getDefaultContextPath() == null) {
+ temp.setDefaultContextPath(value);
+ } else {
+ log.error(sm.getString(
+ "webXml.mergeConflictDefaultContextPath",
+ fragment.getName(),
+ fragment.getURL()));
+ return false;
+ }
+ }
+ }
+ defaultContextPath = temp.getDefaultContextPath();
+ }
+
if (displayName == null) {
for (WebXml fragment : fragments) {
String value = fragment.getDisplayName();
Modified: tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java Wed Nov 29
09:46:00 2017
@@ -471,6 +471,16 @@ public class TesterContext implements Co
}
@Override
+ public String getDefaultContextPath() {
+ return null;
+ }
+
+ @Override
+ public void setDefaultContextPath(String defaultContextPath) {
+ // NO-OP
+ }
+
+ @Override
public boolean getDenyUncoveredHttpMethods() {
return false;
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1816617&r1=1816616&r2=1816617&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Nov 29 09:46:00 2017
@@ -50,6 +50,12 @@
<fix>
Add some missing NPEs to ServletContext. (remm)
</fix>
+ <fix>
+ Minor HttpServletMapping issues. (remm)
+ </fix>
+ <fix>
+ Add bare bones support for default context path. (remm)
+ </fix>
</changelog>
</subsection>
<subsection name="Other">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]