You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-dev@jakarta.apache.org by cm...@apache.org on 2003/05/14 12:46:20 UTC
cvs commit: jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/deployment TestWebXmlVersion.java TestWebXml.java TestWebXmlMerger.java
cmlenz 2003/05/14 03:46:20
Added: integration/ant/src/test/org/apache/cactus/integration/ant/deployment
TestWebXmlVersion.java TestWebXml.java
TestWebXmlMerger.java
Log:
Multipart commit: Move classes from webxml into deployment package
Revision Changes Path
1.1 jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/deployment/TestWebXmlVersion.java
Index: TestWebXmlVersion.java
===================================================================
/*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Cactus" and "Apache Software
* Foundation" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.cactus.integration.ant.deployment;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import junit.framework.TestCase;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.DocumentType;
/**
* Unit tests for {@link WebXmlVersion}.
*
* @author <a href="mailto:cmlenz@apache.org">Christopher Lenz</a>
*
* @version $Id: TestWebXmlVersion.java,v 1.1 2003/05/14 10:46:20 cmlenz Exp $
*/
public final class TestWebXmlVersion extends TestCase
{
/**
* The DOM implementation
*/
private DOMImplementation domImpl;
/**
* @see TestCase#TestCase(String)
*/
public TestWebXmlVersion(String theTestName)
{
super(theTestName);
}
/**
* @see TestCase#setUp
*/
public void setUp() throws ParserConfigurationException
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(false);
this.domImpl = factory.newDocumentBuilder().getDOMImplementation();
}
/**
* Verifies that comparing version 2.2 to version 2.2 yields zero.
*
* @throws Exception If an unexpected error occurs
*/
public void testCompare22To22() throws Exception
{
assertTrue(WebXmlVersion.V2_2.compareTo(WebXmlVersion.V2_2) == 0);
}
/**
* Verifies that comparing version 2.2 to version 2.3 yields a negative
* value.
*
* @throws Exception If an unexpected error occurs
*/
public void testCompare22To23() throws Exception
{
assertTrue(WebXmlVersion.V2_2.compareTo(WebXmlVersion.V2_3) < 0);
}
/**
* Verifies that comparing version 2.3 to version 2.3 yields zero.
*
* @throws Exception If an unexpected error occurs
*/
public void testCompare23To23() throws Exception
{
assertTrue(WebXmlVersion.V2_3.compareTo(WebXmlVersion.V2_3) == 0);
}
/**
* Verifies that comparing version 2.2 to version 2.3 yields a negative
* value.
*
* @throws Exception If an unexpected error occurs
*/
public void testCompare23To22() throws Exception
{
assertTrue(WebXmlVersion.V2_3.compareTo(WebXmlVersion.V2_2) > 0);
}
/**
* Verifies that calling WebXmlVersion.valueOf(null) throws a
* NullPointerException.
*
* @throws Exception If an unexpected error occurs
*/
public void testValueOfNull() throws Exception
{
try
{
WebXmlVersion.valueOf((DocumentType) null);
fail("Expected NullPointerException");
}
catch (NullPointerException expected)
{
// expected
}
}
/**
* Verifies that calling WebXmlVersion.valueOf() with a unknown document
* type returns null.
*
* @throws Exception If an unexpected error occurs
*/
public void testValueOfUnknownDocType() throws Exception
{
DocumentType docType = domImpl.createDocumentType("web-app",
"foo", "bar");
assertNull(WebXmlVersion.valueOf(docType));
}
/**
* Verifies that calling WebXmlVersion.valueOf() with a web-app 2.2 document
* type returns the correct instance.
*
* @throws Exception If an unexpected error occurs
*/
public void testValueOfDocType22() throws Exception
{
DocumentType docType = domImpl.createDocumentType("web-app",
WebXmlVersion.V2_2.getPublicId(), WebXmlVersion.V2_2.getSystemId());
assertEquals(WebXmlVersion.V2_2, WebXmlVersion.valueOf(docType));
}
/**
* Verifies that calling WebXmlVersion.valueOf() with a web-app 2.3 document
* type returns the correct instance.
*
* @throws Exception If an unexpected error occurs
*/
public void testValueOfDocType23() throws Exception
{
DocumentType docType = domImpl.createDocumentType("web-app",
WebXmlVersion.V2_3.getPublicId(), WebXmlVersion.V2_3.getSystemId());
assertEquals(WebXmlVersion.V2_3, WebXmlVersion.valueOf(docType));
}
}
1.1 jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/deployment/TestWebXml.java
Index: TestWebXml.java
===================================================================
/*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Cactus" and "Apache Software
* Foundation" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.cactus.integration.ant.deployment;
import java.io.ByteArrayInputStream;
import java.io.StringReader;
import java.util.Iterator;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import junit.framework.TestCase;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
* Unit tests for {@link WebXml}.
*
* @author <a href="mailto:cmlenz@apache.org">Christopher Lenz</a>
*
* @version $Id: TestWebXml.java,v 1.1 2003/05/14 10:46:20 cmlenz Exp $
*/
public final class TestWebXml extends TestCase
{
/**
* The document builder factory.
*/
private DocumentBuilderFactory factory;
/**
* The JAXP document builder.
*/
private DocumentBuilder builder;
/**
* @see TestCase#TestCase(String)
*/
public TestWebXml(String theTestName)
{
super(theTestName);
}
/**
* @see TestCase#setUp
*/
public void setUp() throws ParserConfigurationException
{
factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(false);
builder = factory.newDocumentBuilder();
builder.setEntityResolver(new EntityResolver()
{
public InputSource resolveEntity(String thePublicId,
String theSystemId) throws SAXException
{
return new InputSource(new StringReader(""));
}
});
}
/**
* Tests whether the construction of a WebXml object with a
* <code>null</code> parameter for the DOM document throws a
* <code>NullPointerException</code>.
*
* @throws Exception If an unexpected error occurs
*/
public void testConstructionWithNullDocument() throws Exception
{
try
{
new WebXml(null);
fail("Expected NullPointerException");
}
catch (NullPointerException npe)
{
// expected
}
}
/**
* Tests whether a servlet API version 2.2 descriptor is correctly detected.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetVersion22() throws Exception
{
String xml = "<!DOCTYPE web-app "
+ "PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN' "
+ "'http://java.sun.com/j2ee/dtds/web-app_2.2.dtd'>"
+ "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertEquals(WebXmlVersion.V2_2, webXml.getVersion());
}
/**
* Tests whether a servlet API version 2.3 descriptor is correctly detected.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetVersion23() throws Exception
{
String xml = "<!DOCTYPE web-app "
+ "PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' "
+ "'http://java.sun.com/dtd/web-app_2_3.dtd'>"
+ "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertEquals(WebXmlVersion.V2_3, webXml.getVersion());
}
/**
* Tests whether WebXml#getVersion returns <code>null</code> when the public
* ID of the <code>DOCTYPE</code> is not recognized.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetVersionUnknown() throws Exception
{
String xml = "<!DOCTYPE web-app "
+ "PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 1.9//EN' "
+ "'http://java.sun.com/dtd/web-app_1_9.dtd'>"
+ "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertNull(webXml.getVersion());
}
/**
* Tests whether WebXml#getVersion returns <code>null</code> when the
* <code>DOCTYPE</code> is missing.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetVersionWithoutDoctype() throws Exception
{
String xml = "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertNull(webXml.getVersion());
}
/**
* Tests whether calling {@link WebXml.hasFilter} with <code>null</code> as
* filter name parameter results in a <code>NullPointerException</code>
* being thrown.
*
* @throws Exception If an unexpected error occurs
*/
public void testHasFilterWithNullName() throws Exception
{
String xml = "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
try
{
webXml.hasFilter(null);
fail("Expected NullPointerException");
}
catch (NullPointerException npe)
{
// expected
}
}
/**
* Tests whether {@link WebXml.hasFilter} returns the correct value for
* a descriptor containing one filter definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testHasFilterWithOneFilter() throws Exception
{
String xml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>fclass1</filter-class>"
+ " </filter>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertTrue(webXml.hasFilter("f1"));
assertTrue(!webXml.hasFilter("f2"));
}
/**
* Tests whether {@link WebXml.hasFilter} returns the correct values for
* a descriptor containing multiple filter definitions.
*
* @throws Exception If an unexpected error occurs
*/
public void testHasFilterWithMultipleFilters() throws Exception
{
String xml = "<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>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertTrue(webXml.hasFilter("f1"));
assertTrue(webXml.hasFilter("f2"));
assertTrue(webXml.hasFilter("f3"));
assertTrue(!webXml.hasFilter("f4"));
}
/**
* Tests whether a DOM element representing a single filter definition can
* be correctly retrieved from a descriptor containing only that filter.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetFilterElementWithOneFilter() throws Exception
{
String xml = "<web-app>"
+ " <filter>".trim()
+ " <filter-name>f1</filter-name>".trim()
+ " <filter-class>fclass1</filter-class>".trim()
+ " </filter>".trim()
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Element servletElement = webXml.getFilter("f1");
assertNotNull(servletElement);
assertEquals("filter", servletElement.getNodeName());
assertEquals("filter-name",
servletElement.getFirstChild().getNodeName());
assertEquals("f1",
servletElement.getFirstChild().getFirstChild().getNodeValue());
assertEquals("filter-class",
servletElement.getLastChild().getNodeName());
assertEquals("fclass1",
servletElement.getLastChild().getFirstChild().getNodeValue());
}
/**
* Tests whether the filter names are retrieved in the expected order.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetFilterNames() throws Exception
{
String xml = "<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>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator filterNames = webXml.getFilterNames();
assertEquals("f1", filterNames.next());
assertEquals("f2", filterNames.next());
assertEquals("f3", filterNames.next());
assertTrue(!filterNames.hasNext());
}
/**
* Tests whether a retrieving a filter name by the name of the class
* implementing the filter works correctly for a descriptor with a single
* filter definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetFilterNamesForClassWithSingleFilter() throws Exception
{
String xml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>f1class</filter-class>"
+ " </filter>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator filterNames = webXml.getFilterNamesForClass("f1class");
assertEquals("f1", filterNames.next());
assertTrue(!filterNames.hasNext());
}
/**
* Tests whether a retrieving the filter names by the name of the class
* implementing the filter works correctly for a descriptor with multiple
* filter definitions.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetFilterNamesForClassWithMultipleFilters() throws Exception
{
String xml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>f1class</filter-class>"
+ " </filter>"
+ " <filter>"
+ " <filter-name>f2</filter-name>"
+ " <filter-class>f2class</filter-class>"
+ " </filter>"
+ " <filter>"
+ " <filter-name>f3</filter-name>"
+ " <filter-class>f1class</filter-class>"
+ " </filter>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator filterNames = webXml.getFilterNamesForClass("f1class");
assertEquals("f1", filterNames.next());
assertEquals("f3", filterNames.next());
assertTrue(!filterNames.hasNext());
}
/**
* Tests whether a filter-mapping is correctly retrieved from a descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetFilterMappingsWithOneMapping() throws Exception
{
String xml = "<web-app>"
+ " <filter-mapping>"
+ " <filter-name>f1</filter-name>"
+ " <url-pattern>/f1mapping</url-pattern>"
+ " </filter-mapping>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator filterMappings = webXml.getFilterMappings("f1");
assertEquals("/f1mapping", filterMappings.next());
assertTrue(!filterMappings.hasNext());
}
/**
* Tests whether multiple filter-mappings are correctly retrieved from a
* descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetFilterMappingsWithMultipleMappings() throws Exception
{
String xml = "<web-app>"
+ " <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>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator filterMappings = webXml.getFilterMappings("f1");
assertEquals("/f1mapping1", filterMappings.next());
assertEquals("/f1mapping2", filterMappings.next());
assertEquals("/f1mapping3", filterMappings.next());
assertTrue(!filterMappings.hasNext());
}
/**
* Tests whether a filter-mapping is correctly retrieved from a descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetFilterMappingsWithFilter() throws Exception
{
String xml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>f1class</filter-class>"
+ " </filter>"
+ " <filter-mapping>"
+ " <filter-name>f1</filter-name>"
+ " <url-pattern>/f1mapping</url-pattern>"
+ " </filter-mapping>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator filterMappings = webXml.getFilterMappings("f1");
assertEquals("/f1mapping", filterMappings.next());
assertTrue(!filterMappings.hasNext());
}
/**
* Tests whether a single filter is correctly inserted into an empty
* descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddFilterToEmptyDocument() throws Exception
{
String xml = "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Element filterElement = createFilterElement(doc, "f1", "f1class");
webXml.addFilter(filterElement);
assertTrue(webXml.hasFilter("f1"));
}
/**
* Tests whether a single filter is correctly inserted into a descriptor
* that already contains an other filter definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddFilterToDocumentWithAnotherFilter() throws Exception
{
String xml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>fclass1</filter-class>"
+ " </filter>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Element filterElement = createFilterElement(doc, "f2", "f2class");
webXml.addFilter(filterElement);
assertTrue(webXml.hasFilter("f1"));
assertTrue(webXml.hasFilter("f2"));
}
/**
* Tests whether trying to add a filter to a descriptor that already
* contains a filter definition with the same name results in a exception.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddFilterToDocumentWithTheSameFilter() throws Exception
{
String xml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>fclass1</filter-class>"
+ " </filter>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Element filterElement = createFilterElement(doc, "f1", "f1class");
try
{
webXml.addFilter(filterElement);
fail("Expected IllegalStateException");
}
catch (IllegalStateException ise)
{
// expected
}
}
/**
* Tests whether a single initialization parameter can be added to a filter
* definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddOneFilterInitParam() throws Exception
{
String xml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>fclass1</filter-class>"
+ " </filter>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addFilterInitParam("f1", "f1param1", "f1param1value");
Iterator initParams = webXml.getFilterInitParamNames("f1");
assertEquals("f1param1", initParams.next());
assertTrue(!initParams.hasNext());
}
/**
* Tests whether multiple initialization parameter can be added to a filter
* definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddMultipleFilterInitParams() throws Exception
{
String xml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>fclass1</filter-class>"
+ " </filter>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addFilterInitParam("f1", "f1param1", "f1param1value");
webXml.addFilterInitParam("f1", "f1param2", "f1param2value");
webXml.addFilterInitParam("f1", "f1param3", "f1param3value");
Iterator initParams = webXml.getFilterInitParamNames("f1");
assertEquals("f1param1", initParams.next());
assertEquals("f1param2", initParams.next());
assertEquals("f1param3", initParams.next());
assertTrue(!initParams.hasNext());
}
/**
* Tests whether a single filter can be added using the method that takes
* a string for the filter name and a string for the filter class.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddFilterWithNameAndClass() throws Exception
{
String xml = "<web-app>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addServlet("f1", "f1class");
assertTrue(webXml.hasServlet("f1"));
}
/**
* Tests whether calling {@link WebXml#hasServlet} with a <code>null</code>
* parameter as servlet name throws a <code>NullPointerException</code>.
*
* @throws Exception If an unexpected error occurs
*/
public void testHasServletWithNullName() throws Exception
{
String xml = "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
try
{
webXml.hasServlet(null);
fail("Expected NullPointerException");
}
catch (NullPointerException npe)
{
// expected
}
}
/**
* Tests whether {@link WebXml#hasServlet} reports the correct values for a
* descriptor containing a single servlet definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testHasServletWithOneServlet() throws Exception
{
String xml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <servlet-class>sclass1</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertTrue(webXml.hasServlet("s1"));
assertTrue(!webXml.hasServlet("s2"));
}
/**
* Tests whether {@link WebXml#hasServlet} reports the correct values for a
* descriptor containing multiple servlet definitions.
*
* @throws Exception If an unexpected error occurs
*/
public void testHasServletWithMultipleServlets() throws Exception
{
String xml = "<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>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertTrue(webXml.hasServlet("s1"));
assertTrue(webXml.hasServlet("s2"));
assertTrue(webXml.hasServlet("s3"));
assertTrue(!webXml.hasServlet("s4"));
}
/**
* Tests whether a servlet element is correctly retrieved from a descriptor
* containing only one servlet definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetServletElementWithOneServlet() throws Exception
{
String xml = "<web-app>"
+ " <servlet>".trim()
+ " <servlet-name>s1</servlet-name>".trim()
+ " <servlet-class>sclass1</servlet-class>".trim()
+ " </servlet>".trim()
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Element servletElement = webXml.getServlet("s1");
assertNotNull(servletElement);
assertEquals("servlet", servletElement.getNodeName());
assertEquals("servlet-name",
servletElement.getFirstChild().getNodeName());
assertEquals("s1",
servletElement.getFirstChild().getFirstChild().getNodeValue());
assertEquals("servlet-class",
servletElement.getLastChild().getNodeName());
assertEquals("sclass1",
servletElement.getLastChild().getFirstChild().getNodeValue());
}
/**
* Tests whether the names of the servlets defined in a descriptor are
* correctly returned in the expected order.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetServletNames() throws Exception
{
String xml = "<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>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator servletNames = webXml.getServletNames();
assertEquals("s1", servletNames.next());
assertEquals("s2", servletNames.next());
assertEquals("s3", servletNames.next());
assertTrue(!servletNames.hasNext());
}
/**
* Tests whether a retrieving a servlet name by the name of the class
* implementing the servlet works correctly for a descriptor with a single
* servlet definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetServletNamesForClassWithSingleServlet() throws Exception
{
String xml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <servlet-class>s1class</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator servletNames = webXml.getServletNamesForClass("s1class");
assertEquals("s1", servletNames.next());
assertTrue(!servletNames.hasNext());
}
/**
* Tests whether a retrieving the servlet names by the name of the class
* implementing the servlet works correctly for a descriptor with multiple
* servlet definitions.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetServletNamesForClassWithMultipleServlets()
throws Exception
{
String xml = "<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>sclass1</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator servletNames = webXml.getServletNamesForClass("sclass1");
assertEquals("s1", servletNames.next());
assertEquals("s3", servletNames.next());
assertTrue(!servletNames.hasNext());
}
/**
* Tests whether a retrieving a servlet name by the path of the JSP file
* implementing the servlet works correctly for a descriptor with a single
* servlet definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetServletNamesForJspFileWithSingleServlet()
throws Exception
{
String xml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <jsp-file>/s1.jsp</jsp-file>"
+ " </servlet>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator servletNames = webXml.getServletNamesForJspFile("/s1.jsp");
assertEquals("s1", servletNames.next());
assertTrue(!servletNames.hasNext());
}
/**
* Tests whether a retrieving the servlet names by the path of the JSP file
* implementing the servlet works correctly for a descriptor with multiple
* servlet definitions.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetServletNamesForJspFileWithMultipleServlets()
throws Exception
{
String xml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <jsp-file>/s1.jsp</jsp-file>"
+ " </servlet>"
+ " <servlet>"
+ " <servlet-name>s2</servlet-name>"
+ " <servlet-class>sclass2</servlet-class>"
+ " </servlet>"
+ " <servlet>"
+ " <servlet-name>s3</servlet-name>"
+ " <jsp-file>/s3.jsp</jsp-file>"
+ " </servlet>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator servletNames = webXml.getServletNamesForJspFile("/s3.jsp");
assertEquals("s3", servletNames.next());
assertTrue(!servletNames.hasNext());
}
/**
* Tests whether a single serrvlet-mapping is correctly retrieved from a
* descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetServletMappingsWithOneMapping() throws Exception
{
String xml = "<web-app>"
+ " <servlet-mapping>"
+ " <servlet-name>s1</servlet-name>"
+ " <url-pattern>/s1mapping</url-pattern>"
+ " </servlet-mapping>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator servletMappings = webXml.getServletMappings("s1");
assertEquals("/s1mapping", servletMappings.next());
assertTrue(!servletMappings.hasNext());
}
/**
* Tests whether multiple servlet mappings are correctly retrieved from a
* descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetServletMappingsWithMultipleMappings() throws Exception
{
String xml = "<web-app>"
+ " <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>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator servletMappings = webXml.getServletMappings("s1");
assertEquals("/s1mapping1", servletMappings.next());
assertEquals("/s1mapping2", servletMappings.next());
assertEquals("/s1mapping3", servletMappings.next());
assertTrue(!servletMappings.hasNext());
}
/**
* Tests whether a single servlet can be added to an empty descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddServletToEmptyDocument() throws Exception
{
String xml = "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addServlet(createServletElement(doc, "s1", "s1class"));
assertTrue(webXml.hasServlet("s1"));
}
/**
* Tests whether a single servlet can be added to a descriptor already
* containing an other servlet.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddServletToDocumentWithAnotherServlet() throws Exception
{
String xml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <servlet-class>sclass1</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addServlet(createServletElement(doc, "s2", "s2class"));
assertTrue(webXml.hasServlet("s1"));
assertTrue(webXml.hasServlet("s2"));
}
/**
* Tests whether trying to add a servlet to a descriptor that already
* contains a servlet with the same name results in an exception.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddServletToDocumentWithTheSameServlet() throws Exception
{
String xml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <servlet-class>sclass1</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
try
{
webXml.addServlet(createServletElement(doc, "s1", "s1class"));
fail("Expected IllegalStateException");
}
catch (IllegalStateException ise)
{
// expected
}
}
/**
* Tests whether a single initialization parameter is correctly added to an
* existing servlet definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddOneServletInitParam() throws Exception
{
String xml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <servlet-class>sclass1</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addServletInitParam("s1", "s1param1", "s1param1value");
Iterator initParams = webXml.getServletInitParamNames("s1");
assertEquals("s1param1", initParams.next());
assertTrue(!initParams.hasNext());
}
/**
* Tests whether multiple initialization parameters are correctly added to
* an existing servlet definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddMultipleServletInitParams() throws Exception
{
String xml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <servlet-class>sclass1</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addServletInitParam("s1", "s1param1", "s1param1value");
webXml.addServletInitParam("s1", "s1param2", "s1param2value");
webXml.addServletInitParam("s1", "s1param3", "s1param3value");
Iterator initParams = webXml.getServletInitParamNames("s1");
assertEquals("s1param1", initParams.next());
assertEquals("s1param2", initParams.next());
assertEquals("s1param3", initParams.next());
assertTrue(!initParams.hasNext());
}
/**
* Tests whether a single servlet can be added using the method that takes
* a string for the servlet name and a string for the servlet class.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddServletWithNameAndClass() throws Exception
{
String xml = "<web-app>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addServlet("s1", "s1class");
assertTrue(webXml.hasServlet("s1"));
}
/**
* Tests whether a single servlet can be added using the method that takes
* a string for the servlet name and a string for the JSP file.
*
* @throws Exception If an unexpected error occurs
*/
public void testAddServletWithNameAndJspFile() throws Exception
{
String xml = "<web-app>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addJspFile("s1", "s1.jsp");
assertTrue(webXml.hasServlet("s1"));
}
/**
* Tests whether retrieving security-constraint elements from an empty
* descriptor results in an empty iterator.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetSecurityConstraintEmpty()
throws Exception
{
String xml = "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator securityConstraints =
webXml.getElements(WebXmlTag.SECURITY_CONSTRAINT);
assertTrue(!securityConstraints.hasNext());
}
/**
* Tests whether a single security-constraint element in the descriptor is
* correctly retrieved.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetSingleSecurityConstraint()
throws Exception
{
String xml = "<web-app>"
+ " <security-constraint>"
+ " <web-resource-collection>"
+ " <web-resource-name>wr1</web-resource-name>"
+ " </web-resource-collection>"
+ " </security-constraint>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator securityConstraints =
webXml.getElements(WebXmlTag.SECURITY_CONSTRAINT);
assertNotNull(securityConstraints.next());
assertTrue(!securityConstraints.hasNext());
}
/**
* Tests whether multiple security-constraint elements are returned in
* the expected order.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetMutlipleSecurityConstraints()
throws Exception
{
String xml = "<web-app>"
+ " <security-constraint>"
+ " <web-resource-collection>"
+ " <web-resource-name>wr1</web-resource-name>"
+ " </web-resource-collection>"
+ " </security-constraint>"
+ " <security-constraint>"
+ " <web-resource-collection>"
+ " <web-resource-name>wr2</web-resource-name>"
+ " </web-resource-collection>"
+ " </security-constraint>"
+ " <security-constraint>"
+ " <web-resource-collection>"
+ " <web-resource-name>wr3</web-resource-name>"
+ " </web-resource-collection>"
+ " </security-constraint>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator securityConstraints =
webXml.getElements(WebXmlTag.SECURITY_CONSTRAINT);
assertNotNull(securityConstraints.next());
assertNotNull(securityConstraints.next());
assertNotNull(securityConstraints.next());
assertTrue(!securityConstraints.hasNext());
}
/**
* Tests whether retrieving the login-config from an empty descriptor
* returns <code>null</code>.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetLoginConfigEmpty()
throws Exception
{
String xml = "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertTrue(!webXml.getElements(WebXmlTag.LOGIN_CONFIG).hasNext());
}
/**
* Tests whether the login-config element can be correctly retrieved.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetLoginConfig()
throws Exception
{
String xml = "<web-app><login-config/></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
assertTrue(webXml.getElements(WebXmlTag.LOGIN_CONFIG).hasNext());
}
/**
* Tests whether retrieving the security-role elements from an empty
* descriptor results in an empty iterator.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetSecurityRoleEmpty()
throws Exception
{
String xml = "<web-app></web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator securityRoles = webXml.getElements(WebXmlTag.SECURITY_ROLE);
assertTrue(!securityRoles.hasNext());
}
/**
* Tests whether a single security-role element is correctly retrieved.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetSingleSecurityRole()
throws Exception
{
String xml = "<web-app>"
+ " <security-role>"
+ " <role-name>r1</role-name>"
+ " </security-role>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator securityRoles = webXml.getElements(WebXmlTag.SECURITY_ROLE);
assertNotNull(securityRoles.next());
assertTrue(!securityRoles.hasNext());
}
/**
* Tests whether multiple security-role elements are correctly retrieved
* in the expected order.
*
* @throws Exception If an unexpected error occurs
*/
public void testGetMutlipleSecurityRoles()
throws Exception
{
String xml = "<web-app>"
+ " <security-role>"
+ " <role-name>r1</role-name>"
+ " </security-role>"
+ " <security-role>"
+ " <role-name>r2</role-name>"
+ " </security-role>"
+ " <security-role>"
+ " <role-name>r3</role-name>"
+ " </security-role>"
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
Iterator securityRoles = webXml.getElements(WebXmlTag.SECURITY_ROLE);
assertNotNull(securityRoles.next());
assertNotNull(securityRoles.next());
assertNotNull(securityRoles.next());
assertTrue(!securityRoles.hasNext());
}
/**
* Tests whether a filter is inserted before a servlet element.
*
* @throws Exception If an unexpected error occurs
*/
public void testElementOrderFilterBeforeServlet() throws Exception
{
String xml = "<web-app>"
+ " <servlet>".trim()
+ " <servlet-name>s1</servlet-name>".trim()
+ " <servlet-class>s1class</servlet-class>".trim()
+ " </servlet>".trim()
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addFilter(createFilterElement(doc, "f1", "f1class"));
NodeList order = doc.getDocumentElement().getChildNodes();
assertEquals("filter", order.item(0).getNodeName());
assertEquals("servlet", order.item(1).getNodeName());
}
/**
* Tests whether a filter is inserted before the comment node preceding a
* servlet definition.
*
* @throws Exception If an unexpected error occurs
*/
public void testElementOrderFilterBeforeServletWithComment()
throws Exception
{
String xml = "<web-app>"
+ " <!-- My servlets -->".trim()
+ " <servlet>".trim()
+ " <servlet-name>s1</servlet-name>".trim()
+ " <servlet-class>s1class</servlet-class>".trim()
+ " </servlet>".trim()
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addFilter(createFilterElement(doc, "f1", "f1class"));
NodeList order = doc.getDocumentElement().getChildNodes();
assertEquals("filter", order.item(0).getNodeName());
assertEquals("#comment", order.item(1).getNodeName());
assertEquals("servlet", order.item(2).getNodeName());
}
/**
* Tests whether a servlet is inserted after a filter.
*
* @throws Exception If an unexpected error occurs
*/
public void testElementOrderServletAfterFilter() throws Exception
{
String xml = "<web-app>"
+ " <filter>".trim()
+ " <filter-name>f1</filter-name>".trim()
+ " <filter-class>f1class</filter-class>".trim()
+ " </filter>".trim()
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addServlet(createServletElement(doc, "s1", "s1class"));
NodeList order = doc.getDocumentElement().getChildNodes();
assertEquals("filter", order.item(0).getNodeName());
assertEquals("servlet", order.item(1).getNodeName());
}
/**
* Tests whether a servlet is inserted after a filter that is preceded by
* a comment node.
*
* @throws Exception If an unexpected error occurs
*/
public void testElementOrderServletAfterFilterWithComment()
throws Exception
{
String xml = "<web-app>"
+ " <!-- My filters -->".trim()
+ " <filter>".trim()
+ " <filter-name>f1</filter-name>".trim()
+ " <filter-class>f1class</filter-class>".trim()
+ " </filter>".trim()
+ "</web-app>";
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes()));
WebXml webXml = new WebXml(doc);
webXml.addServlet(createServletElement(doc, "s1", "s1class"));
NodeList order = doc.getDocumentElement().getChildNodes();
assertEquals("#comment", order.item(0).getNodeName());
assertEquals("filter", order.item(1).getNodeName());
assertEquals("servlet", order.item(2).getNodeName());
}
// Private Methods ---------------------------------------------------------
/**
* Create a <code>filter</code> element containing the specified text in
* the child elements.
*
* @param theDocument The DOM document
* @param theFilterName The name of the filter
* @param theFilterClass The name of the filter implementation class
* @return The created element
*/
public Element createFilterElement(Document theDocument,
String theFilterName, String theFilterClass)
{
Element filterElement = theDocument.createElement("filter");
Element filterNameElement = theDocument.createElement("filter-name");
filterNameElement.appendChild(
theDocument.createTextNode(theFilterName));
filterElement.appendChild(filterNameElement);
Element filterClassElement = theDocument.createElement("filter-class");
filterClassElement.appendChild(
theDocument.createTextNode(theFilterClass));
filterElement.appendChild(filterClassElement);
return filterElement;
}
/**
* Create a <code>servlet</code> element containing the specified text in
* the child elements.
*
* @param theDocument The DOM document
* @param theServletName The name of the servlet
* @param theServletClass The name of the servlet implementation class
* @return The created element
*/
public Element createServletElement(Document theDocument,
String theServletName, String theServletClass)
{
Element filterElement = theDocument.createElement("servlet");
Element filterNameElement = theDocument.createElement("servlet-name");
filterNameElement.appendChild(
theDocument.createTextNode(theServletName));
filterElement.appendChild(filterNameElement);
Element filterClassElement = theDocument.createElement("servlet-class");
filterClassElement.appendChild(
theDocument.createTextNode(theServletClass));
filterElement.appendChild(filterClassElement);
return filterElement;
}
}
1.1 jakarta-cactus/integration/ant/src/test/org/apache/cactus/integration/ant/deployment/TestWebXmlMerger.java
Index: TestWebXmlMerger.java
===================================================================
/*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Cactus" and "Apache Software
* Foundation" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.cactus.integration.ant.deployment;
import java.io.ByteArrayInputStream;
import java.util.Iterator;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import junit.framework.TestCase;
import org.w3c.dom.Document;
/**
* Unit tests for {@link WebXmlMerger}.
*
* @author <a href="mailto:cmlenz@apache.org">Christopher Lenz</a>
*
* @version $Id: TestWebXmlMerger.java,v 1.1 2003/05/14 10:46:20 cmlenz Exp $
*/
public final class TestWebXmlMerger extends TestCase
{
/**
* The document builder factory.
*/
private DocumentBuilderFactory factory;
/**
* The JAXP document builder.
*/
private DocumentBuilder builder;
/**
* @see TestCase#TestCase(String)
*/
public TestWebXmlMerger(String theTestName)
{
super(theTestName);
}
/**
* @see TestCase#setUp
*/
public void setUp() throws ParserConfigurationException
{
factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(false);
builder = factory.newDocumentBuilder();
}
/**
* Tests whether a single filter is correctly merged into an empty
* descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testMergeOneFilterIntoEmptyDocument() throws Exception
{
String srcXml = "<web-app></web-app>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
String mergeXml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>fclass1</filter-class>"
+ " </filter>"
+ "</web-app>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeFilters(mergeWebXml);
assertTrue(srcWebXml.hasFilter("f1"));
}
/**
* Tests whether a single filter is correctly merged into a descriptor that
* already contains another filter.
*
* @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>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
String mergeXml = "<web-app>"
+ " <filter>"
+ " <filter-name>f2</filter-name>"
+ " <filter-class>fclass2</filter-class>"
+ " </filter>"
+ "</web-app>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeFilters(mergeWebXml);
assertTrue(srcWebXml.hasFilter("f1"));
assertTrue(srcWebXml.hasFilter("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.
*
* @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>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
String mergeXml = "<web-app>"
+ " <filter>"
+ " <filter-name>f1</filter-name>"
+ " <filter-class>fclass1</filter-class>"
+ " </filter>"
+ "</web-app>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeFilters(mergeWebXml);
assertTrue(srcWebXml.hasFilter("f1"));
}
/**
* Tests whether a filter initialization parameter is merged into the
* descriptor.
*
* @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>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
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>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeFilters(mergeWebXml);
assertTrue(srcWebXml.hasFilter("f1"));
Iterator initParams = srcWebXml.getFilterInitParamNames("f1");
assertEquals("f1param1", initParams.next());
assertTrue(!initParams.hasNext());
}
/**
* Tests whether a single filter is correctly merged into a descriptor that
* already contains multiple other filter definitions.
*
* @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>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
String mergeXml = "<web-app>"
+ " <filter>"
+ " <filter-name>f4</filter-name>"
+ " <filter-class>fclass4</filter-class>"
+ " </filter>"
+ "</web-app>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeFilters(mergeWebXml);
Iterator filterNames = srcWebXml.getFilterNames();
assertEquals("f1", filterNames.next());
assertEquals("f2", filterNames.next());
assertEquals("f3", filterNames.next());
assertEquals("f4", filterNames.next());
assertTrue(!filterNames.hasNext());
}
/**
* Tests whether multiple filters are correctly merged into an empty
* descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testMergeMultipleFiltersIntoEmptyDocument() throws Exception
{
String srcXml = "<web-app></web-app>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
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>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeFilters(mergeWebXml);
Iterator filterNames = srcWebXml.getFilterNames();
assertEquals("f1", filterNames.next());
assertEquals("f2", filterNames.next());
assertEquals("f3", filterNames.next());
assertTrue(!filterNames.hasNext());
}
/**
* Tests whether a filter with one mapping is correctly merged into an empty
* descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testMergeOneFilterWithOneMappingIntoEmptyDocument()
throws Exception
{
String srcXml = "<web-app></web-app>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
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>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeFilters(mergeWebXml);
assertTrue(srcWebXml.hasFilter("f1"));
Iterator filterMappings = srcWebXml.getFilterMappings("f1");
assertEquals("/f1mapping1", filterMappings.next());
assertTrue(!filterMappings.hasNext());
}
/**
* Tests wether a single filter with multiple mappings is correctly merged
* into an empty descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testMergeOneFilterWithMultipleMappingsIntoEmptyDocument()
throws Exception
{
String srcXml = "<web-app></web-app>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
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>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeFilters(mergeWebXml);
assertTrue(srcWebXml.hasFilter("f1"));
Iterator filterMappings = srcWebXml.getFilterMappings("f1");
assertEquals("/f1mapping1", filterMappings.next());
assertEquals("/f1mapping2", filterMappings.next());
assertEquals("/f1mapping3", filterMappings.next());
assertTrue(!filterMappings.hasNext());
}
/**
* Tests whether a single servlet is correctly merged into an empty
* descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testMergeOneServletIntoEmptyDocument() throws Exception
{
String srcXml = "<web-app></web-app>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
String mergeXml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <servlet-class>sclass1</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeServlets(mergeWebXml);
assertTrue(srcWebXml.hasServlet("s1"));
}
/**
* Tests whether a single servlet is correctly merged into a descriptor that
* already contains the definition of an other servlet.
*
* @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>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
String mergeXml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s2</servlet-name>"
+ " <servlet-class>sclass2</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeServlets(mergeWebXml);
assertTrue(srcWebXml.hasServlet("s1"));
assertTrue(srcWebXml.hasServlet("s2"));
}
/**
* Tests whether a single servlet is correctly merged into a descriptor that
* already contains the definition of a servlet with the same name.
*
* @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>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
String mergeXml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s1</servlet-name>"
+ " <servlet-class>sclass1</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeServlets(mergeWebXml);
assertTrue(srcWebXml.hasServlet("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.
*
* @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>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
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>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeServlets(mergeWebXml);
assertTrue(srcWebXml.hasServlet("s1"));
Iterator initParams = srcWebXml.getServletInitParamNames("s1");
assertEquals("s1param1", initParams.next());
assertTrue(!initParams.hasNext());
assertEquals("s1param1value",
srcWebXml.getServletInitParam("s1", "s1param1"));
}
/**
* Tests whether a single servlet is correctly merged into a descriptor with
* multiple servlets.
*
* @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>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
String mergeXml = "<web-app>"
+ " <servlet>"
+ " <servlet-name>s4</servlet-name>"
+ " <servlet-class>sclass4</servlet-class>"
+ " </servlet>"
+ "</web-app>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeServlets(mergeWebXml);
Iterator servletNames = srcWebXml.getServletNames();
assertEquals("s1", servletNames.next());
assertEquals("s2", servletNames.next());
assertEquals("s3", servletNames.next());
assertEquals("s4", servletNames.next());
assertTrue(!servletNames.hasNext());
}
/**
* Tests whether multiple servlet in the merge file are correctly inserted
* into an empty descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testMergeMultipleServletsIntoEmptyDocument() throws Exception
{
String srcXml = "<web-app></web-app>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
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>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeServlets(mergeWebXml);
Iterator servletNames = srcWebXml.getServletNames();
assertEquals("s1", servletNames.next());
assertEquals("s2", servletNames.next());
assertEquals("s3", servletNames.next());
assertTrue(!servletNames.hasNext());
}
/**
* Tests whether a single servlet with one mapping is correctly inserted
* into an empty descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testMergeOneServletWithOneMappingIntoEmptyDocument()
throws Exception
{
String srcXml = "<web-app></web-app>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
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>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeServlets(mergeWebXml);
assertTrue(srcWebXml.hasServlet("s1"));
Iterator servletMappings = srcWebXml.getServletMappings("s1");
assertEquals("/s1mapping1", servletMappings.next());
assertTrue(!servletMappings.hasNext());
}
/**
* Tests whether a single servlet with multiple mappings is correctly
* inserted into an empty descriptor.
*
* @throws Exception If an unexpected error occurs
*/
public void testMergeOneServletWithMultipleMappingsIntoEmptyDocument()
throws Exception
{
String srcXml = "<web-app></web-app>";
Document srcDoc =
builder.parse(new ByteArrayInputStream(srcXml.getBytes()));
WebXml srcWebXml = new WebXml(srcDoc);
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>";
Document mergeDoc =
builder.parse(new ByteArrayInputStream(mergeXml.getBytes()));
WebXml mergeWebXml = new WebXml(mergeDoc);
WebXmlMerger merger = new WebXmlMerger(srcWebXml);
merger.mergeServlets(mergeWebXml);
assertTrue(srcWebXml.hasServlet("s1"));
Iterator servletMappings = srcWebXml.getServletMappings("s1");
assertEquals("/s1mapping1", servletMappings.next());
assertEquals("/s1mapping2", servletMappings.next());
assertEquals("/s1mapping3", servletMappings.next());
assertTrue(!servletMappings.hasNext());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: cactus-dev-help@jakarta.apache.org