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