Codehaus Bamboo | 9 Feb 20:37

[cargo-dev] [Bamboo] Cargo > Containers - JBoss 7.1.x > #76 has FAILED (3 times).

.successful a, .successful a:visited, .successful a:link, .successful a:hover,.successful a:active {color:#393} .failed a, .failed a:visited, .failed a:link, .failed a:hover,.failed a:active {color:#d62829} td a, td a:link, td a:visited, td a:hover, td a:active {background:transparent;font-family: Arial, sans-serif;text-decoration:underline;} td a:link {color:#369;} td a:visited {color:#444;} td a:hover, td a:active {color:#036;} td a:hover {text-decoration:none;}
Cargo > Containers - JBoss 7.1.x > #76 has failed 3 times.
This build was triggered at the scheduled time of 1:30 PM
1/14 tests failed.

This plan has been failing since CARGO-SAMPLESJBOSS71X-74 (Scheduled build, 2 days before).

Failing Jobs
Default Job (Default Stage) Duration: 7 minutes Tests: 1 of 14 failed Logs | Artifacts

Code Changes
This build does not have any commits.

Tests See full test details
Existing Test Failures (1)
ExistingConfigurationTest : Deploy war statically (Default Job)
Fixed Tests (4)
ExistingConfigurationTest : Start with one expanded war deployed (Default Job)
RemoteDeploymentTest : Deploy undeploy redeploy war remotely (Default Job)
RemoteDeploymentTest : Change war context and deploy undeploy remotely (Default Job)
WarCapabilityContainerTest : Deploy war defined with relative path (Default Job)

Email generated by Atlassian Bamboo - if you wish to stop receiving these emails edit your user profile or notify your administrator
Actions
View Online
Add Comments
Link to JIRA issue
Codehaus Bamboo | 9 Feb 18:26

[cargo-dev] [Bamboo] Cargo > Containers - JBoss 5.x > #630 has FAILED (2 times).

.successful a, .successful a:visited, .successful a:link, .successful a:hover,.successful a:active {color:#393} .failed a, .failed a:visited, .failed a:link, .failed a:hover,.failed a:active {color:#d62829} td a, td a:link, td a:visited, td a:hover, td a:active {background:transparent;font-family: Arial, sans-serif;text-decoration:underline;} td a:link {color:#369;} td a:visited {color:#444;} td a:hover, td a:active {color:#036;} td a:hover {text-decoration:none;}
Cargo > Containers - JBoss 5.x > #630 has failed 2 times.
This build was triggered at the scheduled time of 11:15 AM
1/18 tests failed.

This plan has been failing since CARGO-SAMPLESJBOSS5X-629 (Scheduled build, 1 day before).

Failing Jobs
Default Job (Default Stage) Duration: 11 minutes Tests: 1 of 18 failed Logs | Artifacts

Code Changes
This build does not have any commits.

Tests See full test details
New Test Failures (1)
RemoteDeploymentTest : Deploy undeploy redeploy war remotely (Default Job)

Email generated by Atlassian Bamboo - if you wish to stop receiving these emails edit your user profile or notify your administrator
Actions
View Online
Add Comments
Link to JIRA issue
Sibel Cilek (JIRA | 9 Feb 15:16

(CARGO-1082) Missing configuration <cargo.servlet.roles>

Sibel Cilek created CARGO-1082:
----------------------------------

             Summary: Missing configuration <cargo.servlet.roles>
                 Key: CARGO-1082
                 URL: https://jira.codehaus.org/browse/CARGO-1082
             Project: Cargo
          Issue Type: Bug
          Components: Tomcat
    Affects Versions: 1.1.2
            Reporter: Sibel Cilek

The configuration of *<cargo.servlet.users>* requires a role.

We need a configuration like *<cargo.servlet.roles>*.

Currently using the configuration <cargo.servlet.users> generates a tomcat-users.xml as follows:
{code:xml}
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
   <user name="user" password="password" roles="monitor"/>
</tomcat-users>
{code}

But it should be:
{code:xml}
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
   <role rolename="monitor"/>
   <user name="user" password="password" roles="monitor"/>
</tomcat-users>
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

Codehaus Bamboo | 9 Feb 02:24

[cargo-dev] [Bamboo] Cargo > CARGO trunks - Compile and test (JDK 1.5, Maven2) > #1262 was SUCCESSFUL (with 733 tests)

.successful a, .successful a:visited, .successful a:link, .successful a:hover,.successful a:active {color:#393} .failed a, .failed a:visited, .failed a:link, .failed a:hover,.failed a:active {color:#d62829} .notexecuted a, .notexecuted a:visited, .notexecuted a:link, .notexecuted a:hover,.notexecuted a:active {color:#ffcc66} td a, td a:link, td a:visited, td a:hover, td a:active {background:transparent;font-family: Arial, sans-serif;text-decoration:underline;} td a:link {color:#369;} td a:visited {color:#444;} td a:hover, td a:active {color:#036;} td a:hover {text-decoration:none;}
Cargo > CARGO trunks - Compile and test (JDK 1.5, Maven2) > #1262 was successful.
This build occurred because it is a dependant of CARGO-TRUNKM3JDK16-488.
733 tests in total.

Code Changes
This build does not have any commits.

Actions
View Online
Add Comments
Link to JIRA issue
Email generated by Atlassian Bamboo - if you wish to stop receiving these emails edit your user profile or notify your administrator
Codehaus Bamboo | 9 Feb 02:07

[cargo-dev] [Bamboo] Cargo > CARGO trunks - Compile and test (JDK 1.5, Maven2) > #1261 has FAILED

.successful a, .successful a:visited, .successful a:link, .successful a:hover,.successful a:active {color:#393} .failed a, .failed a:visited, .failed a:link, .failed a:hover,.failed a:active {color:#d62829} .notexecuted a, .notexecuted a:visited, .notexecuted a:link, .notexecuted a:hover,.notexecuted a:active {color:#ffcc66} td a, td a:link, td a:visited, td a:hover, td a:active {background:transparent;font-family: Arial, sans-serif;text-decoration:underline;} td a:link {color:#369;} td a:visited {color:#444;} td a:hover, td a:active {color:#036;} td a:hover {text-decoration:none;}
Cargo > CARGO trunks - Compile and test (JDK 1.5, Maven2) > #1261 has failed.
This build was manually triggered by Ben Walding.
No failed tests found, a possible compilation error.

Failing Jobs
Default Job (Default Stage) Duration: 22 minutes Tests: 731 passed Logs | Artifacts

Code Changes
This build does not have any commits.

Actions
View Online
Add Comments
Link to JIRA issue
Email generated by Atlassian Bamboo - if you wish to stop receiving these emails edit your user profile or notify your administrator

(CARGO-1081) Duplicate entries when merging security constraints

Markus Dreher created CARGO-1081:
------------------------------------

             Summary: Duplicate entries when merging security constraints
                 Key: CARGO-1081
                 URL: https://jira.codehaus.org/browse/CARGO-1081
             Project: Cargo
          Issue Type: Bug
          Components: Core
    Affects Versions: 1.2.0
            Reporter: Markus Dreher
            Priority: Minor

See: http://old.nabble.com/Duplicate-entries-when-merging-wars-to33241645.html

--

Merging 2 war results in duplicate entries for security-constraints in web.xml

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>resource</web-resource-name>
            <url-pattern>/myapp/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>myuser</role-name>
        </auth-constraint>
    </security-constraint>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

(CARGO-1080) Duplicate entries when merging servlet mappings

Markus Dreher created CARGO-1080:
------------------------------------

             Summary: Duplicate entries when merging servlet mappings
                 Key: CARGO-1080
                 URL: https://jira.codehaus.org/browse/CARGO-1080
             Project: Cargo
          Issue Type: Bug
          Components: Core
    Affects Versions: 1.2.0
            Reporter: Markus Dreher
            Priority: Minor

See: http://old.nabble.com/Duplicate-entries-when-merging-wars-to33241645.html

--
Merging 2 war results in duplicate entries for servlet-mappping in web.xml

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

alitokmen | 3 Feb 19:33

[cargo-dev] [cargo] r3231 - in core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp: . elements

Author: alitokmen
Date: 2012-02-03 12:33:21 -0600 (Fri, 03 Feb 2012)
New Revision: 3231

Modified:
   core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlUtils.java
   core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/elements/MimeMapping.java
Log:
Avoid NPE

Modified: core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlUtils.java
===================================================================
---
core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlUtils.java	2012-02-02
21:51:01 UTC (rev 3230)
+++
core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlUtils.java	2012-02-03
18:33:21 UTC (rev 3231)
@@ -324,7 +324,6 @@
             {
                 servletNames.add(servletElement.getChild(
                     WebXmlType.SERVLET_NAME, servletElement.getNamespace()).getText());
-
             }
         }
         return servletNames;

Modified: core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/elements/MimeMapping.java
===================================================================
---
core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/elements/MimeMapping.java	2012-02-02
21:51:01 UTC (rev 3230)
+++
core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/elements/MimeMapping.java	2012-02-03
18:33:21 UTC (rev 3231)
@@ -43,7 +43,7 @@
      */
     public String getExtension()
     {
-        Element e = getChild(WebXmlType.EXTENSION, this.getNamespace());
+        Element e = child(WebXmlType.EXTENSION);
         return e.getText();
     }

@@ -63,7 +63,7 @@
      */
     public String getMimeType()
     {
-        Element e = getChild(WebXmlType.MIME_TYPE, this.getNamespace());
+        Element e = child(WebXmlType.MIME_TYPE);
         return e.getText();
     }

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

alitokmen | 2 Feb 22:51

[cargo-dev] [cargo] r3230 - in core/trunk/api/module/src: main/java/org/codehaus/cargo/module/webapp main/java/org/codehaus/cargo/module/webapp/elements main/java/org/codehaus/cargo/module/webapp/merge test/java/org/codehaus/cargo/module/webapp/merge

Author: alitokmen
Date: 2012-02-02 15:51:01 -0600 (Thu, 02 Feb 2012)
New Revision: 3230

Added:
   core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/elements/MimeMapping.java
Modified:
   core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXml22Type.java
   core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXml24Type.java
   core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlType.java
   core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlUtils.java
   core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/merge/WebXmlMerger.java
   core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergeStrategyMergerTest.java
   core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergerTest.java
   core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlEjbRefMergerTest.java
   core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlFilterMergerTest.java
   core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlListenerMergerTest.java
   core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlSecurityRoleMergerTest.java
   core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlServletMergerTest.java
Log:
Fix: CARGO-1078 - Duplicate entries when merging <filter-mapping>
Fix: CARGO-1079 - Add support for merging <mime-mapping>

Modified: core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXml22Type.java
===================================================================
--- core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXml22Type.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXml22Type.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -28,6 +28,7  <at>  <at> 
 import org.codehaus.cargo.module.webapp.elements.FilterMapping;
 import org.codehaus.cargo.module.webapp.elements.InitParam;
 import org.codehaus.cargo.module.webapp.elements.Listener;
+import org.codehaus.cargo.module.webapp.elements.MimeMapping;
 import org.codehaus.cargo.module.webapp.elements.SecurityConstraint;
 import org.codehaus.cargo.module.webapp.elements.Servlet;
 
 <at>  <at>  -72,7 +73,7  <at>  <at> 
             new WebXmlTag(this, "servlet-mapping"),
             new WebXmlTag(this, "url-pattern"),
             new WebXmlTag(this, "session-config", false),
-            new WebXmlTag(this, "mime-mapping"),
+            new WebXmlTag(this, "mime-mapping", false, null, MimeMapping.class),
             new WebXmlTag(this, "welcome-file-list", false),
             new WebXmlTag(this, "error-page", true, new Identifier(
                     "concat(error-code,'>',exception-type)"), null), new WebXmlTag(this, "taglib"),

Modified: core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXml24Type.java
===================================================================
--- core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXml24Type.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXml24Type.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -33,6 +33,7  <at>  <at> 
 import org.codehaus.cargo.module.webapp.elements.FilterMapping;
 import org.codehaus.cargo.module.webapp.elements.InitParam;
 import org.codehaus.cargo.module.webapp.elements.Listener;
+import org.codehaus.cargo.module.webapp.elements.MimeMapping;
 import org.codehaus.cargo.module.webapp.elements.SecurityConstraint;
 import org.codehaus.cargo.module.webapp.elements.Servlet;
 
 <at>  <at>  -99,7 +100,7  <at>  <at> 
             new WebXmlTag(this, "servlet-mapping"),
             new WebXmlTag(this, "url-pattern"),
             new WebXmlTag(this, "session-config", false),
-            new WebXmlTag(this, "mime-mapping"),
+            new WebXmlTag(this, "mime-mapping", false, null, MimeMapping.class),
             new WebXmlTag(this, "welcome-file-list", false),
             new WebXmlTag(this, "error-page", true, new Identifier(
                         "concat(error-code,'>',exception-type)"), null),

Modified: core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlType.java
===================================================================
--- core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlType.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlType.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -148,6 +148,16  <at>  <at> 
     public static final String MIME_MAPPING = "mime-mapping";
 
     /**
+     * Element name 'extension'.
+     */
+    public static final String EXTENSION = "extension";
+
+    /**
+     * Element name 'mime-type'.
+     */
+    public static final String MIME_TYPE = "mime-type";
+
+    /**
      * Element name 'welcome-file-list'.
      */
     public static final String WELCOME_FILE_LIST = "welcome-file-list";

Modified: core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlUtils.java
===================================================================
--- core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlUtils.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/WebXmlUtils.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -20,6 +20,7  <at>  <at> 
 package org.codehaus.cargo.module.webapp;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.codehaus.cargo.module.Descriptor;
 <at>  <at>  -857,39 +858,70  <at>  <at> 
             throw new IllegalStateException("Filter '" + filterName + "' not defined");
         }
 
-        FilterMapping filterMappingElement = (FilterMapping) webXml.getDescriptorType()
-                .getTagByName(WebXmlType.FILTER_MAPPING).create();
+        List<FilterMapping> mappings = WebXmlUtils.getFilterMappingElements(webXml,
+            filterName);
 
-        filterMappingElement.addContent(webXml.getDescriptorType().getTagByName(
-            WebXmlType.FILTER_NAME).create().setText(
-            filterName));
+        FilterMapping filterMappingElement = null;
+        for (FilterMapping mapping : mappings)
+        {
+            if (rhs.getUrlPattern() != null)
+            {
+                if (rhs.getUrlPattern().equals(mapping.getUrlPattern()))
+                {
+                    filterMappingElement = mapping;
+                    break;
+                }
+            }
+            else if (rhs.getServletName() != null)
+            {
+                if (rhs.getServletName().equals(mapping.getServletName()))
+                {
+                    filterMappingElement = mapping;
+                    break;
+                }
+            }
+        }
 
-        String urlPattern = rhs.getUrlPattern();
+        if (filterMappingElement == null)
+        {
+            filterMappingElement = (FilterMapping) webXml.getDescriptorType()
+                    .getTagByName(WebXmlType.FILTER_MAPPING).create();
 
-        if (urlPattern != null)
-        {
             filterMappingElement.addContent(webXml.getDescriptorType().getTagByName(
-                    WebXmlType.URL_PATTERN).create().setText(urlPattern));
-        }
-        else
-        {
-            // must be servlet name instead
-            String servletName = rhs.getServletName();
-            if (servletName == null)
+                WebXmlType.FILTER_NAME).create().setText(filterName));
+
+            String urlPattern = rhs.getUrlPattern();
+
+            if (urlPattern != null)
             {
-                throw new IllegalStateException("Filter '" + filterName
-                        + "' has neither a servlet-name nor a url-pattern.");
+                filterMappingElement.addContent(webXml.getDescriptorType().getTagByName(
+                        WebXmlType.URL_PATTERN).create().setText(urlPattern));
             }
-            filterMappingElement.setServletName(servletName);
+            else
+            {
+                // must be servlet name instead
+                String servletName = rhs.getServletName();
+                if (servletName == null)
+                {
+                    throw new IllegalStateException("Filter '" + filterName
+                            + "' has neither a servlet-name nor a url-pattern.");
+                }
+                filterMappingElement.setServletName(servletName);
+            }
         }
 
         String[] dispatchers = rhs.getDispatchers();
+        List<String> filterMappingElementDispatchers =
+            Arrays.asList(filterMappingElement.getDispatchers());
 
         if (dispatchers != null)
         {
             for (String dispatcher : dispatchers)
             {
-                filterMappingElement.addDispatcher(dispatcher);
+                if (!filterMappingElementDispatchers.contains(dispatcher))
+                {
+                    filterMappingElement.addDispatcher(dispatcher);
+                }
             }
         }
 
 <at>  <at>  -1006,7 +1038,6  <at>  <at> 
         }
 
         return initParam.getParamValue();
-
     }
 
     /**

Added: core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/elements/MimeMapping.java
===================================================================
--- core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/elements/MimeMapping.java	                        (rev 0)
+++ core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/elements/MimeMapping.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -0,0 +1,79  <at>  <at> 
+/*
+ * ========================================================================
+ *
+ * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ========================================================================
+ */
+package org.codehaus.cargo.module.webapp.elements;
+
+import org.codehaus.cargo.module.webapp.WebXmlTag;
+import org.codehaus.cargo.module.webapp.WebXmlType;
+import org.jdom.Element;
+
+/**
+ *  <at> version $Id$
+ */
+public class MimeMapping extends WebXmlElement
+{
+    /**
+     * Constructor.
+     *  <at> param tag Web Xml Tag definition
+     */
+    public MimeMapping(WebXmlTag tag)
+    {
+        super(tag);
+    }
+
+    /**
+     * Get the Extension.
+     *  <at> return Extension
+     */
+    public String getExtension()
+    {
+        Element e = getChild(WebXmlType.EXTENSION, this.getNamespace());
+        return e.getText();
+    }
+
+    /**
+     * Set the Extension.
+     *  <at> param extension The Extension
+     */
+    public void setExtension(String extension)
+    {
+        Element e = child(WebXmlType.EXTENSION);
+        e.setText(extension);
+    }
+
+    /**
+     * Get the mime type.
+     *  <at> return The mime type
+     */
+    public String getMimeType()
+    {
+        Element e = getChild(WebXmlType.MIME_TYPE, this.getNamespace());
+        return e.getText();
+    }
+
+    /**
+     * Set the mime type.
+     *  <at> param mimeType The mime type
+     */
+    public void setMimeType(String mimeType)
+    {
+        Element e = child(WebXmlType.MIME_TYPE);
+        e.setText(mimeType);
+    }
+}


