Author: markt Date: Mon Jan 7 18:44:22 2013 New Revision: 1429946 URL: http://svn.apache.org/viewvc?rev=1429946&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54262 An empty <absolute-ordering /> should turn off all web-fragments. Based on a patch by Violeta Georgieva.
Added: tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/ tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/ tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/lib/ tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/lib/resources.jar (with props) tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/web.xml (with props) Modified: tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java Modified: tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java?rev=1429946&r1=1429945&r2=1429946&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java (original) +++ tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java Mon Jan 7 18:44:22 2013 @@ -76,16 +76,17 @@ public class WebXml { // web.xml only elements // Absolute Ordering private Set<String> absoluteOrdering = null; - public void addAbsoluteOrdering(String fragmentName) { + public void createAbsoluteOrdering() { if (absoluteOrdering == null) { absoluteOrdering = new LinkedHashSet<>(); } + } + public void addAbsoluteOrdering(String fragmentName) { + createAbsoluteOrdering(); absoluteOrdering.add(fragmentName); } public void addAbsoluteOrderingOthers() { - if (absoluteOrdering == null) { - absoluteOrdering = new LinkedHashSet<>(); - } + createAbsoluteOrdering(); absoluteOrdering.add(ORDER_OTHERS); } public Set<String> getAbsoluteOrdering() { Modified: tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java?rev=1429946&r1=1429945&r2=1429946&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/WebRuleSet.java Mon Jan 7 18:44:22 2013 @@ -1131,6 +1131,12 @@ final class AbsoluteOrderingRule extends "webRuleSet.absoluteOrderingCount")); } else { isAbsoluteOrderingSet = true; + WebXml webXml = (WebXml) digester.peek(); + webXml.createAbsoluteOrdering(); + if (digester.getLogger().isDebugEnabled()) { + digester.getLogger().debug( + webXml.getClass().getName() + ".setAbsoluteOrdering()"); + } } } } Modified: tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java?rev=1429946&r1=1429945&r2=1429946&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java (original) +++ tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java Mon Jan 7 18:44:22 2013 @@ -29,9 +29,6 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - import org.junit.Assert; import org.junit.Test; @@ -66,15 +63,7 @@ public class TestContextConfig extends T tomcat.start(); - ByteChunk res = new ByteChunk(); - - int rc =getUrl("http://localhost:" + getPort() + "/test", res, null); - - // Check return code - assertEquals(HttpServletResponse.SC_OK, rc); - - // Check context - assertEquals("OK - Custom default Servlet", res.toString()); + assertPageContains("/test", "OK - Custom default Servlet"); } @Test @@ -87,12 +76,7 @@ public class TestContextConfig extends T tomcat.start(); - ByteChunk bc = new ByteChunk(); - int rc = getUrl("http://localhost:" + getPort() + - "/test/bug51396.jsp", bc, null); - - assertEquals(HttpServletResponse.SC_OK, rc); - assertTrue(bc.toString().contains("<p>OK</p>")); + assertPageContains("/test/bug51396.jsp", "<p>OK</p>"); } @Test @@ -104,15 +88,22 @@ public class TestContextConfig extends T tomcat.start(); - ByteChunk res = new ByteChunk(); + assertPageContains("/test/bug53574", "OK"); + } - int rc = getUrl("http://localhost:" + getPort() + - "/test/bug53574", res, null); + @Test + public void testBug54262() throws Exception { + Tomcat tomcat = getTomcatInstance(); - Assert.assertEquals(HttpServletResponse.SC_OK, rc); + File appDir = new File("test/webapp-3.0-fragments-empty-absolute-ordering"); + tomcat.addWebapp(null, "/test", appDir.getAbsolutePath()); - String body = res.toString(); - Assert.assertTrue(body.contains("OK")); + tomcat.start(); + + assertPageContains("/test/resourceA.jsp", + "resourceA.jsp in resources.jar"); + assertPageContains("/test/resources/HelloWorldExample", + null, HttpServletResponse.SC_NOT_FOUND); } private static class CustomDefaultServletSCI @@ -145,4 +136,22 @@ public class TestContextConfig extends T resp.getWriter().print("OK - Custom default Servlet"); } } + + private void assertPageContains(String pageUrl, String expectedBody) + throws IOException { + assertPageContains(pageUrl, expectedBody, HttpServletResponse.SC_OK); + } + + private void assertPageContains(String pageUrl, String expectedBody, + int expectedStatus) throws IOException { + ByteChunk res = new ByteChunk(); + int sc = getUrl("http://localhost:" + getPort() + pageUrl, res, null); + + Assert.assertEquals(expectedStatus, sc); + + if (expectedStatus == HttpServletResponse.SC_OK) { + String result = res.toString(); + Assert.assertTrue(result, result.indexOf(expectedBody) > -1); + } + } } Added: tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/lib/resources.jar URL: http://svn.apache.org/viewvc/tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/lib/resources.jar?rev=1429946&view=auto ============================================================================== Binary file - no diff available. Propchange: tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/lib/resources.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/web.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/web.xml?rev=1429946&view=auto ============================================================================== --- tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/web.xml (added) +++ tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/web.xml Mon Jan 7 18:44:22 2013 @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You 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. +--> +<web-app xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" + version="3.0" + metadata-complete="false"> + + <display-name>Tomcat Test Application</display-name> + <description> + Used as part of the Tomcat unit tests when a full web application is + required. + </description> + + <absolute-ordering/> + +</web-app> \ No newline at end of file Propchange: tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/WEB-INF/web.xml ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org