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/24 20:38:23 UTC

[06/12] wicket git commit: WICKET-6129 further simplification: catch ReplaceHandlerException in RequestCycle only

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/e02bdd8e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e02bdd8e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e02bdd8e

Branch: refs/heads/master
Commit: e02bdd8e7111ccfdce097a2841d6b61b64c0e7b9
Parents: d668a00
Author: Sven Meier <sv...@apache.org>
Authored: Thu Apr 7 11:37:04 2016 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Sun Apr 24 20:00:54 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/e02bdd8e/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/e02bdd8e/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()