You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by al...@apache.org on 2007/05/22 15:35:15 UTC

svn commit: r540579 - /incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java

Author: almaw
Date: Tue May 22 06:35:15 2007
New Revision: 540579

URL: http://svn.apache.org/viewvc?view=rev&rev=540579
Log:
WICKET-567 - relative paths generated incorrectly for HeaderContributor for mounted page

Modified:
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?view=diff&rev=540579&r1=540578&r2=540579
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Tue May 22 06:35:15 2007
@@ -148,21 +148,35 @@
 		{
 			return relativePathPrefixToContextRoot;
 		}
+		
+		// Prepend to get back to the wicket handler.
 		String tmp = getRelativePathPrefixToWicketHandler();
-		String servletPath = getServletPath();
-		if (servletPath == null || servletPath.length() == 0)
+		PrependingStringBuffer prepender = new PrependingStringBuffer(tmp);
+		
+		String path = getPath();
+		if (path == null || path.length() == 0)
 		{
-			return tmp;
+			path = "";
 		}
-
-		PrependingStringBuffer prepender = new PrependingStringBuffer(tmp);
-		for (int i = 1; i < servletPath.length(); i++)
+		
+		// Now prepend to get back from the wicket handler to the root context.
+		
+		// Find the absolute path for the wicket filter/servlet
+		String wicketPath = "";
+		
+		// We're running as a filter.
+		String servletPath = getServletPath();
+		if (servletPath.endsWith(path)) {
+			wicketPath = servletPath.substring(0, servletPath.length() - path.length() - 1);
+		}
+		// We're running as a servlet
+		else {
+			wicketPath = servletPath;
+		}
+		
+		for (int i = 0; i < wicketPath.length(); i++)
 		{
-			if (servletPath.charAt(i) == '?')
-			{
-				break;
-			}
-			if (servletPath.charAt(i) == '/')
+			if (wicketPath.charAt(i) == '/')
 			{
 				prepender.prepend("../");
 			}