Author: ivaynberg
Date: Mon Aug 15 05:01:27 2011
New Revision: 1157711

URL: http://svn.apache.org/viewvc?rev=1157711&view=rev
Log:
WICKET-3963, WICKET-3964

Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
    
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/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.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/MultiRequestCycleListenerCallOrderTest.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/ajax/AjaxRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=1157711&r1=1157710&r2=1157711&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
 Mon Aug 15 05:01:27 2011
@@ -1363,4 +1363,9 @@ public class AjaxRequestTarget implement
        {
                return page.getPageParameters();
        }
+
+       public final boolean isPageInstanceCreated()
+       {
+               return true;
+       }
 }

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=1157711&r1=1157710&r2=1157711&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
 Mon Aug 15 05:01:27 2011
@@ -53,4 +53,8 @@ public abstract class AbstractRequestCyc
                Exception exception)
        {
        }
+
+       public void onRequestHandlerExecuted(RequestCycle cycle, 
IRequestHandler handler)
+       {
+       }
 }

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=1157711&r1=1157710&r2=1157711&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
 Mon Aug 15 05:01:27 2011
@@ -164,4 +164,13 @@ public interface IRequestCycleListener
         */
        void onExceptionRequestHandlerResolved(RequestCycle cycle, 
IRequestHandler handler,
                Exception exception);
+
+       /**
+        * Called after an {@link IRequestHandler} has been executed. If the 
execution resulted in an
+        * exception this method will not be called for that particular {@link 
IRequestHandler}.
+        * 
+        * @param cycle
+        * @param handler
+        */
+       void onRequestHandlerExecuted(RequestCycle cycle, IRequestHandler 
handler);
 }

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=1157711&r1=1157710&r2=1157711&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
 Mon Aug 15 05:01:27 2011
@@ -208,6 +208,7 @@ public class RequestCycle implements IRe
                        {
                                listeners.onRequestHandlerResolved(this, 
handler);
                                requestHandlerExecutor.execute(handler);
+                               listeners.onRequestHandlerExecuted(this, 
handler);
                                return true;
                        }
 
@@ -223,6 +224,7 @@ public class RequestCycle implements IRe
                        {
                                
listeners.onExceptionRequestHandlerResolved(this, handler, e);
                                executeExceptionRequestHandler(handler, 
getExceptionRetryCount());
+                               listeners.onRequestHandlerExecuted(this, 
handler);
                        }
                        else
                        {

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=1157711&r1=1157710&r2=1157711&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
 Mon Aug 15 05:01:27 2011
@@ -175,4 +175,15 @@ public class RequestCycleListenerCollect
                        }
                });
        }
+
+       public void onRequestHandlerExecuted(final RequestCycle cycle, final 
IRequestHandler handler)
+       {
+               notify(new INotifier<IRequestCycleListener>()
+               {
+                       public void notify(IRequestCycleListener listener)
+                       {
+                               listener.onRequestHandlerExecuted(cycle, 
handler);
+                       }
+               });
+       }
 }

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java?rev=1157711&r1=1157710&r2=1157711&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
 Mon Aug 15 05:01:27 2011
@@ -148,4 +148,9 @@ public class BookmarkableListenerInterfa
        {
                // nothing to do here, this handler is only used to generate 
URLs
        }
+
+       public final boolean isPageInstanceCreated()
+       {
+               return !pageComponentProvider.isNewPageInstance();
+       }
 }

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java?rev=1157711&r1=1157710&r2=1157711&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java
 Mon Aug 15 05:01:27 2011
@@ -38,4 +38,12 @@ public interface IPageRequestHandler ext
         * @return page id
         */
        Integer getPageId();
+
+       /**
+        * Checks if the page instance is already created or if it will be 
created when
+        * {@link #getPage()} is called
+        * 
+        * @return {@code true} iff page instance is not yet created
+        */
+       boolean isPageInstanceCreated();
 }

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java?rev=1157711&r1=1157710&r2=1157711&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
 Mon Aug 15 05:01:27 2011
@@ -192,4 +192,9 @@ public class ListenerInterfaceRequestHan
 
                }
        }
+
+       public final boolean isPageInstanceCreated()
+       {
+               return !pageComponentProvider.isNewPageInstance();
+       }
 }

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.java?rev=1157711&r1=1157710&r2=1157711&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.java
 Mon Aug 15 05:01:27 2011
@@ -146,4 +146,9 @@ public class RenderPageRequestHandler im
                PageRenderer renderer = 
Application.get().getPageRendererProvider().get(this);
                renderer.respond((RequestCycle)requestCycle);
        }
+
+       public final boolean isPageInstanceCreated()
+       {
+               return !pageProvider.isNewPageInstance();
+       }
 }

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=1157711&r1=1157710&r2=1157711&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
 Mon Aug 15 05:01:27 2011
