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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org