Author: markt
Date: Mon Jan 7 18:52:35 2013
New Revision: 1429956
URL: http://svn.apache.org/viewvc?rev=1429956&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/tc7.0.x/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/
- copied from r1429946,
tomcat/trunk/test/webapp-3.0-fragments-empty-absolute-ordering/
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/WebXml.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java
tomcat/tc7.0.x/trunk/test/org/apache/catalina/startup/TestContextConfig.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1429946
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/WebXml.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/WebXml.java?rev=1429956&r1=1429955&r2=1429956&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/WebXml.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/WebXml.java Mon Jan 7
18:52:35 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<String>();
}
+ }
+ public void addAbsoluteOrdering(String fragmentName) {
+ createAbsoluteOrdering();
absoluteOrdering.add(fragmentName);
}
public void addAbsoluteOrderingOthers() {
- if (absoluteOrdering == null) {
- absoluteOrdering = new LinkedHashSet<String>();
- }
+ createAbsoluteOrdering();
absoluteOrdering.add(ORDER_OTHERS);
}
public Set<String> getAbsoluteOrdering() {
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java?rev=1429956&r1=1429955&r2=1429956&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java Mon
Jan 7 18:52:35 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/tc7.0.x/trunk/test/org/apache/catalina/startup/TestContextConfig.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/catalina/startup/TestContextConfig.java?rev=1429956&r1=1429955&r2=1429956&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/test/org/apache/catalina/startup/TestContextConfig.java
(original)
+++
tomcat/tc7.0.x/trunk/test/org/apache/catalina/startup/TestContextConfig.java
Mon Jan 7 18:52:35 2013
@@ -29,11 +29,7 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import junit.framework.Assert;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
+import org.junit.Assert;
import org.junit.Test;
import org.apache.catalina.core.StandardContext;
@@ -67,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
@@ -88,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
@@ -105,15 +88,22 @@ public class TestContextConfig extends T
tomcat.start();
- ByteChunk res = new ByteChunk();
+ assertPageContains("/test/bug53574", "OK");
+ }
+
+ @Test
+ public void testBug54262() throws Exception {
+ Tomcat tomcat = getTomcatInstance();
- int rc = getUrl("http://localhost:" + getPort() +
- "/test/bug53574", res, null);
+ File appDir = new
File("test/webapp-3.0-fragments-empty-absolute-ordering");
+ tomcat.addWebapp(null, "/test", appDir.getAbsolutePath());
- Assert.assertEquals(HttpServletResponse.SC_OK, rc);
+ tomcat.start();
- String body = res.toString();
- Assert.assertTrue(body.contains("OK"));
+ assertPageContains("/test/resourceA.jsp",
+ "resourceA.jsp in resources.jar");
+ assertPageContains("/test/resources/HelloWorldExample",
+ null, HttpServletResponse.SC_NOT_FOUND);
}
private static class CustomDefaultServletSCI
@@ -146,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);
+ }
+ }
}
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1429956&r1=1429955&r2=1429956&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Jan 7 18:52:35 2013
@@ -93,6 +93,12 @@
first WebSocket message from the client to the server. (markt)
</add>
<fix>
+ <bug>54262</bug>: Ensure that an empty
+ <code><absolute-ordering /></code> element in the main web.xml
+ file disables scanning for web fragments. Based on a patch by Violeta
+ Georgieva. (markt)
+ </fix>
+ <fix>
<bug>54371</bug>: Prevent exceptions when processing web fragments for
unexpanded WAR files when the context path contains characters that
need to be encoded in URLs such as spaces. Patch provided by Polina
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]