Author: jcompagner
Date: Mon May 14 03:28:40 2007
New Revision: 537771

URL: http://svn.apache.org/viewvc?view=rev&rev=537771
Log:
relative urls for a bookmarkable request that will do a redirect to a wicket 
page fix.

Modified:
    
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
    
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/WebRequestCycle.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java?view=diff&rev=537771&r1=537770&r2=537771
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
 Mon May 14 03:28:40 2007
@@ -26,6 +26,7 @@
 import org.apache.wicket.Session;
 import org.apache.wicket.markup.html.pages.BrowserInfoPage;
 import org.apache.wicket.protocol.http.request.WebClientInfo;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
 import org.apache.wicket.request.ClientInfo;
 import org.apache.wicket.request.IRequestCycleProcessor;
 import org.apache.wicket.settings.IRequestCycleSettings;
@@ -138,6 +139,13 @@
                        final WebResponse currentResponse = getWebResponse();
                        try
                        {
+                               redirectUrl = 
page.urlFor(IRedirectListener.INTERFACE).toString();
+                               if (getWebRequest() instanceof 
ServletWebRequest)
+                               {
+                                       // Get the redirect url and set it in 
the ServletWebRequest
+                                       // so that it can be used for relative 
url calculation.
+                                       
((ServletWebRequest)getWebRequest()).setWicketRedirectUrl(redirectUrl.replaceAll("../",
 ""));   
+                               }
                                // create the redirect response.
                                final BufferedHttpServletResponse 
servletResponse = new BufferedHttpServletResponse(
                                                
currentResponse.getHttpServletResponse());
@@ -180,7 +188,6 @@
                                        // here on.
                                        servletResponse.close();
 
-                                       redirectUrl = 
page.urlFor(IRedirectListener.INTERFACE).toString();
                                        int index = redirectUrl.indexOf("?");
                                        String sessionId = 
getWebRequest().getHttpServletRequest().getSession(true)
                                                        .getId();

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=537771&r1=537770&r2=537771
==============================================================================
--- 
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
 Mon May 14 03:28:40 2007
@@ -53,6 +53,8 @@
        private String relativePathPrefixToWicketHandler;
        private String relativePathPrefixToContextRoot;
        private Map parameterMap;
+
+       private String wicketRedirectUrl;
        
        /**
         * Protected constructor.
@@ -213,7 +215,7 @@
 
                // This gives us a context-relative path for 
RequestDispatcher.forward stuff, with a leading slash.
                String forwardUrl = 
(String)httpRequest.getAttribute("javax.servlet.forward.servlet_path");
-
+               
                if (errorUrl != null)
                {
                        // Strip off context path from front of URI.
@@ -243,6 +245,10 @@
                        // Strip off leading slash, if forwardUrl has any 
length.
                        relativeUrl = forwardUrl.substring(relativeUrl.length() 
> 0 ? 1 : 0);
                }
+               else if (wicketRedirectUrl != null)
+               {
+                       relativeUrl = wicketRedirectUrl;
+               }
 
                if (depthRelativeToWicketHandler == -1)
                {
@@ -394,5 +400,21 @@
                                + httpServletRequest.getRequestURI() + ", 
servletPath = "
                                + httpServletRequest.getServletPath() + ", 
pathTranslated = "
                                + httpServletRequest.getPathTranslated() + "]";
+       }
+
+       /**
+        * Set the redirect url where wicket will redirect to for the next page
+        * 
+        * @param wicketRedirectUrl 
+        */
+       public void setWicketRedirectUrl(String wicketRedirectUrl)
+       {
+               this.wicketRedirectUrl = wicketRedirectUrl;
+               depthRelativeToWicketHandler = -1;
+               relativePathPrefixToContextRoot = null;
+               relativePathPrefixToWicketHandler = null;
+               
+               
getRequestParameters().setUrlDepth(getDepthRelativeToWicketHandler());
+               
        }
 }


Reply via email to