Property changes on: core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/elements/MimeMapping.java
___________________________________________________________________
Added: svn:keywords
   + "Author Date Id Revision"
Added: svn:eol-style
   + native

Modified: core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/merge/WebXmlMerger.java
===================================================================
--- core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/merge/WebXmlMerger.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/main/java/org/codehaus/cargo/module/webapp/merge/WebXmlMerger.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -35,7 +35,9  <at>  <at> 
 import org.codehaus.cargo.module.webapp.WebXmlUtils;
 import org.codehaus.cargo.module.webapp.WebXmlVersion;
 import org.codehaus.cargo.module.webapp.elements.FilterMapping;
+import org.codehaus.cargo.module.webapp.elements.MimeMapping;
 import org.codehaus.cargo.util.CargoException;
+import org.jdom.Element;
 
 /**
  * Helper class that can merge two web deployment descriptors.
 <at>  <at>  -70,6 +72,8  <at>  <at> 
             WebXmlType.FILTER_MAPPING, DescriptorMergerByTag.IGNORE);
         descriptorMergerByTag.setStrategy(
             WebXmlType.SERVLET, DescriptorMergerByTag.IGNORE);
+        descriptorMergerByTag.setStrategy(
+            WebXmlType.MIME_MAPPING, DescriptorMergerByTag.IGNORE);
 
         addMerger(descriptorMergerByTag);
     }
 <at>  <at>  -129,6 +133,7  <at>  <at> 
 
             mergeSecurityRoles(theMergeWebXml);
 
+            mergeMimeMappings(theMergeWebXml);
         }
         catch (Exception e)
         {
 <at>  <at>  -312,4 +317,53  <at>  <at> 
                 this.getClass().getName());
         }
     }
+
+    /**
+     * Merges the servlet definitions from the specified descriptor into the original descriptor.
+     * 
+     *  <at> param theWebXml The descriptor that contains the filter definitions that are to be merged
+     * into the original descriptor
+     */
+    protected final void mergeMimeMappings(WebXml theWebXml)
+    {
+        int count = 0;
+
+        List<Element> srcItems = webXml.getTags(WebXmlType.MIME_MAPPING);
+        List<Element> targetItems = theWebXml.getTags(WebXmlType.MIME_MAPPING);
+
+        for (Element targetItem : targetItems)
+        {
+            boolean foundItem = false;
+
+            MimeMapping targetMimeMapping = (MimeMapping) targetItem;
+
+            for (Element srcItem : srcItems)
+            {
+                MimeMapping srcMimeMapping = (MimeMapping) srcItem;
+
+                if (targetMimeMapping.getExtension().equals(srcMimeMapping.getExtension()))
+                {
+                    foundItem = true;
+                    break;
+                }
+            }
+
+            if (!foundItem)
+            {
+                MimeMapping mimeMappingElement = (MimeMapping) webXml.getDescriptorType().
+                    getTagByName(WebXmlType.MIME_MAPPING).create();
+
+                mimeMappingElement.setExtension(targetMimeMapping.getExtension());
+                mimeMappingElement.setMimeType(targetMimeMapping.getMimeType());
+
+                this.webXml.addElement(mimeMappingElement.getTag(), mimeMappingElement,
+                    this.webXml.getRootElement());
+                this.webXml.addTag(mimeMappingElement);
+            }
+        }
+
+        getLogger().debug("Merged " + count + " mime mapping definition"
+            + (count != 1 ? "s " : " ") + "into the descriptor",
+            this.getClass().getName());
+    }
 }

