You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2016/04/07 11:37:51 UTC
wicket git commit: WICKET-6129 further simplification: catch
ReplaceHandlerException in RequestCycle only
Repository: wicket
Updated Branches:
refs/heads/WICKET-6129-scheduled-handler-notification 39c0ba604 -> 39da7f9d8
WICKET-6129 further simplification: catch ReplaceHandlerException in RequestCycle only
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/39da7f9d
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/39da7f9d
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/39da7f9d
Branch: refs/heads/WICKET-6129-scheduled-handler-notification
Commit: 39da7f9d8671b49727262cf62696d8703f9dbe8f
Parents: 39c0ba6
Author: Sven Meier <sv...@apache.org>
Authored: Thu Apr 7 11:37:04 2016 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Thu Apr 7 11:37:04 2016 +0200
----------------------------------------------------------------------
.../wicket/request/cycle/RequestCycle.java | 17 ++++++++---
.../wicket/request/RequestHandlerStack.java | 32 +++++++++-----------
2 files changed, 26 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/39da7f9d/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 f3ed05d..cd6c07a 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
@@ -39,6 +39,7 @@ import org.apache.wicket.request.RequestHandlerStack;
import org.apache.wicket.request.Response;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.UrlRenderer;
+import org.apache.wicket.request.RequestHandlerStack.ReplaceHandlerException;
import org.apache.wicket.request.component.IRequestablePage;
import org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler;
import org.apache.wicket.request.handler.resource.ResourceRequestHandler;
@@ -47,6 +48,7 @@ import org.apache.wicket.request.resource.IResource;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.request.resource.caching.IStaticCacheableResource;
import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.lang.Exceptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -270,15 +272,19 @@ public class RequestCycle implements IRequestCycle, IEventSink
}
catch (RuntimeException e)
{
- IRequestHandler replacement = requestHandlerExecutor.resolveHandler(e);
- if (replacement != null)
+ ReplaceHandlerException replacer = Exceptions.findCause(e, ReplaceHandlerException.class);
+
+ if (replacer == null)
{
- handler = replacement;
+ throw e;
}
- else
+
+ if (replacer.isRemoveAll())
{
- throw e;
+ requestHandlerExecutor.schedule(null);
}
+
+ handler = replacer.getReplacementRequestHandler();
}
}
}
@@ -861,6 +867,7 @@ public class RequestCycle implements IRequestCycle, IEventSink
*
* @return the found IRequestHandler or {@code null}
*/
+ @SuppressWarnings("unchecked")
public <T extends IRequestHandler> T find(final Class<T> type)
{
if (type == null)
http://git-wip-us.apache.org/repos/asf/wicket/blob/39da7f9d/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 291b457..8868f1b 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
@@ -51,7 +51,11 @@ public abstract class RequestHandlerStack
}
/**
- * @param handler
+ * Execute the given handler.
+ *
+ * @param handler handler to be executed
+ * @return handler to be executed next
+ * @throws ReplaceHandlerException if another handler should replace the given handler for execution
*/
public IRequestHandler execute(final IRequestHandler handler)
{
@@ -60,23 +64,6 @@ public abstract class RequestHandlerStack
{
respond(handler);
}
- catch (RuntimeException exception)
- {
- ReplaceHandlerException replacer = Exceptions.findCause(exception,
- ReplaceHandlerException.class);
-
- if (replacer == null)
- {
- throw exception;
- }
-
- if (replacer.removeAll)
- {
- scheduledAfterCurrent = null;
- }
-
- throw replacer;
- }
finally
{
requestHandlers.poll();
@@ -94,6 +81,7 @@ public abstract class RequestHandlerStack
*
* @param exception
* @return request handler or null} if one cannot be resolved
+ * @deprecated
*/
public final IRequestHandler resolveHandler(RuntimeException exception)
{
@@ -214,6 +202,14 @@ public abstract class RequestHandlerStack
}
/**
+ * Should any scheduled handler be removed before replacing the handler
+ */
+ public boolean isRemoveAll()
+ {
+ return removeAll;
+ }
+
+ /**
* @return the RequestHandler that should be used to continue handling the request
*/
public IRequestHandler getReplacementRequestHandler()