Author: markt
Date: Wed Feb 19 17:01:46 2014
New Revision: 1569818
URL: http://svn.apache.org/r1569818
Log:
Update tests to check correct handling elements added between 2.5 and 3.0.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebXml.java
tomcat/trunk/test/org/apache/tomcat/util/descriptor/web/TestWebXml.java
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=1569818&r1=1569817&r2=1569818&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 Feb
19 17:01:46 2014
@@ -30,6 +30,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import javax.servlet.DispatcherType;
import javax.servlet.ServletContext;
import javax.servlet.SessionTrackingMode;
import javax.servlet.descriptor.JspConfigDescriptor;
@@ -722,8 +723,11 @@ public class WebXml {
filterDef.getFilterName());
appendElement(sb, INDENT4, "filter-class",
filterDef.getFilterClass());
- appendElement(sb, INDENT4, "async-supported",
- filterDef.getAsyncSupported());
+ // Async support was introduced for Servlet 3.0 onwards
+ if (getMajorVersion() != 2) {
+ appendElement(sb, INDENT4, "async-supported",
+ filterDef.getAsyncSupported());
+ }
for (Map.Entry<String, String> param :
filterDef.getParameterMap().entrySet()) {
sb.append(" <init-param>\n");
@@ -756,6 +760,10 @@ public class WebXml {
// dispatcher was added in Servlet 2.4
if (getMajorVersion() > 2 || getMinorVersion() > 3) {
for (String dispatcher : filterMap.getDispatcherNames()) {
+ if (getMajorVersion() == 2 &&
+
DispatcherType.ASYNC.name().equals(dispatcher)) {
+ continue;
+ }
appendElement(sb, INDENT4, "dispatcher", dispatcher);
}
}
@@ -795,8 +803,11 @@ public class WebXml {
appendElement(sb, INDENT4, "load-on-startup",
servletDef.getLoadOnStartup());
appendElement(sb, INDENT4, "enabled", servletDef.getEnabled());
- appendElement(sb, INDENT4, "async-supported",
- servletDef.getAsyncSupported());
+ // Async support was introduced for Servlet 3.0 onwards
+ if (getMajorVersion() != 2) {
+ appendElement(sb, INDENT4, "async-supported",
+ servletDef.getAsyncSupported());
+ }
// servlet/run-as was introduced in Servlet 2.3
if (getMajorVersion() > 2 || getMinorVersion() > 2) {
if (servletDef.getRunAs() != null) {
@@ -811,18 +822,21 @@ public class WebXml {
appendElement(sb, INDENT6, "role-link", roleRef.getLink());
sb.append(" </security-role-ref>\n");
}
- MultipartDef multipartDef = servletDef.getMultipartDef();
- if (multipartDef != null) {
- sb.append(" <multipart-config>\n");
- appendElement(sb, INDENT6, "location",
- multipartDef.getLocation());
- appendElement(sb, INDENT6, "max-file-size",
- multipartDef.getMaxFileSize());
- appendElement(sb, INDENT6, "max-request-size",
- multipartDef.getMaxRequestSize());
- appendElement(sb, INDENT6, "file-size-threshold",
- multipartDef.getFileSizeThreshold());
- sb.append(" </multipart-config>\n");
+ // multipart-config was added in Servlet 3.0
+ if (getMajorVersion() != 2) {
+ MultipartDef multipartDef = servletDef.getMultipartDef();
+ if (multipartDef != null) {
+ sb.append(" <multipart-config>\n");
+ appendElement(sb, INDENT6, "location",
+ multipartDef.getLocation());
+ appendElement(sb, INDENT6, "max-file-size",
+ multipartDef.getMaxFileSize());
+ appendElement(sb, INDENT6, "max-request-size",
+ multipartDef.getMaxRequestSize());
+ appendElement(sb, INDENT6, "file-size-threshold",
+ multipartDef.getFileSizeThreshold());
+ sb.append(" </multipart-config>\n");
+ }
}
sb.append(" </servlet>\n");
}
@@ -880,13 +894,19 @@ public class WebXml {
}
for (ErrorPage errorPage : errorPages.values()) {
+ String exeptionType = errorPage.getExceptionType();
+ int errorCode = errorPage.getErrorCode();
+
+ if (exeptionType == null && errorCode == 0 && getMajorVersion() ==
2) {
+ // Default error pages are only supported from 3.0 onwards
+ continue;
+ }
sb.append(" <error-page>\n");
- if (errorPage.getExceptionType() == null) {
+ if (errorPage.getExceptionType() != null) {
+ appendElement(sb, INDENT4, "exception-type", exeptionType);
+ } else if (errorPage.getErrorCode() > 0) {
appendElement(sb, INDENT4, "error-code",
- Integer.toString(errorPage.getErrorCode()));
- } else {
- appendElement(sb, INDENT4, "exception-type",
- errorPage.getExceptionType());
+ Integer.toString(errorCode));
}
appendElement(sb, INDENT4, "location", errorPage.getLocation());
sb.append(" </error-page>\n");
Modified:
tomcat/trunk/test/org/apache/tomcat/util/descriptor/web/TestWebXml.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/descriptor/web/TestWebXml.java?rev=1569818&r1=1569817&r2=1569818&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/descriptor/web/TestWebXml.java
(original)
+++ tomcat/trunk/test/org/apache/tomcat/util/descriptor/web/TestWebXml.java Wed
Feb 19 17:01:46 2014
@@ -183,8 +183,6 @@ public class TestWebXml {
XmlErrorHandler handler = new XmlErrorHandler();
digester.setErrorHandler(handler);
- // System.out.print(webxml.toXml() + "\n\n\n");
-
InputSource is = new InputSource(new StringReader(webxml.toXml()));
WebXml webxmlResult = new WebXml();
digester.push(webxmlResult);
@@ -315,6 +313,31 @@ public class TestWebXml {
// listener-[description|display-name|icon] added in Servlet 2.4
// None of these are supported in WebXml
+ // filter-mapping/dispatcher/ASYNC added in Servlet 3.0
+ filterMap.setDispatcher("ASYNC");
+
+ // error-page with just location allowed in Servlet 3.0+
+ ErrorPage errorPage = new ErrorPage();
+ errorPage.setLocation("/dummy");
+ webXmlDefaultFragment.addErrorPage(errorPage);
+
+ // async-supported added to Servlet and Filter in 3.0
+ filterDef.setAsyncSupported("false");
+ servletDef.setAsyncSupported("false");
+
+ // session-cookie-config added in 3.0
+ SessionConfig sessionConfig = new SessionConfig();
+ sessionConfig.setCookieDomain("dummy");
+ webXmlDefaultFragment.setSessionConfig(sessionConfig);
+
+ // http-method-omission added in Servlet 3.0
+ // Let this trigger a validation error as dropping it silently could
+ // be a security concern
+
+ // multi-part-config added in Servlet 3.0
+ MultipartDef multiPart = new MultipartDef();
+ servletDef.setMultipartDef(multiPart);
+
return webXmlDefaultFragment;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]