WICKET-6001 Exception raised while refreshing a page with queued components 
missing in the markup


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/67b53cf0
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/67b53cf0
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/67b53cf0

Branch: refs/heads/lambdas
Commit: 67b53cf0de66fb8f41a10831e96168b29ab240f2
Parents: a9e79e8
Author: Andrea Del Bene <[email protected]>
Authored: Mon Nov 16 12:58:59 2015 +0100
Committer: Andrea Del Bene <[email protected]>
Committed: Mon Nov 16 12:58:59 2015 +0100

----------------------------------------------------------------------
 .../wicket/request/cycle/RequestCycle.java      | 27 ++++++++++++++++++++
 .../wicket/request/RequestHandlerStack.java     |  4 +++
 2 files changed, 31 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/67b53cf0/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java 
b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
index 04baf9e..f0e4ff0 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
@@ -640,6 +640,10 @@ public class RequestCycle implements IRequestCycle, 
IEventSink
                {
                        requestHandlerExecutor.detach();
                }
+               catch (RuntimeException exception)
+               {
+                       handleDetachException(exception);
+               }
                finally
                {
                        listeners.onDetach(this);
@@ -653,6 +657,29 @@ public class RequestCycle implements IRequestCycle, 
IEventSink
        }
 
        /**
+        * Called to handle a {@link java.lang.RuntimeException} that might be 
+        * thrown during detaching phase. 
+        * 
+        * @param exception
+        */
+       private void handleDetachException(RuntimeException exception) 
+       {
+               boolean isBufferedResponse = Application.get().
+                               getRequestCycleSettings().getBufferResponse();
+               
+               //if application is using a buffered response strategy,
+               //then we display exception to user.
+               if (isBufferedResponse) 
+               {
+                       throw exception;
+               }
+               else 
+               {
+                       log.error("Error detaching RequestCycle", exception);
+               }
+       }
+
+       /**
         * Convenience method for setting next page to be rendered.
         * 
         * @param page

http://git-wip-us.apache.org/repos/asf/wicket/blob/67b53cf0/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
----------------------------------------------------------------------
diff --git 
a/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
 
b/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
index 782f1ea..e3cbb33 100644
--- 
a/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
+++ 
b/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerStack.java
@@ -179,6 +179,10 @@ public abstract class RequestHandlerStack
                        {
                                detach(handler);
                        }
+                       catch (RuntimeException exception)
+                       {
+                               throw exception;
+                       }
                        catch (Exception exception)
                        {
                                log.error("Error detaching RequestHandler", 
exception);

Reply via email to