Author: markt Date: Wed Feb 19 16:14:40 2014 New Revision: 1569807 URL: http://svn.apache.org/r1569807 Log: Update tests to check correct handling of all top-level elements added between 2.3 and 2.4.
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=1569807&r1=1569806&r2=1569807&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 16:14:40 2014 @@ -891,43 +891,49 @@ public class WebXml { } sb.append('\n'); + // jsp-config was added in Servlet 2.4. Prior to that, tag-libs was used + // directly and jsp-property-group did not exist if (taglibs.size() > 0 || jspPropertyGroups.size() > 0) { - sb.append(" <jsp-config>\n"); + if (getMajorVersion() > 2 || getMinorVersion() > 3) { + sb.append(" <jsp-config>\n"); + } for (Map.Entry<String, String> entry : taglibs.entrySet()) { sb.append(" <taglib>\n"); appendElement(sb, INDENT6, "taglib-uri", entry.getKey()); appendElement(sb, INDENT6, "taglib-location", entry.getValue()); sb.append(" </taglib>\n"); } - for (JspPropertyGroup jpg : jspPropertyGroups) { - sb.append(" <jsp-property-group>\n"); - for (String urlPattern : jpg.getUrlPatterns()) { - appendElement(sb, INDENT6, "url-pattern", urlPattern); + if (getMajorVersion() > 2 || getMinorVersion() > 3) { + for (JspPropertyGroup jpg : jspPropertyGroups) { + sb.append(" <jsp-property-group>\n"); + for (String urlPattern : jpg.getUrlPatterns()) { + appendElement(sb, INDENT6, "url-pattern", urlPattern); + } + appendElement(sb, INDENT6, "el-ignored", jpg.getElIgnored()); + appendElement(sb, INDENT6, "page-encoding", + jpg.getPageEncoding()); + appendElement(sb, INDENT6, "scripting-invalid", + jpg.getScriptingInvalid()); + appendElement(sb, INDENT6, "is-xml", jpg.getIsXml()); + for (String prelude : jpg.getIncludePreludes()) { + appendElement(sb, INDENT6, "include-prelude", prelude); + } + for (String coda : jpg.getIncludeCodas()) { + appendElement(sb, INDENT6, "include-coda", coda); + } + appendElement(sb, INDENT6, "deferred-syntax-allowed-as-literal", + jpg.getDeferredSyntax()); + appendElement(sb, INDENT6, "trim-directive-whitespaces", + jpg.getTrimWhitespace()); + appendElement(sb, INDENT6, "default-content-type", + jpg.getDefaultContentType()); + appendElement(sb, INDENT6, "buffer", jpg.getBuffer()); + appendElement(sb, INDENT6, "error-on-undeclared-namespace", + jpg.getErrorOnUndeclaredNamespace()); + sb.append(" </jsp-property-group>\n"); } - appendElement(sb, INDENT6, "el-ignored", jpg.getElIgnored()); - appendElement(sb, INDENT6, "page-encoding", - jpg.getPageEncoding()); - appendElement(sb, INDENT6, "scripting-invalid", - jpg.getScriptingInvalid()); - appendElement(sb, INDENT6, "is-xml", jpg.getIsXml()); - for (String prelude : jpg.getIncludePreludes()) { - appendElement(sb, INDENT6, "include-prelude", prelude); - } - for (String coda : jpg.getIncludeCodas()) { - appendElement(sb, INDENT6, "include-coda", coda); - } - appendElement(sb, INDENT6, "deferred-syntax-allowed-as-literal", - jpg.getDeferredSyntax()); - appendElement(sb, INDENT6, "trim-directive-whitespaces", - jpg.getTrimWhitespace()); - appendElement(sb, INDENT6, "default-content-type", - jpg.getDefaultContentType()); - appendElement(sb, INDENT6, "buffer", jpg.getBuffer()); - appendElement(sb, INDENT6, "error-on-undeclared-namespace", - jpg.getErrorOnUndeclaredNamespace()); - sb.append(" </jsp-property-group>\n"); + sb.append(" </jsp-config>\n\n"); } - sb.append(" </jsp-config>\n\n"); } // resource-env-ref was introduced in Servlet 2.3 @@ -1124,61 +1130,66 @@ public class WebXml { sb.append('\n'); } - for (ContextService serviceRef : serviceRefs.values()) { - sb.append(" <service-ref>\n"); - appendElement(sb, INDENT4, "description", - serviceRef.getDescription()); - appendElement(sb, INDENT4, "display-name", - serviceRef.getDisplayname()); - appendElement(sb, INDENT4, "service-ref-name", - serviceRef.getName()); - appendElement(sb, INDENT4, "service-interface", - serviceRef.getInterface()); - appendElement(sb, INDENT4, "service-ref-type", - serviceRef.getType()); - appendElement(sb, INDENT4, "wsdl-file", serviceRef.getWsdlfile()); - appendElement(sb, INDENT4, "jaxrpc-mapping-file", - serviceRef.getJaxrpcmappingfile()); - String qname = serviceRef.getServiceqnameNamespaceURI(); - if (qname != null) { - qname = qname + ":"; - } - qname = qname + serviceRef.getServiceqnameLocalpart(); - appendElement(sb, INDENT4, "service-qname", qname); - Iterator<String> endpointIter = serviceRef.getServiceendpoints(); - while (endpointIter.hasNext()) { - String endpoint = endpointIter.next(); - sb.append(" <port-component-ref>\n"); - appendElement(sb, INDENT6, "service-endpoint-interface", - endpoint); - appendElement(sb, INDENT6, "port-component-link", - serviceRef.getProperty(endpoint)); - sb.append(" </port-component-ref>\n"); - } - Iterator<String> handlerIter = serviceRef.getHandlers(); - while (handlerIter.hasNext()) { - String handler = handlerIter.next(); - sb.append(" <handler>\n"); - ContextHandler ch = serviceRef.getHandler(handler); - appendElement(sb, INDENT6, "handler-name", ch.getName()); - appendElement(sb, INDENT6, "handler-class", - ch.getHandlerclass()); - sb.append(" </handler>\n"); - } - // TODO handler-chains - // TODO mapped-name - for (InjectionTarget target : serviceRef.getInjectionTargets()) { - sb.append(" <injection-target>\n"); - appendElement(sb, INDENT6, "injection-target-class", - target.getTargetClass()); - appendElement(sb, INDENT6, "injection-target-name", - target.getTargetName()); - sb.append(" </injection-target>\n"); + // service-ref was introduced in Servlet 2.4 + // Note versions are validated and start at 2.2 so this test takes that + // into account + if (getMajorVersion() > 2 || getMinorVersion() > 3) { + for (ContextService serviceRef : serviceRefs.values()) { + sb.append(" <service-ref>\n"); + appendElement(sb, INDENT4, "description", + serviceRef.getDescription()); + appendElement(sb, INDENT4, "display-name", + serviceRef.getDisplayname()); + appendElement(sb, INDENT4, "service-ref-name", + serviceRef.getName()); + appendElement(sb, INDENT4, "service-interface", + serviceRef.getInterface()); + appendElement(sb, INDENT4, "service-ref-type", + serviceRef.getType()); + appendElement(sb, INDENT4, "wsdl-file", serviceRef.getWsdlfile()); + appendElement(sb, INDENT4, "jaxrpc-mapping-file", + serviceRef.getJaxrpcmappingfile()); + String qname = serviceRef.getServiceqnameNamespaceURI(); + if (qname != null) { + qname = qname + ":"; + } + qname = qname + serviceRef.getServiceqnameLocalpart(); + appendElement(sb, INDENT4, "service-qname", qname); + Iterator<String> endpointIter = serviceRef.getServiceendpoints(); + while (endpointIter.hasNext()) { + String endpoint = endpointIter.next(); + sb.append(" <port-component-ref>\n"); + appendElement(sb, INDENT6, "service-endpoint-interface", + endpoint); + appendElement(sb, INDENT6, "port-component-link", + serviceRef.getProperty(endpoint)); + sb.append(" </port-component-ref>\n"); + } + Iterator<String> handlerIter = serviceRef.getHandlers(); + while (handlerIter.hasNext()) { + String handler = handlerIter.next(); + sb.append(" <handler>\n"); + ContextHandler ch = serviceRef.getHandler(handler); + appendElement(sb, INDENT6, "handler-name", ch.getName()); + appendElement(sb, INDENT6, "handler-class", + ch.getHandlerclass()); + sb.append(" </handler>\n"); + } + // TODO handler-chains + // TODO mapped-name + for (InjectionTarget target : serviceRef.getInjectionTargets()) { + sb.append(" <injection-target>\n"); + appendElement(sb, INDENT6, "injection-target-class", + target.getTargetClass()); + appendElement(sb, INDENT6, "injection-target-name", + target.getTargetName()); + sb.append(" </injection-target>\n"); + } + // TODO lookup-name + sb.append(" </service-ref>\n"); } - // TODO lookup-name - sb.append(" </service-ref>\n"); + sb.append('\n'); } - sb.append('\n'); if (!postConstructMethods.isEmpty()) { for (Entry<String, String> entry : postConstructMethods @@ -1206,53 +1217,65 @@ public class WebXml { sb.append('\n'); } - for (MessageDestinationRef mdr : messageDestinationRefs.values()) { - sb.append(" <message-destination-ref>\n"); - appendElement(sb, INDENT4, "description", mdr.getDescription()); - appendElement(sb, INDENT4, "message-destination-ref-name", - mdr.getName()); - appendElement(sb, INDENT4, "message-destination-type", - mdr.getType()); - appendElement(sb, INDENT4, "message-destination-usage", - mdr.getUsage()); - appendElement(sb, INDENT4, "message-destination-link", - mdr.getLink()); - // TODO mapped-name - for (InjectionTarget target : mdr.getInjectionTargets()) { - sb.append(" <injection-target>\n"); - appendElement(sb, INDENT6, "injection-target-class", - target.getTargetClass()); - appendElement(sb, INDENT6, "injection-target-name", - target.getTargetName()); - sb.append(" </injection-target>\n"); + // message-destination-ref, message-destination were introduced in + // Servlet 2.4 + // Note versions are validated and start at 2.2 so this test takes that + // into account + if (getMajorVersion() > 2 || getMinorVersion() > 3) { + for (MessageDestinationRef mdr : messageDestinationRefs.values()) { + sb.append(" <message-destination-ref>\n"); + appendElement(sb, INDENT4, "description", mdr.getDescription()); + appendElement(sb, INDENT4, "message-destination-ref-name", + mdr.getName()); + appendElement(sb, INDENT4, "message-destination-type", + mdr.getType()); + appendElement(sb, INDENT4, "message-destination-usage", + mdr.getUsage()); + appendElement(sb, INDENT4, "message-destination-link", + mdr.getLink()); + // TODO mapped-name + for (InjectionTarget target : mdr.getInjectionTargets()) { + sb.append(" <injection-target>\n"); + appendElement(sb, INDENT6, "injection-target-class", + target.getTargetClass()); + appendElement(sb, INDENT6, "injection-target-name", + target.getTargetName()); + sb.append(" </injection-target>\n"); + } + // TODO lookup-name + sb.append(" </message-destination-ref>\n"); } - // TODO lookup-name - sb.append(" </message-destination-ref>\n"); - } - sb.append('\n'); + sb.append('\n'); - for (MessageDestination md : messageDestinations.values()) { - sb.append(" <message-destination>\n"); - appendElement(sb, INDENT4, "description", md.getDescription()); - appendElement(sb, INDENT4, "display-name", md.getDisplayName()); - appendElement(sb, INDENT4, "message-destination-name", - md.getName()); - // TODO mapped-name - sb.append(" </message-destination>\n"); + for (MessageDestination md : messageDestinations.values()) { + sb.append(" <message-destination>\n"); + appendElement(sb, INDENT4, "description", md.getDescription()); + appendElement(sb, INDENT4, "display-name", md.getDisplayName()); + appendElement(sb, INDENT4, "message-destination-name", + md.getName()); + // TODO mapped-name + sb.append(" </message-destination>\n"); + } + sb.append('\n'); } - sb.append('\n'); - if (localeEncodingMappings.size() > 0) { - sb.append(" <locale-encoding-mapping-list>\n"); - for (Map.Entry<String, String> entry : - localeEncodingMappings.entrySet()) { - sb.append(" <locale-encoding-mapping>\n"); - appendElement(sb, INDENT6, "locale", entry.getKey()); - appendElement(sb, INDENT6, "encoding", entry.getValue()); - sb.append(" </locale-encoding-mapping>\n"); + // locale-encoding-mapping-list was introduced in Servlet 2.4 + // Note versions are validated and start at 2.2 so this test takes that + // into account + if (getMajorVersion() > 2 || getMinorVersion() > 3) { + if (localeEncodingMappings.size() > 0) { + sb.append(" <locale-encoding-mapping-list>\n"); + for (Map.Entry<String, String> entry : + localeEncodingMappings.entrySet()) { + sb.append(" <locale-encoding-mapping>\n"); + appendElement(sb, INDENT6, "locale", entry.getKey()); + appendElement(sb, INDENT6, "encoding", entry.getValue()); + sb.append(" </locale-encoding-mapping>\n"); + } + sb.append(" </locale-encoding-mapping-list>\n"); } - sb.append(" </locale-encoding-mapping-list>\n"); } + sb.append("</web-app>"); return sb.toString(); } 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=1569807&r1=1569806&r2=1569807&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 16:14:40 2014 @@ -282,6 +282,33 @@ public class TestWebXml { sc.addCollection(collection); webXmlDefaultFragment.addSecurityConstraint(sc); + // service-ref was added in 2.4 so should be excluded in 2.3 and earlier + ContextService serviceRef = new ContextService(); + serviceRef.setName("dummy"); + serviceRef.setInterface("dummy"); + webXmlDefaultFragment.addServiceRef(serviceRef); + + // message-destination-ref was added in 2.4 so should be excluded in 2.3 + // and earlier + MessageDestinationRef mdRef = new MessageDestinationRef(); + mdRef.setName("dummy"); + mdRef.setType("dummy"); + mdRef.setUsage("Consumes"); + webXmlDefaultFragment.addMessageDestinationRef(mdRef); + + // message-destination was added in 2.4 so should be excluded in 2.3 + // and earlier + MessageDestination md = new MessageDestination(); + md.setName("dummy"); + webXmlDefaultFragment.addMessageDestination(md); + + // local-encoding-mapping-list was added in 2.4 so should be excluded in + // 2.3 and earlier + webXmlDefaultFragment.addLocaleEncodingMapping("en", "UTF-8"); + + // jsp-config + webXmlDefaultFragment.addTaglib("dummy", "dummy"); + return webXmlDefaultFragment; } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org