Fix issue in AnnotationMethodHandlerExceptionResolver
Caching of resovled exceptions introduced in SPR-7703 also introduced a
side effect whereby if exactly one exception was previously cached, any
other exception would appear as a match to the previously matched
@ExceptionHandler method.
This change ensures use of a fresh map when determining matching
@ExceptionHandler methods while also updating the cache.
Issue: SPR-9209
@ -147,7 +148,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -147,7 +148,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -155,11 +156,11 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -155,11 +156,11 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
"Ambiguous exception handler mapped for "+handledException+"]: {"+
@ -171,7 +172,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -171,7 +172,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -106,6 +109,20 @@ public class AnnotationMethodHandlerExceptionResolverTests {
@@ -106,6 +109,20 @@ public class AnnotationMethodHandlerExceptionResolverTests {
@ -171,7 +172,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -171,7 +172,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -179,11 +180,11 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -179,11 +180,11 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
"Ambiguous exception handler mapped for "+handledException+"]: {"+
@ -195,7 +196,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@@ -195,7 +196,7 @@ public class AnnotationMethodHandlerExceptionResolver extends AbstractHandlerExc
@ -110,7 +110,7 @@ public class AnnotationMethodHandlerExceptionResolverTests {
@@ -110,7 +110,7 @@ public class AnnotationMethodHandlerExceptionResolverTests {
assertEquals("Invalid view name returned","GenericError",mav.getViewName());
assertEquals("Invalid status code returned",500,response.getStatus());
@ -127,7 +127,7 @@ public class AnnotationMethodHandlerExceptionResolverTests {
@@ -127,7 +127,7 @@ public class AnnotationMethodHandlerExceptionResolverTests {
assertTrue("ModelAndView not empty",mav.isEmpty());
@ -139,6 +139,20 @@ public class AnnotationMethodHandlerExceptionResolverTests {
@@ -139,6 +139,20 @@ public class AnnotationMethodHandlerExceptionResolverTests {