Author: ivaynberg
Date: Wed Aug 17 03:10:30 2011
New Revision: 1158495

URL: http://svn.apache.org/viewvc?rev=1158495&view=rev
Log:

Issue: WICKET-3968

Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/AbstractRequestCycleListener.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/IRequestCycleListener.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycleListenerCollection.java
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/AbstractRequestCycleListener.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/AbstractRequestCycleListener.java?rev=1158495&r1=1158494&r2=1158495&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/AbstractRequestCycleListener.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/AbstractRequestCycleListener.java
 Wed Aug 17 03:10:30 2011
@@ -17,6 +17,7 @@
 package org.apache.wicket.request.cycle;
 
 import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.Url;
 
 /**
  * Empty implementation of an {@link IRequestCycleListener} useful as a 
starting point for your own
@@ -57,4 +58,8 @@ public abstract class AbstractRequestCyc
        public void onRequestHandlerExecuted(RequestCycle cycle, 
IRequestHandler handler)
        {
        }
+
+       public void onUrlMapped(RequestCycle cycle, IRequestHandler handler, 
Url url)
+       {
+       }
 }

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/IRequestCycleListener.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/IRequestCycleListener.java?rev=1158495&r1=1158494&r2=1158495&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/IRequestCycleListener.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/IRequestCycleListener.java
 Wed Aug 17 03:10:30 2011
@@ -18,6 +18,7 @@ package org.apache.wicket.request.cycle;
 
 import org.apache.wicket.Application;
 import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.Url;
 
 /**
  * A callback interface for various methods in the request cycle. If you are 
creating a framework
@@ -173,4 +174,14 @@ public interface IRequestCycleListener
         * @param handler
         */
        void onRequestHandlerExecuted(RequestCycle cycle, IRequestHandler 
handler);
+
+       /**
+        * Called after a Url is generated for a {@link IRequestHandler}. This 
method can be used to
+        * modify generated urls, for example query parameters can be added.
+        * 
+        * @param cycle
+        * @param handler
+        * @param url
+        */
+       void onUrlMapped(RequestCycle cycle, IRequestHandler handler, Url url);
 }

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java?rev=1158495&r1=1158494&r2=1158495&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
 Wed Aug 17 03:10:30 2011
@@ -371,7 +371,9 @@ public class RequestCycle implements IRe
         */
        public Url mapUrlFor(IRequestHandler handler)
        {
-               return requestMapper.mapHandler(handler);
+               final Url url = requestMapper.mapHandler(handler);
+               listeners.onUrlMapped(this, handler, url);
+               return url;
        }
 
        /**

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycleListenerCollection.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycleListenerCollection.java?rev=1158495&r1=1158494&r2=1158495&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycleListenerCollection.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycleListenerCollection.java
 Wed Aug 17 03:10:30 2011
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.Url;
 import org.apache.wicket.util.listener.ListenerCollection;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -186,4 +187,16 @@ public class RequestCycleListenerCollect
                        }
                });
        }
+
+       public void onUrlMapped(final RequestCycle cycle, final IRequestHandler 
handler, final Url url)
+       {
+               notify(new INotifier<IRequestCycleListener>()
+               {
+                       public void notify(IRequestCycleListener listener)
+                       {
+                               listener.onUrlMapped(cycle, handler, url);
+                       }
+               });
+
+       }
 }

Modified: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java?rev=1158495&r1=1158494&r2=1158495&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java
 (original)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderApplication.java
 Wed Aug 17 03:10:30 2011
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.Url;
 
 class MultiRequestCycleListenerCallOrderApplication extends WebApplication
 {
@@ -100,5 +101,9 @@ class MultiRequestCycleListenerCallOrder
                {
                        callSequence.add(name + ".onRequestHandlerExecuted");
                }
+
+               public void onUrlMapped(RequestCycle cycle, IRequestHandler 
handler, Url url)
+               {
+               }
        }
 }

Modified: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java?rev=1158495&r1=1158494&r2=1158495&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
 (original)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/RequestCycleListenerTest.java
 Wed Aug 17 03:10:30 2011
@@ -336,5 +336,9 @@ public class RequestCycleListenerTest ex
                {
                        executions++;
                }
+
+               public void onUrlMapped(RequestCycle cycle, IRequestHandler 
handler, Url url)
+               {
+               }
        }
 }


Reply via email to