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

Reply via email to