You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-dev@jakarta.apache.org by cm...@apache.org on 2003/07/01 21:24:35 UTC
cvs commit: jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/deployment TestWebXmlMerger.java
cmlenz 2003/07/01 12:24:35
Modified: integration/ant/src/java/org/apache/cactus/integration/ant/deployment
WebXmlTag.java WebXml.java
integration/ant/src/test/org/apache/cactus/integration/ant/deployment
TestWebXmlMerger.java
Log:
Add servlet initialization before a potential <load-on-startup> element, so the resulting XML is valid according to the web-app DTD.
PR: 21237
Revision Changes Path
1.7 +7 -1 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/deployment/WebXmlTag.java
Index: WebXmlTag.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/deployment/WebXmlTag.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- WebXmlTag.java 10 Jun 2003 13:53:53 -0000 1.6
+++ WebXmlTag.java 1 Jul 2003 19:24:35 -0000 1.7
@@ -173,6 +173,12 @@
new WebXmlTag("servlet-class");
/**
+ * Element name 'load-on-startup'.
+ */
+ public static final WebXmlTag LOAD_ON_STARTUP =
+ new WebXmlTag("load-on-startup");
+
+ /**
* Element name 'servlet-mapping'.
*/
public static final WebXmlTag SERVLET_MAPPING =
1.9 +12 -2 jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/deployment/WebXml.java
Index: WebXml.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/deployment/WebXml.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- WebXml.java 11 Jun 2003 16:18:33 -0000 1.8
+++ WebXml.java 1 Jul 2003 19:24:35 -0000 1.9
@@ -1015,7 +1015,17 @@
createNestedText(WebXmlTag.PARAM_NAME, theParamName));
initParamElement.appendChild(
createNestedText(WebXmlTag.PARAM_VALUE, theParamValue));
- theElement.appendChild(initParamElement);
+ Iterator loadOnStartupElements = getNestedElements(theElement,
+ WebXmlTag.LOAD_ON_STARTUP);
+ if (loadOnStartupElements.hasNext())
+ {
+ theElement.insertBefore(initParamElement,
+ (Element) loadOnStartupElements.next());
+ }
+ else
+ {
+ theElement.appendChild(initParamElement);
+ }
}
/**
1.5 +41 -1 jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/deployment/TestWebXmlMerger.java
Index: TestWebXmlMerger.java
===================================================================
RCS file: /home/cvs/jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/deployment/TestWebXmlMerger.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TestWebXmlMerger.java 10 Jun 2003 09:20:32 -0000 1.4
+++ TestWebXmlMerger.java 1 Jul 2003 19:24:35 -0000 1.5
@@ -66,6 +66,7 @@
import junit.framework.TestCase;
import org.w3c.dom.Document;
+import org.w3c.dom.Element;
/**
* Unit tests for {@link WebXmlMerger}.
@@ -567,6 +568,45 @@
assertEquals("s3", servletNames.next());
assertEquals("s4", servletNames.next());
assertTrue(!servletNames.hasNext());
+ }
+
+ /**
+ * Verifies that servlet init parameters are added after the load-on-startup
+ * element of an already existing servlet definition.
+ *
+ * @throws Exception If an unexpected error occurs
+ */
+ public void testMergingServletWithInitParamsThatIsAlreadyDefined()
+ throws Exception
+ {
+ String srcXml = "<web-app>".trim()
+ + " <servlet>".trim()
+ + " <servlet-name>s1</servlet-name>".trim()
+ + " <servlet-class>sclass1</servlet-class>".trim()
+ + " <load-on-startup>1</load-on-startup>".trim()
+ + " </servlet>".trim()
+ + "</web-app>";
+ Document srcDoc =
+ builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
+ WebXml srcWebXml = new WebXml(srcDoc);
+ String mergeXml = "<web-app>"
+ + " <servlet>".trim()
+ + " <servlet-name>s1</servlet-name>".trim()
+ + " <servlet-class>sclass1</servlet-class>".trim()
+ + " <init-param>".trim()
+ + " <param-name>s1param1</param-name>".trim()
+ + " <param-value>s1param1value</param-value>".trim()
+ + " </init-param>".trim()
+ + " </servlet>".trim()
+ + "</web-app>";
+ Document mergeDoc =
+ builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
+ WebXml mergeWebXml = new WebXml(mergeDoc);
+ WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+ merger.mergeServlets(mergeWebXml);
+ Element servletElement = srcWebXml.getServlet("s1");
+ assertEquals("load-on-startup",
+ ((Element) servletElement.getLastChild()).getTagName());
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: cactus-dev-help@jakarta.apache.org