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 2021/07/26 20:03:20 UTC

[wicket] 02/02: WICKET-6908 detach all handlers

This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a commit to branch WICKET-6908-detach-failure
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 05ab77655fb00d27ade1402b72db1dc6968b3dbe
Author: Sven Meier <sv...@apache.org>
AuthorDate: Mon Jul 26 22:03:05 2021 +0200

    WICKET-6908 detach all handlers
    
    even if one throws a RuntimeException
---
 .../apache/wicket/request/RequestHandlerExecutor.java    | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerExecutor.java b/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerExecutor.java
index f60b27a..47df808 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerExecutor.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/RequestHandlerExecutor.java
@@ -132,21 +132,27 @@ public abstract class RequestHandlerExecutor
 			active = null;
 		}
 
+		RuntimeException rethrow = null;;
 		for (IRequestHandler handler : inactiveRequestHandlers)
 		{
 			try
 			{
 				detach(handler);
 			}
-			catch (RuntimeException exception)
-			{
-				throw exception;
-			}
 			catch (Exception exception)
 			{
-				log.error("Error detaching RequestHandler", exception);
+				if (rethrow == null && exception instanceof RuntimeException) {
+					rethrow = (RuntimeException) exception;
+				} else {
+					log.error("Error detaching RequestHandler", exception);
+				}
 			}
 		}
+		if (rethrow != null) {
+			// WICKET-6001 runtime exceptions are rethrown
+			// TODO obsolete should component-queueing be removed
+			throw rethrow;
+		}
 	}
 
 	/**