WICKET-6908 detach all handlers
even if one throws a RuntimeException
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 @@
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;
+ }
}
/**