Modified: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergeStrategyMergerTest.java
===================================================================
--- core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergeStrategyMergerTest.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergeStrategyMergerTest.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -1,421 +1,421  <at>  <at> 
-/*
- * ========================================================================
- *
- * Copyright 2003 The Apache Software Foundation. Code from this file 
- * was originally imported from the Jakarta Cactus project.
- *
- * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ========================================================================
- */
-package org.codehaus.cargo.module.webapp.merge;
-
-import java.io.ByteArrayInputStream;
-
-import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
-import org.codehaus.cargo.module.merge.DescriptorMergerByTag;
-import org.codehaus.cargo.module.merge.tagstrategy.NodeMergeStrategy;
-import org.codehaus.cargo.module.webapp.WebXml;
-import org.codehaus.cargo.module.webapp.WebXmlIo;
-import org.codehaus.cargo.module.webapp.WebXmlType;
-import org.codehaus.cargo.module.webapp.WebXmlUtils;
-import org.jdom.Element;
-
-/**
- * Unit tests for { <at> link WebXmlMerger} with merge strategies.
- * 
- *  <at> version $Id: WebXmlMergerTest.java 2760 2011-03-19 17:33:47Z alitokmen $
- */
-public final class WebXmlContextParamMergeStrategyMergerTest extends AbstractDocumentBuilderTest
-{
-    /**
-     * Creates WebXml with given context parameter.
-     * 
-     *  <at> param name parameter name
-     *  <at> param value parameter value
-     *  <at> return corresponding WebXml object
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    private WebXml getWebXml(String name, String value) throws Exception
-    {
-        String xml = "<web-app>" 
-            + "  <context-param>" 
-            + "    <param-name>" + name + "</param-name>" 
-            + "    <param-value>" + value + "</param-value>" 
-            + "  </context-param>" 
-            + "</web-app>";
-        return WebXmlIo.parseWebXml(new ByteArrayInputStream(xml.getBytes("UTF-8")), null);
-    }
-
-    /**
-     * Creates JDOM element with given context parameter.
-     * 
-     *  <at> param name parameter name
-     *  <at> param value parameter value
-     *  <at> return JDOM object
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    private Element getContextParamElement(String name, String value) throws Exception
-    {
-        String xml = "<context-param>" 
-            + "  <param-name>" + name + "</param-name>"
-            + "  <param-value>" + value + "</param-value>" 
-            + "</context-param>";
-        return WebXmlIo.parseWebXml(new ByteArrayInputStream(xml.getBytes("UTF-8")), null)
-                .getRootElement();
-    }
-
-    /**
-     * Retrieves parameter value from "context-param" element.
-     * 
-     *  <at> param param element to inspect
-     *  <at> return parameter value, null for null input
-     */
-    private String getContextParamValue(Element param)
-    {
-        if (param == null)
-        {
-            return null;
-        }
-        return param.getChild(WebXmlType.PARAM_VALUE).getText();
-    }
-
-    /**
-     * Tests { <at> link DescriptorMergerByTag#PRESERVE} merge strategy. This test
-     * assumes that only initial descriptor have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInLeftWithPreserveStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("other", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.PRESERVE);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests { <at> link DescriptorMergerByTag#PRESERVE} merge strategy. This test
-     * assumes that only overlay descriptor have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInRightWithPreserveStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("other", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.PRESERVE);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value2",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests { <at> link DescriptorMergerByTag#PRESERVE} merge strategy. This test
-     * assumes that both descriptors have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInBothWithPreserveStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.PRESERVE);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests { <at> link DescriptorMergerByTag#OVERWRITE} merge strategy. This test
-     * assumes that only initial descriptor have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInLeftWithOverwiteStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("other", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.OVERWRITE);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests { <at> link DescriptorMergerByTag#OVERWRITE} merge strategy. This test
-     * assumes that only overlay descriptor have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInRightWithOverwiteStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("other", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.OVERWRITE);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value2",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests { <at> link DescriptorMergerByTag#OVERWRITE} merge strategy. This test
-     * assumes that both descriptors have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInBothWithOverwiteStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.OVERWRITE);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value2",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests { <at> link DescriptorMergerByTag#IGNORE} merge strategy. This test
-     * assumes that only initial descriptor have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInLeftWithIgnoreStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("other", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.IGNORE);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests { <at> link DescriptorMergerByTag#IGNORE} merge strategy. This test
-     * assumes that only overlay descriptor have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInRightWithIgnoreStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("other", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.IGNORE);
-        merger.merge(mergeWebXml);
-        assertFalse(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-    }
-
-    /**
-     * Tests { <at> link DescriptorMergerByTag#IGNORE} merge strategy. This test
-     * assumes that both descriptors have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInBothWithIgnoreStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.IGNORE);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests NodeMerge merge strategy. This test assumes that only initial
-     * descriptor have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInLeftWithNodeMergeStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("other", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        Element format = getContextParamElement("$left:param-name",
-                "$left:param-value $right:param-value");
-        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests NodeMerge merge strategy. This test assumes that only overlay
-     * descriptor have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInRightWithNodeMergeStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("other", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        Element format = getContextParamElement("$left:param-name",
-                "$left:param-value $right:param-value");
-        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value2",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests NodeMerge merge strategy. This test assumes that both descriptors
-     * have the parameter under test.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInBothWithNodeMergeStrategy() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        Element format = getContextParamElement("$left:param-name",
-                "$left:param-value $right:param-value");
-        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1 value2",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests NodeMerge merge strategy. In this test merge descriptor uses left
-     * value only.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInBothWithNodeMergeStrategyWithLeftValueOnly() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        Element format = getContextParamElement("$left:param-name", "$left:param-value");
-        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests NodeMerge merge strategy. In this test merge descriptor uses right
-     * value only.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInBothWithNodeMergeStrategyWithRightValueOnly() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        Element format = getContextParamElement("$left:param-name", "$right:param-value");
-        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value2",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests NodeMerge merge strategy. In this test merge descriptor contains
-     * static text in addition to dynamic values.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInBothWithNodeMergeStrategyWithMixedContent() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        Element format = getContextParamElement("$left:param-name",
-                "111 $left:param-value 222 $right:param-value 333");
-        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("111 value1 222 value2 333",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests NodeMerge merge strategy. In this test one of the values to be
-     * replaced contains dollar sign.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInBothWithNodeMergeStrategyWithDollarSignInValue() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("param", "${value2}");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        Element format = getContextParamElement("$left:param-name",
-                "$left:param-value $right:param-value");
-        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1 ${value2}",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-    /**
-     * Tests NodeMerge merge strategy. In this test target pattern contains
-     * comma as a delimiter.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeInBothWithNodeMergeStrategyWithCommaInPattern() throws Exception
-    {
-        WebXml srcWebXml = getWebXml("param", "value1");
-        WebXml mergeWebXml = getWebXml("param", "value2");
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        Element format = getContextParamElement("$left:param-name",
-                "$left:param-value,$right:param-value");
-        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
-        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-        assertEquals("value1,value2",
-                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
-    }
-
-}
+/*
+ * ========================================================================
+ *
+ * Copyright 2003 The Apache Software Foundation. Code from this file 
+ * was originally imported from the Jakarta Cactus project.
+ *
+ * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ========================================================================
+ */
+package org.codehaus.cargo.module.webapp.merge;
+
+import java.io.ByteArrayInputStream;
+
+import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
+import org.codehaus.cargo.module.merge.DescriptorMergerByTag;
+import org.codehaus.cargo.module.merge.tagstrategy.NodeMergeStrategy;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlIo;
+import org.codehaus.cargo.module.webapp.WebXmlType;
+import org.codehaus.cargo.module.webapp.WebXmlUtils;
+import org.jdom.Element;
+
+/**
+ * Unit tests for { <at> link WebXmlMerger} with merge strategies.
+ * 
+ *  <at> version $Id$
+ */
+public final class WebXmlContextParamMergeStrategyMergerTest extends AbstractDocumentBuilderTest
+{
+    /**
+     * Creates WebXml with given context parameter.
+     * 
+     *  <at> param name parameter name
+     *  <at> param value parameter value
+     *  <at> return corresponding WebXml object
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    private WebXml getWebXml(String name, String value) throws Exception
+    {
+        String xml = "<web-app>" 
+            + "  <context-param>" 
+            + "    <param-name>" + name + "</param-name>" 
+            + "    <param-value>" + value + "</param-value>" 
+            + "  </context-param>" 
+            + "</web-app>";
+        return WebXmlIo.parseWebXml(new ByteArrayInputStream(xml.getBytes("UTF-8")), null);
+    }
+
+    /**
+     * Creates JDOM element with given context parameter.
+     * 
+     *  <at> param name parameter name
+     *  <at> param value parameter value
+     *  <at> return JDOM object
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    private Element getContextParamElement(String name, String value) throws Exception
+    {
+        String xml = "<context-param>" 
+            + "  <param-name>" + name + "</param-name>"
+            + "  <param-value>" + value + "</param-value>" 
+            + "</context-param>";
+        return WebXmlIo.parseWebXml(new ByteArrayInputStream(xml.getBytes("UTF-8")), null)
+                .getRootElement();
+    }
+
+    /**
+     * Retrieves parameter value from "context-param" element.
+     * 
+     *  <at> param param element to inspect
+     *  <at> return parameter value, null for null input
+     */
+    private String getContextParamValue(Element param)
+    {
+        if (param == null)
+        {
+            return null;
+        }
+        return param.getChild(WebXmlType.PARAM_VALUE).getText();
+    }
+
+    /**
+     * Tests { <at> link DescriptorMergerByTag#PRESERVE} merge strategy. This test
+     * assumes that only initial descriptor have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInLeftWithPreserveStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("other", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.PRESERVE);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests { <at> link DescriptorMergerByTag#PRESERVE} merge strategy. This test
+     * assumes that only overlay descriptor have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInRightWithPreserveStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("other", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.PRESERVE);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value2",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests { <at> link DescriptorMergerByTag#PRESERVE} merge strategy. This test
+     * assumes that both descriptors have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInBothWithPreserveStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.PRESERVE);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests { <at> link DescriptorMergerByTag#OVERWRITE} merge strategy. This test
+     * assumes that only initial descriptor have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInLeftWithOverwiteStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("other", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.OVERWRITE);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests { <at> link DescriptorMergerByTag#OVERWRITE} merge strategy. This test
+     * assumes that only overlay descriptor have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInRightWithOverwiteStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("other", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.OVERWRITE);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value2",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests { <at> link DescriptorMergerByTag#OVERWRITE} merge strategy. This test
+     * assumes that both descriptors have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInBothWithOverwiteStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.OVERWRITE);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value2",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests { <at> link DescriptorMergerByTag#IGNORE} merge strategy. This test
+     * assumes that only initial descriptor have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInLeftWithIgnoreStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("other", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.IGNORE);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests { <at> link DescriptorMergerByTag#IGNORE} merge strategy. This test
+     * assumes that only overlay descriptor have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInRightWithIgnoreStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("other", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.IGNORE);
+        merger.merge(mergeWebXml);
+        assertFalse(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+    }
+
+    /**
+     * Tests { <at> link DescriptorMergerByTag#IGNORE} merge strategy. This test
+     * assumes that both descriptors have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInBothWithIgnoreStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, DescriptorMergerByTag.IGNORE);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests NodeMerge merge strategy. This test assumes that only initial
+     * descriptor have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInLeftWithNodeMergeStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("other", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        Element format = getContextParamElement("$left:param-name",
+                "$left:param-value $right:param-value");
+        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests NodeMerge merge strategy. This test assumes that only overlay
+     * descriptor have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInRightWithNodeMergeStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("other", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        Element format = getContextParamElement("$left:param-name",
+                "$left:param-value $right:param-value");
+        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value2",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests NodeMerge merge strategy. This test assumes that both descriptors
+     * have the parameter under test.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInBothWithNodeMergeStrategy() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        Element format = getContextParamElement("$left:param-name",
+                "$left:param-value $right:param-value");
+        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1 value2",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests NodeMerge merge strategy. In this test merge descriptor uses left
+     * value only.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInBothWithNodeMergeStrategyWithLeftValueOnly() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        Element format = getContextParamElement("$left:param-name", "$left:param-value");
+        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests NodeMerge merge strategy. In this test merge descriptor uses right
+     * value only.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInBothWithNodeMergeStrategyWithRightValueOnly() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        Element format = getContextParamElement("$left:param-name", "$right:param-value");
+        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value2",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests NodeMerge merge strategy. In this test merge descriptor contains
+     * static text in addition to dynamic values.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInBothWithNodeMergeStrategyWithMixedContent() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        Element format = getContextParamElement("$left:param-name",
+                "111 $left:param-value 222 $right:param-value 333");
+        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("111 value1 222 value2 333",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests NodeMerge merge strategy. In this test one of the values to be
+     * replaced contains dollar sign.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInBothWithNodeMergeStrategyWithDollarSignInValue() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("param", "${value2}");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        Element format = getContextParamElement("$left:param-name",
+                "$left:param-value $right:param-value");
+        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1 ${value2}",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+    /**
+     * Tests NodeMerge merge strategy. In this test target pattern contains
+     * comma as a delimiter.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeInBothWithNodeMergeStrategyWithCommaInPattern() throws Exception
+    {
+        WebXml srcWebXml = getWebXml("param", "value1");
+        WebXml mergeWebXml = getWebXml("param", "value2");
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        Element format = getContextParamElement("$left:param-name",
+                "$left:param-value,$right:param-value");
+        NodeMergeStrategy strategy = new NodeMergeStrategy(null, format);
+        merger.setMergeStrategy(WebXmlType.CONTEXT_PARAM, strategy);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+        assertEquals("value1,value2",
+                getContextParamValue(WebXmlUtils.getContextParam(srcWebXml, "param")));
+    }
+
+}


Property changes on: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergeStrategyMergerTest.java
___________________________________________________________________
Added: svn:keywords
   + "Author Date Id Revision"
Added: svn:eol-style
   + native

Modified: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergerTest.java
===================================================================
--- core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergerTest.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergerTest.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -1,116 +1,116  <at>  <at> 
-/*
- * ========================================================================
- *
- * Copyright 2003 The Apache Software Foundation. Code from this file 
- * was originally imported from the Jakarta Cactus project.
- *
- * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ========================================================================
- */
-package org.codehaus.cargo.module.webapp.merge;
-
-import java.io.ByteArrayInputStream;
-
-import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
-import org.codehaus.cargo.module.webapp.WebXml;
-import org.codehaus.cargo.module.webapp.WebXmlIo;
-import org.codehaus.cargo.module.webapp.WebXmlUtils;
-
-/**
- * Unit tests for { <at> link WebXmlMerger}.
- * 
- *  <at> version $Id: WebXmlMergerTest.java 2760 2011-03-19 17:33:47Z alitokmen $
- */
-public final class WebXmlContextParamMergerTest extends AbstractDocumentBuilderTest
-{
-    /**
-     * Tests whether a single context param is correctly merged into an empty descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneContextParamIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <context-param>"
-            + "    <param-name>param</param-name>"
-            + "    <param-value>value</param-value>"
-            + "  </context-param>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-    }
-
-    /**
-     * Tests whether a single context param is correctly merged into a descriptor that already
-     * contains another context param.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneContextParamIntoDocumentWithAnotherContextParam() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <context-param>"
-            + "    <param-name>param1</param-name>"
-            + "    <param-value>value1</param-value>"
-            + "  </context-param>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <context-param>"
-            + "    <param-name>param2</param-name>"
-            + "    <param-value>value2</param-value>"
-            + "  </context-param>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param1"));
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param2"));
-    }
-
-    /**
-     * Tests whether a single context param in the merge descriptor is ignored because a context
-     * param with the same name already exists in the source descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneContextParamIntoDocumentWithSameContextParam() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <context-param>"
-            + "    <param-name>param</param-name>"
-            + "    <param-value>value</param-value>"
-            + "  </context-param>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.merge(mergeWebXml);
-        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
-    }
-
-}
+/*
+ * ========================================================================
+ *
+ * Copyright 2003 The Apache Software Foundation. Code from this file 
+ * was originally imported from the Jakarta Cactus project.
+ *
+ * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ========================================================================
+ */
+package org.codehaus.cargo.module.webapp.merge;
+
+import java.io.ByteArrayInputStream;
+
+import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlIo;
+import org.codehaus.cargo.module.webapp.WebXmlUtils;
+
+/**
+ * Unit tests for { <at> link WebXmlMerger}.
+ * 
+ *  <at> version $Id$
+ */
+public final class WebXmlContextParamMergerTest extends AbstractDocumentBuilderTest
+{
+    /**
+     * Tests whether a single context param is correctly merged into an empty descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneContextParamIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <context-param>"
+            + "    <param-name>param</param-name>"
+            + "    <param-value>value</param-value>"
+            + "  </context-param>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+    }
+
+    /**
+     * Tests whether a single context param is correctly merged into a descriptor that already
+     * contains another context param.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneContextParamIntoDocumentWithAnotherContextParam() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <context-param>"
+            + "    <param-name>param1</param-name>"
+            + "    <param-value>value1</param-value>"
+            + "  </context-param>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <context-param>"
+            + "    <param-name>param2</param-name>"
+            + "    <param-value>value2</param-value>"
+            + "  </context-param>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param1"));
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param2"));
+    }
+
+    /**
+     * Tests whether a single context param in the merge descriptor is ignored because a context
+     * param with the same name already exists in the source descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneContextParamIntoDocumentWithSameContextParam() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <context-param>"
+            + "    <param-name>param</param-name>"
+            + "    <param-value>value</param-value>"
+            + "  </context-param>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.merge(mergeWebXml);
+        assertTrue(WebXmlUtils.hasContextParam(srcWebXml, "param"));
+    }
+
+}


Property changes on: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlContextParamMergerTest.java
___________________________________________________________________
Added: svn:keywords
   + "Author Date Id Revision"
Added: svn:eol-style
   + native

Modified: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlEjbRefMergerTest.java
===================================================================
--- core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlEjbRefMergerTest.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlEjbRefMergerTest.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -1,68 +1,68  <at>  <at> 
-/*
- * ========================================================================
- *
- * Copyright 2003 The Apache Software Foundation. Code from this file 
- * was originally imported from the Jakarta Cactus project.
- *
- * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ========================================================================
- */
-package org.codehaus.cargo.module.webapp.merge;
-
-import java.io.ByteArrayInputStream;
-import java.util.List;
-
-import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
-import org.codehaus.cargo.module.webapp.WebXml;
-import org.codehaus.cargo.module.webapp.WebXmlIo;
-import org.codehaus.cargo.module.webapp.WebXmlType;
-import org.jdom.Element;
-
-/**
- * Unit tests for { <at> link WebXmlMerger}.
- * 
- *  <at> version $Id: WebXmlMergerTest.java 2760 2011-03-19 17:33:47Z alitokmen $
- */
-public final class WebXmlEjbRefMergerTest extends AbstractDocumentBuilderTest
-{
-    /**
-     * Tests whether a single EJB reference is correctly inserted into an empty descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneEjbRefIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <ejb-ref>"
-            + "    <ejb-ref-name>ejbref1</ejb-ref-name>"
-            + "    <ejb-ref-type>ejbref1.type</ejb-ref-type>"
-            + "    <home>ejbref1.homeInterface</home>"
-            + "    <remote>ejbref1.remoteInterface</remote>"
-            + "  </ejb-ref>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.merge(mergeWebXml);
-        List<Element> ejbRefs = srcWebXml.getElements(WebXmlType.EJB_REF);
-        assertEquals(1, ejbRefs.size());
-    }
-
-}
+/*
+ * ========================================================================
+ *
+ * Copyright 2003 The Apache Software Foundation. Code from this file 
+ * was originally imported from the Jakarta Cactus project.
+ *
+ * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ========================================================================
+ */
+package org.codehaus.cargo.module.webapp.merge;
+
+import java.io.ByteArrayInputStream;
+import java.util.List;
+
+import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlIo;
+import org.codehaus.cargo.module.webapp.WebXmlType;
+import org.jdom.Element;
+
+/**
+ * Unit tests for { <at> link WebXmlMerger}.
+ * 
+ *  <at> version $Id$
+ */
+public final class WebXmlEjbRefMergerTest extends AbstractDocumentBuilderTest
+{
+    /**
+     * Tests whether a single EJB reference is correctly inserted into an empty descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneEjbRefIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <ejb-ref>"
+            + "    <ejb-ref-name>ejbref1</ejb-ref-name>"
+            + "    <ejb-ref-type>ejbref1.type</ejb-ref-type>"
+            + "    <home>ejbref1.homeInterface</home>"
+            + "    <remote>ejbref1.remoteInterface</remote>"
+            + "  </ejb-ref>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.merge(mergeWebXml);
+        List<Element> ejbRefs = srcWebXml.getElements(WebXmlType.EJB_REF);
+        assertEquals(1, ejbRefs.size());
+    }
+
+}


Property changes on: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlEjbRefMergerTest.java
___________________________________________________________________
Added: svn:keywords
   + "Author Date Id Revision"
Added: svn:eol-style
   + native

Modified: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlFilterMergerTest.java
===================================================================
--- core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlFilterMergerTest.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlFilterMergerTest.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -1,302 +1,341  <at>  <at> 
-/*
- * ========================================================================
- *
- * Copyright 2003 The Apache Software Foundation. Code from this file 
- * was originally imported from the Jakarta Cactus project.
- *
- * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ========================================================================
- */
-package org.codehaus.cargo.module.webapp.merge;
-
-import java.io.ByteArrayInputStream;
-import java.util.List;
-
-import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
-import org.codehaus.cargo.module.webapp.WebXml;
-import org.codehaus.cargo.module.webapp.WebXmlIo;
-import org.codehaus.cargo.module.webapp.WebXmlUtils;
-
-/**
- * Unit tests for { <at> link WebXmlMerger}.
- * 
- *  <at> version $Id: WebXmlMergerTest.java 2760 2011-03-19 17:33:47Z alitokmen $
- */
-public final class WebXmlFilterMergerTest extends AbstractDocumentBuilderTest
-{
-    /**
-     * Tests whether a single filter is correctly merged into an empty descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneFilterIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <filter-class>fclass1</filter-class>"
-            + "  </filter>"
-            + "</web-app>";
-
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-
-        // WebXml mergeWebXml = new WebXml(mergeDoc);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeFilters(mergeWebXml);
-        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
-    }
-
-    /**
-     * Tests whether a single filter is correctly merged into a descriptor that already contains
-     * another filter.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneFilterIntoDocumentWithAnotherFilter() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <filter-class>fclass1</filter-class>"
-            + "  </filter>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f2</filter-name>"
-            + "    <filter-class>fclass2</filter-class>"
-            + "  </filter>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeFilters(mergeWebXml);
-        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
-        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f2"));
-    }
-
-    /**
-     * Tests whether a single filter in the merge descriptor is ignored because a filter with the
-     * same name already exists in the source descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneFilterIntoDocumentWithSameFilter() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <filter-class>fclass1</filter-class>"
-            + "  </filter>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        WebXml mergeWebXml = WebXmlIo
-            .parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeFilters(mergeWebXml);
-        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
-    }
-
-    /**
-     * Tests whether a single filter is correctly merged into a descriptor that already contains
-     * multiple other filter definitions.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneFilterIntoDocumentWithMultipleFilters() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <filter-class>fclass1</filter-class>"
-            + "  </filter>"
-            + "  <filter>"
-            + "    <filter-name>f2</filter-name>"
-            + "    <filter-class>fclass2</filter-class>"
-            + "  </filter>"
-            + "  <filter>"
-            + "    <filter-name>f3</filter-name>"
-            + "    <filter-class>fclass3</filter-class>"
-            + "  </filter>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f4</filter-name>"
-            + "    <filter-class>fclass4</filter-class>"
-            + "  </filter>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeFilters(mergeWebXml);
-        List<String> filterNames = WebXmlUtils.getFilterNames(srcWebXml);
-        assertEquals(4, filterNames.size());
-        assertEquals("f1", filterNames.get(0));
-        assertEquals("f2", filterNames.get(1));
-        assertEquals("f3", filterNames.get(2));
-        assertEquals("f4", filterNames.get(3));
-    }
-
-    /**
-     * Tests whether multiple filters are correctly merged into an empty descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeMultipleFiltersIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <filter-class>fclass1</filter-class>"
-            + "  </filter>"
-            + "  <filter>"
-            + "    <filter-name>f2</filter-name>"
-            + "    <filter-class>fclass2</filter-class>"
-            + "  </filter>"
-            + "  <filter>"
-            + "    <filter-name>f3</filter-name>"
-            + "    <filter-class>fclass3</filter-class>"
-            + "  </filter>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeFilters(mergeWebXml);
-        List<String> filterNames = WebXmlUtils.getFilterNames(srcWebXml);
-        assertEquals(3, filterNames.size());
-        assertEquals("f1", filterNames.get(0));
-        assertEquals("f2", filterNames.get(1));
-        assertEquals("f3", filterNames.get(2));
-    }
-
-    /**
-     * Tests whether a filter with one mapping is correctly merged into an empty descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneFilterWithOneMappingIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <filter-class>fclass1</filter-class>"
-            + "  </filter>"
-            + "  <filter-mapping>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <url-pattern>/f1mapping1</url-pattern>"
-            + "  </filter-mapping>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeFilters(mergeWebXml);
-        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
-        List<String> filterMappings = WebXmlUtils.getFilterMappings(srcWebXml, "f1");
-        assertEquals(1, filterMappings.size());
-        assertEquals("/f1mapping1", filterMappings.get(0));
-    }
-
-    /**
-     * Tests wether a single filter with multiple mappings is correctly merged into an empty
-     * descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneFilterWithMultipleMappingsIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <filter-class>fclass1</filter-class>"
-            + "  </filter>"
-            + "  <filter-mapping>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <url-pattern>/f1mapping1</url-pattern>"
-            + "  </filter-mapping>"
-            + "  <filter-mapping>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <url-pattern>/f1mapping2</url-pattern>"
-            + "  </filter-mapping>"
-            + "  <filter-mapping>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <url-pattern>/f1mapping3</url-pattern>"
-            + "  </filter-mapping>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeFilters(mergeWebXml);
-        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
-        List<String> filterMappings = WebXmlUtils.getFilterMappings(srcWebXml, "f1");
-        assertEquals(3, filterMappings.size());
-        assertEquals("/f1mapping1", filterMappings.get(0));
-        assertEquals("/f1mapping2", filterMappings.get(1));
-        assertEquals("/f1mapping3", filterMappings.get(2));
-    }
-
-    /**
-     * Tests whether a filter initialization parameter is merged into the descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneFilterIntoDocumentWithSameFilterAndParam() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <filter-class>fclass1</filter-class>"
-            + "  </filter>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <filter>"
-            + "    <filter-name>f1</filter-name>"
-            + "    <filter-class>fclass1</filter-class>"
-            + "    <init-param>"
-            + "      <param-name>f1param1</param-name>"
-            + "      <param-value>f1param1value</param-value>"
-            + "    </init-param>"
-            + "  </filter>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeFilters(mergeWebXml);
-        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
-        List<String> initParams = WebXmlUtils.getFilterInitParamNames(srcWebXml, "f1");
-        assertEquals(1, initParams.size());
-        assertEquals("f1param1", initParams.get(0));
-    }
-
-}
+/*
+ * ========================================================================
+ *
+ * Copyright 2003 The Apache Software Foundation. Code from this file 
+ * was originally imported from the Jakarta Cactus project.
+ *
+ * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ========================================================================
+ */
+package org.codehaus.cargo.module.webapp.merge;
+
+import java.io.ByteArrayInputStream;
+import java.util.List;
+
+import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlIo;
+import org.codehaus.cargo.module.webapp.WebXmlUtils;
+
+/**
+ * Unit tests for { <at> link WebXmlMerger}.
+ * 
+ *  <at> version $Id$
+ */
+public final class WebXmlFilterMergerTest extends AbstractDocumentBuilderTest
+{
+    /**
+     * Tests whether a single filter is correctly merged into an empty descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneFilterIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "</web-app>";
+
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+
+        // WebXml mergeWebXml = new WebXml(mergeDoc);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeFilters(mergeWebXml);
+        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
+    }
+
+    /**
+     * Tests whether a single filter is correctly merged into a descriptor that already contains
+     * another filter.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneFilterIntoDocumentWithAnotherFilter() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f2</filter-name>"
+            + "    <filter-class>fclass2</filter-class>"
+            + "  </filter>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeFilters(mergeWebXml);
+        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
+        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f2"));
+    }
+
+    /**
+     * Tests whether a single filter in the merge descriptor is ignored because a filter with the
+     * same name already exists in the source descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneFilterIntoDocumentWithSameFilter() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        WebXml mergeWebXml = WebXmlIo
+            .parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeFilters(mergeWebXml);
+        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
+    }
+
+    /**
+     * Tests whether a single filter is correctly merged into a descriptor that already contains
+     * multiple other filter definitions.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneFilterIntoDocumentWithMultipleFilters() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "  <filter>"
+            + "    <filter-name>f2</filter-name>"
+            + "    <filter-class>fclass2</filter-class>"
+            + "  </filter>"
+            + "  <filter>"
+            + "    <filter-name>f3</filter-name>"
+            + "    <filter-class>fclass3</filter-class>"
+            + "  </filter>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f4</filter-name>"
+            + "    <filter-class>fclass4</filter-class>"
+            + "  </filter>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeFilters(mergeWebXml);
+        List<String> filterNames = WebXmlUtils.getFilterNames(srcWebXml);
+        assertEquals(4, filterNames.size());
+        assertEquals("f1", filterNames.get(0));
+        assertEquals("f2", filterNames.get(1));
+        assertEquals("f3", filterNames.get(2));
+        assertEquals("f4", filterNames.get(3));
+    }
+
+    /**
+     * Tests whether multiple filters are correctly merged into an empty descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeMultipleFiltersIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "  <filter>"
+            + "    <filter-name>f2</filter-name>"
+            + "    <filter-class>fclass2</filter-class>"
+            + "  </filter>"
+            + "  <filter>"
+            + "    <filter-name>f3</filter-name>"
+            + "    <filter-class>fclass3</filter-class>"
+            + "  </filter>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeFilters(mergeWebXml);
+        List<String> filterNames = WebXmlUtils.getFilterNames(srcWebXml);
+        assertEquals(3, filterNames.size());
+        assertEquals("f1", filterNames.get(0));
+        assertEquals("f2", filterNames.get(1));
+        assertEquals("f3", filterNames.get(2));
+    }
+
+    /**
+     * Tests whether a filter with one mapping is correctly merged into an empty descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneFilterWithOneMappingIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "  <filter-mapping>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <url-pattern>/f1mapping1</url-pattern>"
+            + "  </filter-mapping>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeFilters(mergeWebXml);
+        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
+        List<String> filterMappings = WebXmlUtils.getFilterMappings(srcWebXml, "f1");
+        assertEquals(1, filterMappings.size());
+        assertEquals("/f1mapping1", filterMappings.get(0));
+    }
+
+    /**
+     * Tests whether a single filter with multiple mappings is correctly merged into an empty
+     * descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneFilterWithMultipleMappingsIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "  <filter-mapping>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <url-pattern>/f1mapping1</url-pattern>"
+            + "  </filter-mapping>"
+            + "  <filter-mapping>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <url-pattern>/f1mapping2</url-pattern>"
+            + "  </filter-mapping>"
+            + "  <filter-mapping>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <url-pattern>/f1mapping3</url-pattern>"
+            + "  </filter-mapping>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeFilters(mergeWebXml);
+        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
+        List<String> filterMappings = WebXmlUtils.getFilterMappings(srcWebXml, "f1");
+        assertEquals(3, filterMappings.size());
+        assertEquals("/f1mapping1", filterMappings.get(0));
+        assertEquals("/f1mapping2", filterMappings.get(1));
+        assertEquals("/f1mapping3", filterMappings.get(2));
+    }
+
+    /**
+     * Tests whether the same filter in two different files is mapped correctly (i.e., once).
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeSameFilterInTwoDocuments() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "  <filter-mapping>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <url-pattern>/f1mapping1</url-pattern>"
+            + "  </filter-mapping>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "  <filter-mapping>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <url-pattern>/f1mapping1</url-pattern>"
+            + "  </filter-mapping>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeFilters(mergeWebXml);
+        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
+        List<String> filterMappings = WebXmlUtils.getFilterMappings(srcWebXml, "f1");
+        assertEquals(1, filterMappings.size());
+        assertEquals("/f1mapping1", filterMappings.get(0));
+    }
+
+    /**
+     * Tests whether a filter initialization parameter is merged into the descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneFilterIntoDocumentWithSameFilterAndParam() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "  </filter>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <filter>"
+            + "    <filter-name>f1</filter-name>"
+            + "    <filter-class>fclass1</filter-class>"
+            + "    <init-param>"
+            + "      <param-name>f1param1</param-name>"
+            + "      <param-value>f1param1value</param-value>"
+            + "    </init-param>"
+            + "  </filter>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeFilters(mergeWebXml);
+        assertTrue(WebXmlUtils.hasFilter(srcWebXml, "f1"));
+        List<String> initParams = WebXmlUtils.getFilterInitParamNames(srcWebXml, "f1");
+        assertEquals(1, initParams.size());
+        assertEquals("f1param1", initParams.get(0));
+    }
+
+}


Property changes on: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlFilterMergerTest.java
___________________________________________________________________
Added: svn:keywords
   + "Author Date Id Revision"
Added: svn:eol-style
   + native

Modified: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlListenerMergerTest.java
===================================================================
--- core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlListenerMergerTest.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlListenerMergerTest.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -1,110 +1,110  <at>  <at> 
-/*
- * ========================================================================
- *
- * Copyright 2003 The Apache Software Foundation. Code from this file 
- * was originally imported from the Jakarta Cactus project.
- *
- * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ========================================================================
- */
-package org.codehaus.cargo.module.webapp.merge;
-
-import java.io.ByteArrayInputStream;
-import java.util.List;
-
-import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
-import org.codehaus.cargo.module.webapp.WebXml;
-import org.codehaus.cargo.module.webapp.WebXmlIo;
-import org.codehaus.cargo.module.webapp.elements.Listener;
-import org.jdom.Element;
-
-/**
- * Unit tests for { <at> link WebXmlMerger}.
- * 
- *  <at> version $Id: WebXmlMergerTest.java 2760 2011-03-19 17:33:47Z alitokmen $
- */
-public final class WebXmlListenerMergerTest extends AbstractDocumentBuilderTest
-{
-    /**
-     * Test for CARGO-409 that merging listeners does not mess with the order.
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeListeners() throws Exception
-    {
-        String file1 = "<web-app>\r\n"
-            + "   <context-param>\r\n"
-            + "       <param-name>file1-c1</param-name>\r\n"
-            + "       <param-value>file1-v1</param-value>\r\n"
-            + "   </context-param>\r\n"
-            + "\r\n"
-            + "\r\n"
-            + "    <listener>\r\n"
-            + "      <listener-class>file1-lc1</listener-class>\r\n"
-            + "    </listener>\r\n"
-            + "\r\n"
-            + "    <listener>\r\n"
-            + "      <listener-class>file1-lc2</listener-class>\r\n"
-            + "    </listener>\r\n"
-            + "\r\n"
-            + "\r\n"
-            + "    <servlet>\r\n"
-            + "       <servlet-name>file1-S1</servlet-name>\r\n"
-            + "       <servlet-class>file1-C2</servlet-class>\r\n"
-            + "       <load-on-startup>file1-los</load-on-startup>\r\n"
-            + "   </servlet>\r\n"
-            + "</web-app>\r\n";
-
-        String file2 = "<web-app>\r\n"
-            + "   <context-param>\r\n"
-            + "       <param-name>file2-c1</param-name>\r\n"
-            + "       <param-value>file2-v1</param-value>\r\n"
-            + "   </context-param>\r\n"
-            + "\r\n"
-            + "\r\n"
-            + "    <listener>\r\n"
-            + "      <listener-class>file2-lc1</listener-class>\r\n"
-            + "    </listener>\r\n"
-            + "\r\n"
-            + "    <listener>\r\n"
-            + "      <listener-class>file2-lc2</listener-class>\r\n"
-            + "    </listener>\r\n"
-            + "\r\n"
-            + "\r\n"
-            + "    <servlet>\r\n"
-            + "       <servlet-name>file2-S1</servlet-name>\r\n"
-            + "       <servlet-class>file2-C2</servlet-class>\r\n"
-            + "       <load-on-startup>file2-los</load-on-startup>\r\n"
-            + "   </servlet>\r\n"
-            + "</web-app>\r\n"
-            + "";
-
-        WebXml file1WebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(file1.getBytes("UTF-8")), null);
-        WebXml file2WebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(file2.getBytes("UTF-8")), null);
-
-        WebXmlMerger merger = new WebXmlMerger(file1WebXml);
-        merger.merge(file2WebXml);
-
-        List<Element> ejbRefs = file1WebXml.getElements("listener");
-        assertEquals(4, ejbRefs.size());
-        assertEquals(((Listener) ejbRefs.get(0)).getListenerClass(), "file1-lc1");
-        assertEquals(((Listener) ejbRefs.get(1)).getListenerClass(), "file1-lc2");
-        assertEquals(((Listener) ejbRefs.get(2)).getListenerClass(), "file2-lc1");
-        assertEquals(((Listener) ejbRefs.get(3)).getListenerClass(), "file2-lc2");
-    }
-
-}
+/*
+ * ========================================================================
+ *
+ * Copyright 2003 The Apache Software Foundation. Code from this file 
+ * was originally imported from the Jakarta Cactus project.
+ *
+ * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ========================================================================
+ */
+package org.codehaus.cargo.module.webapp.merge;
+
+import java.io.ByteArrayInputStream;
+import java.util.List;
+
+import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlIo;
+import org.codehaus.cargo.module.webapp.elements.Listener;
+import org.jdom.Element;
+
+/**
+ * Unit tests for { <at> link WebXmlMerger}.
+ * 
+ *  <at> version $Id$
+ */
+public final class WebXmlListenerMergerTest extends AbstractDocumentBuilderTest
+{
+    /**
+     * Test for CARGO-409 that merging listeners does not mess with the order.
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeListeners() throws Exception
+    {
+        String file1 = "<web-app>\r\n"
+            + "   <context-param>\r\n"
+            + "       <param-name>file1-c1</param-name>\r\n"
+            + "       <param-value>file1-v1</param-value>\r\n"
+            + "   </context-param>\r\n"
+            + "\r\n"
+            + "\r\n"
+            + "    <listener>\r\n"
+            + "      <listener-class>file1-lc1</listener-class>\r\n"
+            + "    </listener>\r\n"
+            + "\r\n"
+            + "    <listener>\r\n"
+            + "      <listener-class>file1-lc2</listener-class>\r\n"
+            + "    </listener>\r\n"
+            + "\r\n"
+            + "\r\n"
+            + "    <servlet>\r\n"
+            + "       <servlet-name>file1-S1</servlet-name>\r\n"
+            + "       <servlet-class>file1-C2</servlet-class>\r\n"
+            + "       <load-on-startup>file1-los</load-on-startup>\r\n"
+            + "   </servlet>\r\n"
+            + "</web-app>\r\n";
+
+        String file2 = "<web-app>\r\n"
+            + "   <context-param>\r\n"
+            + "       <param-name>file2-c1</param-name>\r\n"
+            + "       <param-value>file2-v1</param-value>\r\n"
+            + "   </context-param>\r\n"
+            + "\r\n"
+            + "\r\n"
+            + "    <listener>\r\n"
+            + "      <listener-class>file2-lc1</listener-class>\r\n"
+            + "    </listener>\r\n"
+            + "\r\n"
+            + "    <listener>\r\n"
+            + "      <listener-class>file2-lc2</listener-class>\r\n"
+            + "    </listener>\r\n"
+            + "\r\n"
+            + "\r\n"
+            + "    <servlet>\r\n"
+            + "       <servlet-name>file2-S1</servlet-name>\r\n"
+            + "       <servlet-class>file2-C2</servlet-class>\r\n"
+            + "       <load-on-startup>file2-los</load-on-startup>\r\n"
+            + "   </servlet>\r\n"
+            + "</web-app>\r\n"
+            + "";
+
+        WebXml file1WebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(file1.getBytes("UTF-8")), null);
+        WebXml file2WebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(file2.getBytes("UTF-8")), null);
+
+        WebXmlMerger merger = new WebXmlMerger(file1WebXml);
+        merger.merge(file2WebXml);
+
+        List<Element> ejbRefs = file1WebXml.getElements("listener");
+        assertEquals(4, ejbRefs.size());
+        assertEquals(((Listener) ejbRefs.get(0)).getListenerClass(), "file1-lc1");
+        assertEquals(((Listener) ejbRefs.get(1)).getListenerClass(), "file1-lc2");
+        assertEquals(((Listener) ejbRefs.get(2)).getListenerClass(), "file2-lc1");
+        assertEquals(((Listener) ejbRefs.get(3)).getListenerClass(), "file2-lc2");
+    }
+
+}


Property changes on: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlListenerMergerTest.java
___________________________________________________________________
Added: svn:keywords
   + "Author Date Id Revision"
Added: svn:eol-style
   + native

Modified: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlSecurityRoleMergerTest.java
===================================================================
--- core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlSecurityRoleMergerTest.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlSecurityRoleMergerTest.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -1,94 +1,94  <at>  <at> 
-/*
- * ========================================================================
- *
- * Copyright 2003 The Apache Software Foundation. Code from this file 
- * was originally imported from the Jakarta Cactus project.
- *
- * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ========================================================================
- */
-package org.codehaus.cargo.module.webapp.merge;
-
-import java.io.ByteArrayInputStream;
-import java.util.List;
-
-import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
-import org.codehaus.cargo.module.webapp.WebXml;
-import org.codehaus.cargo.module.webapp.WebXmlIo;
-import org.codehaus.cargo.module.webapp.WebXmlUtils;
-
-/**
- * Unit tests for { <at> link WebXmlMerger}.
- * 
- *  <at> version $Id: WebXmlMergerTest.java 2760 2011-03-19 17:33:47Z alitokmen $
- */
-public final class WebXmlSecurityRoleMergerTest extends AbstractDocumentBuilderTest
-{
-    /**
-     * Tests whether a single security role is correctly inserted into an empty descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeSecurityRoleIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <security-role>"
-            + "    <role-name>role1</role-name>"
-            + "  </security-role>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeSecurityRoles(mergeWebXml);
-        List<String> securityRoleNames = WebXmlUtils.getSecurityRoleNames(srcWebXml);
-        assertEquals(1, securityRoleNames.size());
-        assertEquals("role1", securityRoleNames.get(0));
-    }
-
-    /**
-     * Tests whether a single security role is ignored when the source descriptor already contains a
-     * role with the same name.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeSecurityRoleIntoDocumentWithSameRole() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <security-role>"
-            + "    <description>A role</description>"
-            + "    <role-name>role1</role-name>"
-            + "  </security-role>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <security-role>"
-            + "    <role-name>role1</role-name>"
-            + "  </security-role>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeSecurityRoles(mergeWebXml);
-        List<String> securityRoleNames = WebXmlUtils.getSecurityRoleNames(srcWebXml);
-        assertEquals(1, securityRoleNames.size());
-        assertEquals("role1", securityRoleNames.get(0));
-    }
-
-}
+/*
+ * ========================================================================
+ *
+ * Copyright 2003 The Apache Software Foundation. Code from this file 
+ * was originally imported from the Jakarta Cactus project.
+ *
+ * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ========================================================================
+ */
+package org.codehaus.cargo.module.webapp.merge;
+
+import java.io.ByteArrayInputStream;
+import java.util.List;
+
+import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlIo;
+import org.codehaus.cargo.module.webapp.WebXmlUtils;
+
+/**
+ * Unit tests for { <at> link WebXmlMerger}.
+ * 
+ *  <at> version $Id$
+ */
+public final class WebXmlSecurityRoleMergerTest extends AbstractDocumentBuilderTest
+{
+    /**
+     * Tests whether a single security role is correctly inserted into an empty descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeSecurityRoleIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <security-role>"
+            + "    <role-name>role1</role-name>"
+            + "  </security-role>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeSecurityRoles(mergeWebXml);
+        List<String> securityRoleNames = WebXmlUtils.getSecurityRoleNames(srcWebXml);
+        assertEquals(1, securityRoleNames.size());
+        assertEquals("role1", securityRoleNames.get(0));
+    }
+
+    /**
+     * Tests whether a single security role is ignored when the source descriptor already contains a
+     * role with the same name.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeSecurityRoleIntoDocumentWithSameRole() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <security-role>"
+            + "    <description>A role</description>"
+            + "    <role-name>role1</role-name>"
+            + "  </security-role>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <security-role>"
+            + "    <role-name>role1</role-name>"
+            + "  </security-role>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeSecurityRoles(mergeWebXml);
+        List<String> securityRoleNames = WebXmlUtils.getSecurityRoleNames(srcWebXml);
+        assertEquals(1, securityRoleNames.size());
+        assertEquals("role1", securityRoleNames.get(0));
+    }
+
+}


Property changes on: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlSecurityRoleMergerTest.java
___________________________________________________________________
Added: svn:keywords
   + "Author Date Id Revision"
Added: svn:eol-style
   + native

Modified: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlServletMergerTest.java
===================================================================
--- core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlServletMergerTest.java	2012-02-01 21:02:47 UTC (rev 3229)
+++ core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlServletMergerTest.java	2012-02-02 21:51:01 UTC (rev 3230)
 <at>  <at>  -1,347 +1,347  <at>  <at> 
-/*
- * ========================================================================
- *
- * Copyright 2003 The Apache Software Foundation. Code from this file 
- * was originally imported from the Jakarta Cactus project.
- *
- * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ========================================================================
- */
-package org.codehaus.cargo.module.webapp.merge;
-
-import java.io.ByteArrayInputStream;
-import java.util.List;
-
-import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
-import org.codehaus.cargo.module.webapp.WebXml;
-import org.codehaus.cargo.module.webapp.WebXmlIo;
-import org.codehaus.cargo.module.webapp.WebXmlUtils;
-import org.jdom.Element;
-
-/**
- * Unit tests for { <at> link WebXmlMerger}.
- * 
- *  <at> version $Id: WebXmlMergerTest.java 2760 2011-03-19 17:33:47Z alitokmen $
- */
-public final class WebXmlServletMergerTest extends AbstractDocumentBuilderTest
-{
-    /**
-     * Tests whether a single servlet is correctly merged into an empty descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneServletIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeServlets(mergeWebXml);
-        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
-    }
-
-    /**
-     * Tests whether a single servlet is correctly merged into a descriptor that already contains
-     * the definition of an other servlet.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneServletIntoDocumentWithAnotherServlet() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s2</servlet-name>"
-            + "    <servlet-class>sclass2</servlet-class>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeServlets(mergeWebXml);
-        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
-        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s2"));
-    }
-
-    /**
-     * Tests whether a single servlet is correctly merged into a descriptor that already contains
-     * the definition of a servlet with the same name.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneServletIntoDocumentWithSameServlet() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeServlets(mergeWebXml);
-        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
-    }
-
-    /**
-     * Tets whether a servlet with an initialization parameter is correctly merged into a descriptor
-     * that contains the definition of a servlet with the same name.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneServletIntoDocumentWithSameServletAndParam() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "    <init-param>"
-            + "      <param-name>s1param1</param-name>"
-            + "      <param-value>s1param1value</param-value>"
-            + "    </init-param>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeServlets(mergeWebXml);
-        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
-        List<String> initParams = WebXmlUtils.getServletInitParamNames(srcWebXml, "s1");
-        assertEquals(1, initParams.size());
-        assertEquals("s1param1", initParams.get(0));
-        assertEquals("s1param1value",
-            WebXmlUtils.getServletInitParam(srcWebXml, "s1", "s1param1"));
-    }
-
-    /**
-     * Tests whether a single servlet is correctly merged into a descriptor with multiple servlets.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneServletIntoDocumentWithMultipleServlets() throws Exception
-    {
-        String srcXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "  </servlet>"
-            + "  <servlet>"
-            + "    <servlet-name>s2</servlet-name>"
-            + "    <servlet-class>sclass2</servlet-class>"
-            + "  </servlet>"
-            + "  <servlet>"
-            + "    <servlet-name>s3</servlet-name>"
-            + "    <servlet-class>sclass3</servlet-class>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s4</servlet-name>"
-            + "    <servlet-class>sclass4</servlet-class>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeServlets(mergeWebXml);
-        List<String> servletNames = WebXmlUtils.getServletNames(srcWebXml);
-        assertEquals(4, servletNames.size());
-        assertEquals("s1", servletNames.get(0));
-        assertEquals("s2", servletNames.get(1));
-        assertEquals("s3", servletNames.get(2));
-        assertEquals("s4", servletNames.get(3));
-    }
-
-    /**
-     * Verifies that servlet init parameters are added after the load-on-startup element of an
-     * already existing servlet definition.
-     * 
-     *  <at> 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>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        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>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeServlets(mergeWebXml);
-        Element servletElement = WebXmlUtils.getServlet(srcWebXml, "s1");
-        assertEquals("load-on-startup",
-            ((Element) servletElement.getChildren().get(servletElement.getChildren().size() - 1))
-                .getName());
-    }
-
-    /**
-     * Tests whether multiple servlet in the merge file are correctly inserted into an empty
-     * descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeMultipleServletsIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "  </servlet>"
-            + "  <servlet>"
-            + "    <servlet-name>s2</servlet-name>"
-            + "    <servlet-class>sclass2</servlet-class>"
-            + "  </servlet>"
-            + "  <servlet>"
-            + "    <servlet-name>s3</servlet-name>"
-            + "    <servlet-class>sclass3</servlet-class>"
-            + "  </servlet>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeServlets(mergeWebXml);
-        List<String> servletNames = WebXmlUtils.getServletNames(srcWebXml);
-        assertEquals(3, servletNames.size());
-        assertEquals("s1", servletNames.get(0));
-        assertEquals("s2", servletNames.get(1));
-        assertEquals("s3", servletNames.get(2));
-    }
-
-    /**
-     * Tests whether a single servlet with one mapping is correctly inserted into an empty
-     * descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneServletWithOneMappingIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "  </servlet>"
-            + "  <servlet-mapping>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <url-pattern>/s1mapping1</url-pattern>"
-            + "  </servlet-mapping>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeServlets(mergeWebXml);
-        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
-        List<String> servletMappings = WebXmlUtils.getServletMappings(srcWebXml, "s1");
-        assertEquals(1, servletMappings.size());
-        assertEquals("/s1mapping1", servletMappings.get(0));
-    }
-
-    /**
-     * Tests whether a single servlet with multiple mappings is correctly inserted into an empty
-     * descriptor.
-     * 
-     *  <at> throws Exception If an unexpected error occurs
-     */
-    public void testMergeOneServletWithMultipleMappingsIntoEmptyDocument() throws Exception
-    {
-        String srcXml = "<web-app></web-app>";
-        WebXml srcWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
-        String mergeXml = "<web-app>"
-            + "  <servlet>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <servlet-class>sclass1</servlet-class>"
-            + "  </servlet>"
-            + "  <servlet-mapping>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <url-pattern>/s1mapping1</url-pattern>"
-            + "  </servlet-mapping>"
-            + "  <servlet-mapping>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <url-pattern>/s1mapping2</url-pattern>"
-            + "  </servlet-mapping>"
-            + "  <servlet-mapping>"
-            + "    <servlet-name>s1</servlet-name>"
-            + "    <url-pattern>/s1mapping3</url-pattern>"
-            + "  </servlet-mapping>"
-            + "</web-app>";
-        WebXml mergeWebXml =
-            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
-        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
-        merger.mergeServlets(mergeWebXml);
-        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
-        List<String> servletMappings = WebXmlUtils.getServletMappings(srcWebXml, "s1");
-        assertEquals(3, servletMappings.size());
-        assertEquals("/s1mapping1", servletMappings.get(0));
-        assertEquals("/s1mapping2", servletMappings.get(1));
-        assertEquals("/s1mapping3", servletMappings.get(2));
-    }
-
-}
+/*
+ * ========================================================================
+ *
+ * Copyright 2003 The Apache Software Foundation. Code from this file 
+ * was originally imported from the Jakarta Cactus project.
+ *
+ * Codehaus CARGO, copyright 2004-2011 Vincent Massol.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ========================================================================
+ */
+package org.codehaus.cargo.module.webapp.merge;
+
+import java.io.ByteArrayInputStream;
+import java.util.List;
+
+import org.codehaus.cargo.module.AbstractDocumentBuilderTest;
+import org.codehaus.cargo.module.webapp.WebXml;
+import org.codehaus.cargo.module.webapp.WebXmlIo;
+import org.codehaus.cargo.module.webapp.WebXmlUtils;
+import org.jdom.Element;
+
+/**
+ * Unit tests for { <at> link WebXmlMerger}.
+ * 
+ *  <at> version $Id$
+ */
+public final class WebXmlServletMergerTest extends AbstractDocumentBuilderTest
+{
+    /**
+     * Tests whether a single servlet is correctly merged into an empty descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneServletIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeServlets(mergeWebXml);
+        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
+    }
+
+    /**
+     * Tests whether a single servlet is correctly merged into a descriptor that already contains
+     * the definition of an other servlet.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneServletIntoDocumentWithAnotherServlet() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s2</servlet-name>"
+            + "    <servlet-class>sclass2</servlet-class>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeServlets(mergeWebXml);
+        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
+        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s2"));
+    }
+
+    /**
+     * Tests whether a single servlet is correctly merged into a descriptor that already contains
+     * the definition of a servlet with the same name.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneServletIntoDocumentWithSameServlet() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeServlets(mergeWebXml);
+        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
+    }
+
+    /**
+     * Tets whether a servlet with an initialization parameter is correctly merged into a descriptor
+     * that contains the definition of a servlet with the same name.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneServletIntoDocumentWithSameServletAndParam() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "    <init-param>"
+            + "      <param-name>s1param1</param-name>"
+            + "      <param-value>s1param1value</param-value>"
+            + "    </init-param>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeServlets(mergeWebXml);
+        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
+        List<String> initParams = WebXmlUtils.getServletInitParamNames(srcWebXml, "s1");
+        assertEquals(1, initParams.size());
+        assertEquals("s1param1", initParams.get(0));
+        assertEquals("s1param1value",
+            WebXmlUtils.getServletInitParam(srcWebXml, "s1", "s1param1"));
+    }
+
+    /**
+     * Tests whether a single servlet is correctly merged into a descriptor with multiple servlets.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneServletIntoDocumentWithMultipleServlets() throws Exception
+    {
+        String srcXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "  </servlet>"
+            + "  <servlet>"
+            + "    <servlet-name>s2</servlet-name>"
+            + "    <servlet-class>sclass2</servlet-class>"
+            + "  </servlet>"
+            + "  <servlet>"
+            + "    <servlet-name>s3</servlet-name>"
+            + "    <servlet-class>sclass3</servlet-class>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s4</servlet-name>"
+            + "    <servlet-class>sclass4</servlet-class>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeServlets(mergeWebXml);
+        List<String> servletNames = WebXmlUtils.getServletNames(srcWebXml);
+        assertEquals(4, servletNames.size());
+        assertEquals("s1", servletNames.get(0));
+        assertEquals("s2", servletNames.get(1));
+        assertEquals("s3", servletNames.get(2));
+        assertEquals("s4", servletNames.get(3));
+    }
+
+    /**
+     * Verifies that servlet init parameters are added after the load-on-startup element of an
+     * already existing servlet definition.
+     * 
+     *  <at> 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>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        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>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeServlets(mergeWebXml);
+        Element servletElement = WebXmlUtils.getServlet(srcWebXml, "s1");
+        assertEquals("load-on-startup",
+            ((Element) servletElement.getChildren().get(servletElement.getChildren().size() - 1))
+                .getName());
+    }
+
+    /**
+     * Tests whether multiple servlet in the merge file are correctly inserted into an empty
+     * descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeMultipleServletsIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "  </servlet>"
+            + "  <servlet>"
+            + "    <servlet-name>s2</servlet-name>"
+            + "    <servlet-class>sclass2</servlet-class>"
+            + "  </servlet>"
+            + "  <servlet>"
+            + "    <servlet-name>s3</servlet-name>"
+            + "    <servlet-class>sclass3</servlet-class>"
+            + "  </servlet>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeServlets(mergeWebXml);
+        List<String> servletNames = WebXmlUtils.getServletNames(srcWebXml);
+        assertEquals(3, servletNames.size());
+        assertEquals("s1", servletNames.get(0));
+        assertEquals("s2", servletNames.get(1));
+        assertEquals("s3", servletNames.get(2));
+    }
+
+    /**
+     * Tests whether a single servlet with one mapping is correctly inserted into an empty
+     * descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneServletWithOneMappingIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "  </servlet>"
+            + "  <servlet-mapping>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <url-pattern>/s1mapping1</url-pattern>"
+            + "  </servlet-mapping>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeServlets(mergeWebXml);
+        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
+        List<String> servletMappings = WebXmlUtils.getServletMappings(srcWebXml, "s1");
+        assertEquals(1, servletMappings.size());
+        assertEquals("/s1mapping1", servletMappings.get(0));
+    }
+
+    /**
+     * Tests whether a single servlet with multiple mappings is correctly inserted into an empty
+     * descriptor.
+     * 
+     *  <at> throws Exception If an unexpected error occurs
+     */
+    public void testMergeOneServletWithMultipleMappingsIntoEmptyDocument() throws Exception
+    {
+        String srcXml = "<web-app></web-app>";
+        WebXml srcWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(srcXml.getBytes("UTF-8")), null);
+        String mergeXml = "<web-app>"
+            + "  <servlet>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <servlet-class>sclass1</servlet-class>"
+            + "  </servlet>"
+            + "  <servlet-mapping>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <url-pattern>/s1mapping1</url-pattern>"
+            + "  </servlet-mapping>"
+            + "  <servlet-mapping>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <url-pattern>/s1mapping2</url-pattern>"
+            + "  </servlet-mapping>"
+            + "  <servlet-mapping>"
+            + "    <servlet-name>s1</servlet-name>"
+            + "    <url-pattern>/s1mapping3</url-pattern>"
+            + "  </servlet-mapping>"
+            + "</web-app>";
+        WebXml mergeWebXml =
+            WebXmlIo.parseWebXml(new ByteArrayInputStream(mergeXml.getBytes("UTF-8")), null);
+        WebXmlMerger merger = new WebXmlMerger(srcWebXml);
+        merger.mergeServlets(mergeWebXml);
+        assertTrue(WebXmlUtils.hasServlet(srcWebXml, "s1"));
+        List<String> servletMappings = WebXmlUtils.getServletMappings(srcWebXml, "s1");
+        assertEquals(3, servletMappings.size());
+        assertEquals("/s1mapping1", servletMappings.get(0));
+        assertEquals("/s1mapping2", servletMappings.get(1));
+        assertEquals("/s1mapping3", servletMappings.get(2));
+    }
+
+}


Property changes on: core/trunk/api/module/src/test/java/org/codehaus/cargo/module/webapp/merge/WebXmlServletMergerTest.java
___________________________________________________________________
Added: svn:keywords
   + "Author Date Id Revision"
Added: svn:eol-style
   + native


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



(CARGO-1079) Add support for merging <mime-mapping>

Savas Ali Tokmen created CARGO-1079:
---------------------------------------

             Summary: Add support for merging <mime-mapping>
                 Key: CARGO-1079
                 URL: https://jira.codehaus.org/browse/CARGO-1079
             Project: Cargo
          Issue Type: Improvement
          Components: Core
    Affects Versions: 1.2.0
            Reporter: Savas Ali Tokmen
            Priority: Minor

See: http://old.nabble.com/Duplicate-entries-when-merging-wars-to33241645.html

---

I'm trying to merge 2 wars with cargo-maven2-plugin 1.2.0.

Merging context-params works as expected, but for mime-mappings there are duplicate entries in the
resulting web.xml.

Each of the source web.xml contains an entry

{noformat}
  <mime-mapping>
    <extension>js</extension>
    <mime-type>application/x-javascript</mime-type>
  </mime-mapping>
{noformat}

In the resulting web.xml there are 2 entries for mime-mapping.

Note: For servlet and filter elements this is not the case.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

(CARGO-1078) Duplicate entries when merging <filter-mapping>

Savas Ali Tokmen created CARGO-1078:
---------------------------------------

             Summary: Duplicate entries when merging <filter-mapping>
                 Key: CARGO-1078
                 URL: https://jira.codehaus.org/browse/CARGO-1078
             Project: Cargo
          Issue Type: Bug
          Components: Core
            Reporter: Savas Ali Tokmen
            Priority: Minor

See: http://old.nabble.com/Duplicate-entries-when-merging-wars-to33241645.html

---

I'm trying to merge 2 wars with cargo-maven2-plugin 1.2.0.

Merging context-params works as expected, but for filter-mappings there are duplicate entries in the
resulting web.xml.

Each of the source web.xml contains an entry:

{noformat}
  <filter-mapping>
    <filter-name>Trinidad Filter</filter-name>
    <url-pattern>*.jsf</url-pattern>
  </filter-mapping>
{noformat}

In the resulting web.xml there are 2 entries for filter-mapping.

Note: For servlet and filter elements this is not the case.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Gmane