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: [email protected]
For additional commands, e-mail: [email protected]