You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/03/13 17:07:46 UTC
svn commit: r517746 - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java
test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java
Author: hlship
Date: Tue Mar 13 09:07:45 2007
New Revision: 517746
URL: http://svn.apache.org/viewvc?view=rev&rev=517746
Log:
TAPESTRY-1343: Under Tomcat, a root path URL such as http://.../context (without a trailing slash) causes a StringIndexOutOfBoundsException inside PageRenderDispatcher
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java?view=diff&rev=517746&r1=517745&r2=517746
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java Tue Mar 13 09:07:45 2007
@@ -54,6 +54,10 @@
String path = request.getPath();
+ // TAPESTRY-1343: This can happen in Tomcat (but not in Jetty) for URL such as
+ // http://.../context (with no trailing slash).
+ if (path.equals("")) return false;
+
int searchStart = 1;
while (true)
@@ -89,14 +93,12 @@
context,
renderer);
- if (responseGenerator != null)
- responseGenerator.sendClientResponse(response);
+ if (responseGenerator != null) responseGenerator.sendClientResponse(response);
return true;
}
- if (atEnd)
- return false;
+ if (atEnd) return false;
// Advance to the next slash within the path.
@@ -114,8 +116,7 @@
*/
private String[] convertActivationContext(String extraPath)
{
- if(extraPath.length() == 0)
- return new String[0];
+ if (extraPath.length() == 0) return new String[0];
String[] context = extraPath.split("/");
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java?view=diff&rev=517746&r1=517745&r2=517746
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java Tue Mar 13 09:07:45 2007
@@ -55,6 +55,27 @@
verify();
}
+ // TAPESTRY-1343
+ @Test
+ public void empty_path() throws Exception
+ {
+ ComponentClassResolver resolver = newComponentClassResolver();
+ PageResponseRenderer renderer = newPageResponseRenderer();
+ PageLinkHandler handler = newMock(PageLinkHandler.class);
+ Request request = newRequest();
+ Response response = newResponse();
+
+ train_getPath(request, "");
+
+ replay();
+
+ Dispatcher d = new PageRenderDispatcher(resolver, handler, renderer);
+
+ assertFalse(d.dispatch(request, response));
+
+ verify();
+ }
+
@Test
public void no_extra_context_without_final_slash() throws Exception
{