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:24 UTC

[07/12] wicket git commit: WICKET-6129 handlers were never executed nested actually, so no need to keep a stack of handlers

WICKET-6129 handlers were never executed nested actually, so no need to keep a stack of handlers


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

Branch: refs/heads/master
Commit: 88db7274135b9ea293291936843e0b0e5473cffa
Parents: e02bdd8
Author: Sven Meier <sv...@apache.org>
Authored: Fri Apr 8 12:20:07 2016 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Sun Apr 24 20:00:54 2016 +0200

----------------------------------------------------------------------
 .../wicket/request/RequestHandlerStack.java     | 24 ++++++++++----------
 1 file changed, 12 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/88db7274/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 8868f1b..206763c 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
@@ -17,7 +17,6 @@
 package org.apache.wicket.request;
 
 import java.util.ArrayList;
-import java.util.LinkedList;
 import java.util.List;
 
 import org.apache.wicket.util.lang.Args;
@@ -35,19 +34,20 @@ public abstract class RequestHandlerStack
 {
 	private static final Logger log = LoggerFactory.getLogger(RequestHandlerStack.class);
 
-	// we need both Queue and List interfaces
-	private final LinkedList<IRequestHandler> requestHandlers = new LinkedList<>();
+	private IRequestHandler active;
 
 	private final List<IRequestHandler> inactiveRequestHandlers = new ArrayList<>();
 
 	private IRequestHandler scheduledAfterCurrent = null;
 
 	/**
+	 * Get the handler currently executed.
+	 *
 	 * @return active handler
 	 */
 	public IRequestHandler getActive()
 	{
-		return requestHandlers.peek();
+		return active;
 	}
 
 	/**
@@ -59,14 +59,14 @@ public abstract class RequestHandlerStack
 	 */
 	public IRequestHandler execute(final IRequestHandler handler)
 	{
-		requestHandlers.add(handler);
+		active = handler;
 		try
 		{
 			respond(handler);
 		}
 		finally
 		{
-			requestHandlers.poll();
+			active = null;
 			inactiveRequestHandlers.add(handler);
 		}
 
@@ -127,7 +127,7 @@ public abstract class RequestHandlerStack
 	 */
 	public void replaceAll(final IRequestHandler handler)
 	{
-		if (requestHandlers.isEmpty())
+		if (active == null)
 		{
 			execute(handler);
 		}
@@ -142,13 +142,13 @@ public abstract class RequestHandlerStack
 	 */
 	public void detach()
 	{
-		if (!requestHandlers.isEmpty())
+		if (active != null)
 		{
-			// All requests handlers should be inactive at this point
-			log.warn("Some of the request handlers are still active.");
+			// no request handler should be active at this point
+			log.warn("request handler is still active.");
 
-			inactiveRequestHandlers.addAll(requestHandlers);
-			requestHandlers.clear();
+			inactiveRequestHandlers.add(active);
+			active = null;
 		}
 
 		for (IRequestHandler handler : inactiveRequestHandlers)