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

reiern70 pushed a commit to branch improvement/reiern70/WICKET-7050
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 16eaaf8e61e0a5640c7b265386cafcb2ebf7b40c
Author: reiern70 <[email protected]>
AuthorDate: Wed Apr 19 09:30:18 2023 +0300

    [WICKET-7050] make DefaultExceptionMapper more configurable for the case an 
exception happens while original exception is mapped.
---
 .../org/apache/wicket/DefaultExceptionMapper.java  | 33 +++++++++++++++-------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git 
a/wicket-core/src/main/java/org/apache/wicket/DefaultExceptionMapper.java 
b/wicket-core/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
index b2a065579d..a26a882c43 100644
--- a/wicket-core/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
@@ -63,17 +63,30 @@ public class DefaultExceptionMapper implements 
IExceptionMapper
                }
                catch (RuntimeException e2)
                {
-                       if (logger.isDebugEnabled())
-                       {
-                               logger.error(
-                                       "An error occurred while handling a 
previous error: " + e2.getMessage(), e2);
-                       }
+                       return handleNestedException(e, e2);
+               }
+       }
+
 
-                       // hmmm, we were already handling an exception! give up
-                       logger.error("unexpected exception when handling 
another exception: " + e.getMessage(),
-                               e);
-                       return new ErrorCodeRequestHandler(500);
+       /**
+        * Handles the case when an exception is generated while mapping the 
original exception happened
+        *
+        * @param originalException The original exception.
+        * @param nestedException The nested (second) exception produced
+        * @return IRequestHandler (by default ErrorCodeRequestHandler
+        */
+       protected IRequestHandler handleNestedException(Exception 
originalException, RuntimeException nestedException)
+       {
+               if (logger.isDebugEnabled())
+               {
+                       logger.error(
+                                       "An error occurred while handling a 
previous error: " + nestedException.getMessage(), nestedException);
                }
+
+               // hmmm, we were already handling an exception! give up
+               logger.error("unexpected exception when handling another 
exception: " + originalException.getMessage(),
+                               originalException);
+               return new ErrorCodeRequestHandler(500);
        }
        
        /**
@@ -187,7 +200,7 @@ public class DefaultExceptionMapper implements 
IExceptionMapper
 
        /**
         * Creates a {@link RenderPageRequestHandler} for the target page 
provided by {@code pageProvider}.
-        * 
+        * <p>
         * Uses {@link RenderPageRequestHandler.RedirectPolicy#NEVER_REDIRECT} 
policy to preserve the original page's URL
         * for non-Ajax requests and {@link 
RenderPageRequestHandler.RedirectPolicy#AUTO_REDIRECT} for AJAX requests.
         * 

Reply via email to