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("../");
                        }


Reply via email to