Author: ivaynberg
Date: Thu Oct 14 07:53:26 2010
New Revision: 1022403

URL: http://svn.apache.org/viewvc?rev=1022403&view=rev
Log:
better method name and javadoc

Modified:
    
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Request.java
    
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebRequest.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockWebRequest.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java

Modified: 
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Request.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Request.java?rev=1022403&r1=1022402&r2=1022403&view=diff
==============================================================================
--- 
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Request.java
 (original)
+++ 
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Request.java
 Thu Oct 14 07:53:26 2010
@@ -38,19 +38,68 @@ public abstract class Request
        public abstract Url getUrl();
 
        /**
-        * Returns the base URL relative to which this request should be 
processed.
+        * Returns the url against which the client, usually the browser, will 
resolve relative urls in
+        * the rendered markup. If the client is a browser this is the url in 
the browser's address bar.
         * 
-        * If the current requested url is:
+        * <p>
+        * Under normal circumstances the client and request ({...@link 
#getUrl()}) urls are the same.
+        * Handling an Ajax request, however, is a good example of when they 
may be different.
+        * Technologies such as XHR are free to request whatever url they wish 
<strong>without
+        * modifying</strong> the client url; however, any produced urls will 
be evaluated by the client
+        * against the client url - not against the request url.
+        * </p>
+        * <p>
+        * Lets take a simple example: <br>
+        * 
+        * Suppose we are on a client detail page. This page contains an Ajax 
link which opens a list of
+        * client's orders. Each order has a link that goes to the order detail 
page.
+        * 
+        * The client detail page is located at
+        * 
+        * <pre>
+        * /detail/customer/15
+        * </pre>
+        * 
+        * and the order detail page is located at
+        * 
+        * <pre>
+        * /order/22
+        * </pre>
+        * 
+        * The Ajax link which renders the detail section is located at
+        * 
+        * <pre>
+        *  /detail/wicket?page 3
+        * </pre>
+        * 
+        * Lets run through the execution and see what happens when the XHR 
request is processed:
         * 
         * <pre>
-        * /con/text/fil/ter/wicket/page?1&foo=bar
+        * request 1: /details/customer/15
+        * client url: details/customer/15 (the url in the browser's address 
bar)
+        * request url: details/customer/15
+        * Wicket renders relative Ajax details anchor as ../../wicket/page?3  
+        * 
+        * ../../wicket/page?3 resolved against current client url 
details/customer/15 yields:
+        * request 2: /wicket/page?3
+        * client url: customer/15 (unchanged since XHRs requests dont change 
it)
+        * request url: wicket/ajax/page?3
+        * 
+        * now Wicket has to render a relative url to /details/order/22. If 
Wicket renders 
+        * it against the request url it will be: ../order/22, and later 
evaluated on the
+        * client will result in /customer/order/22 which is incorrect.
         * </pre>
         * 
-        * the relative url is: </pre> wicket/page </pre>
+        * This is why implementations of {...@link Request} must track the 
client url, so that relative
+        * urls can be rendered against the same url they will be evaluated 
against on the client -
+        * which is not always the same as the request url. For example, 
Wicket's Ajax implementation
+        * always sends the current client url in a header along with the XHR 
request so that Wicket can
+        * correctly render relative urls against it.
+        * </p>
         * 
-        * @return ajax base url
+        * @return client url
         */
-       public abstract Url getBaseUrl();
+       public abstract Url getClientUrl();
 
        /**
         * In case this request has been created using {...@link 
#cloneWithUrl(Url)}, this method should
@@ -136,7 +185,7 @@ public abstract class Request
                        }
 
                        @Override
-                       public Url getBaseUrl()
+                       public Url getClientUrl()
                        {
                                return getUrl();
                        }

Modified: 
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebRequest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebRequest.java?rev=1022403&r1=1022402&r2=1022403&view=diff
==============================================================================
--- 
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebRequest.java
 (original)
+++ 
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/http/WebRequest.java
 Thu Oct 14 07:53:26 2010
@@ -186,9 +186,9 @@ public abstract class WebRequest extends
                        }
 
                        @Override
-                       public Url getBaseUrl()
+                       public Url getClientUrl()
                        {
-                               return WebRequest.this.getBaseUrl();
+                               return WebRequest.this.getClientUrl();
                        }
                };
        }

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockWebRequest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockWebRequest.java?rev=1022403&r1=1022402&r2=1022403&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockWebRequest.java 
(original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockWebRequest.java 
Thu Oct 14 07:53:26 2010
@@ -252,7 +252,7 @@ public class MockWebRequest extends WebR
        }
 
        @Override
-       public Url getBaseUrl()
+       public Url getClientUrl()
        {
                return new Url(url.getSegments(), Collections.<QueryParameter> 
emptyList());
        }

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?rev=1022403&r1=1022402&r2=1022403&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
 Thu Oct 14 07:53:26 2010
@@ -118,10 +118,10 @@ public class ServletWebRequest extends W
         * 
         * <pre>
         * wicket / bookmarkab
-        * @see org.apache.wicket.request.Request#getBaseUrl()
+        * @see org.apache.wicket.request.Request#getClientUrl()
         */
        @Override
-       public Url getBaseUrl()
+       public Url getClientUrl()
        {
                if (!isAjax())
                {

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java?rev=1022403&r1=1022402&r2=1022403&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
 Thu Oct 14 07:53:26 2010
@@ -216,7 +216,7 @@ public class ServletWebResponse extends 
 
                        final Url current;
 
-                       current = webRequest.getBaseUrl();
+                       current = webRequest.getClientUrl();
 
                        Url append = Url.parse(url, charset);
                        current.concatSegments(append.getSegments());

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java?rev=1022403&r1=1022402&r2=1022403&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
 Thu Oct 14 07:53:26 2010
@@ -154,7 +154,7 @@ public class RequestCycle extends Reques
        protected UrlRenderer newUrlRenderer()
        {
                // All URLs will be rendered relative to current request (can 
be overriden afterwards)
-               return new UrlRenderer(getRequest().getBaseUrl());
+               return new UrlRenderer(getRequest().getClientUrl());
        }
 
        /**

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java?rev=1022403&r1=1022402&r2=1022403&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
 Thu Oct 14 07:53:26 2010
@@ -71,7 +71,7 @@ public abstract class AbstractMapperTest
                        }
 
                        @Override
-                       public Url getBaseUrl()
+                       public Url getClientUrl()
                        {
                                return url;
                        }

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java?rev=1022403&r1=1022402&r2=1022403&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java
 Thu Oct 14 07:53:26 2010
@@ -60,7 +60,7 @@ public class ResourceMapperTest extends 
                        }
 
                        @Override
-                       public Url getBaseUrl()
+                       public Url getClientUrl()
                        {
                                return getUrl();
                        }


Reply via email to