@@ -95,5 +95,10 @@ class MultiRequestCycleListenerCallOrder
                {
                        return "Listener " + name;
                }
+
+               public void onRequestHandlerExecuted(RequestCycle cycle, 
IRequestHandler handler)
+               {
+                       callSequence.add(name + ".onRequestHandlerExecuted");
+               }
        }
 }

Modified: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderTest.java?rev=1157711&r1=1157710&r2=1157711&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderTest.java
 (original)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/MultiRequestCycleListenerCallOrderTest.java
 Mon Aug 15 05:01:27 2011
@@ -66,9 +66,11 @@ public class MultiRequestCycleListenerCa
 
                List<String> primaryRequest = asList("first.onBeginRequest", 
"second.onBeginRequest",
                        "first.onRequestHandlerResolved", 
"second.onRequestHandlerResolved",
+                       "first.onRequestHandlerExecuted", 
"second.onRequestHandlerExecuted",
                        "second.onEndRequest", "first.onEndRequest", 
"second.onDetach", "first.onDetach");
                List<String> redirectRequest = asList("first.onBeginRequest", 
"second.onBeginRequest",
                        "first.onRequestHandlerResolved", 
"second.onRequestHandlerResolved",
+                       "first.onRequestHandlerExecuted", 
"second.onRequestHandlerExecuted",
                        "second.onEndRequest", "first.onEndRequest", 
"second.onDetach", "first.onDetach");
 
                List<String> expected = new ArrayList<String>();
@@ -89,9 +91,11 @@ public class MultiRequestCycleListenerCa
 
                List<String> primaryRequest = asList("first.onBeginRequest", 
"second.onBeginRequest",
                        "first.onRequestHandlerResolved", 
"second.onRequestHandlerResolved",
+                       "first.onRequestHandlerExecuted", 
"second.onRequestHandlerExecuted",
                        "second.onEndRequest", "first.onEndRequest", 
"second.onDetach", "first.onDetach");
                List<String> redirectRequest = asList("first.onBeginRequest", 
"second.onBeginRequest",
                        "first.onRequestHandlerResolved", 
"second.onRequestHandlerResolved",
+                       "first.onRequestHandlerExecuted", 
"second.onRequestHandlerExecuted",
                        "second.onEndRequest", "first.onEndRequest", 
"second.onDetach", "first.onDetach");
 
                List<String> expected = new ArrayList<String>();
@@ -117,9 +121,11 @@ public class MultiRequestCycleListenerCa
                List<String> primaryRequest = asList("first.onBeginRequest", 
"second.onBeginRequest",
                        "first.onRequestHandlerResolved", 
"second.onRequestHandlerResolved",
                        "first.onRequestHandlerScheduled", 
"second.onRequestHandlerScheduled",
+                       "first.onRequestHandlerExecuted", 
"second.onRequestHandlerExecuted",
                        "second.onEndRequest", "first.onEndRequest", 
"second.onDetach", "first.onDetach");
                List<String> redirectRequest = asList("first.onBeginRequest", 
"second.onBeginRequest",
                        "first.onRequestHandlerResolved", 
"second.onRequestHandlerResolved",
+                       "first.onRequestHandlerExecuted", 
"second.onRequestHandlerExecuted",
                        "second.onEndRequest", "first.onEndRequest", 
"second.onDetach", "first.onDetach");
 
                List<String> expected = new ArrayList<String>();
@@ -146,6 +152,7 @@ public class MultiRequestCycleListenerCa
                List<String> primaryRequest = asList("first.onBeginRequest", 
"second.onBeginRequest",
                        "first.onRequestHandlerResolved", 
"second.onRequestHandlerResolved",
                        "first.onRequestHandlerScheduled", 
"second.onRequestHandlerScheduled",
+                       "first.onRequestHandlerExecuted", 
"second.onRequestHandlerExecuted",
                        "second.onEndRequest", "first.onEndRequest", 
"second.onDetach", "first.onDetach");
 
                // with ajax requests we don't expect a redirect

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=1157711&r1=1157710&r2=1157711&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
 Mon Aug 15 05:01:27 2011
@@ -284,7 +284,7 @@ public class RequestCycleListenerTest ex
        {
 
                private int begins, ends, exceptions, detachesnotified, 
resolutions, exceptionResolutions,
-                       schedules = 0;
+                       schedules, executions = 0;
 
                public IRequestHandler onException(final RequestCycle cycle, 
Exception ex)
                {
@@ -331,5 +331,10 @@ public class RequestCycleListenerTest ex
                        assertEquals(exceptions, this.exceptions);
                        assertEquals(detachesnotified, this.detachesnotified);
                }
+
+               public void onRequestHandlerExecuted(RequestCycle cycle, 
IRequestHandler handler)
+               {
+                       executions++;
+               }
        }
 }


Reply via email to