From 1051fe7bee67f17e284d4f8cb144242bdaf27b31 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Fri, 9 Sep 2022 20:20:29 +0200 Subject: [PATCH] Improve InvocableHandlerMethod error handling This commit improves the fix for gh-18491 for Java 18 as in this case the exception message might not be null. --- .../messaging/handler/invocation/InvocableHandlerMethod.java | 5 +++-- .../web/method/support/InvocableHandlerMethod.java | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java index 0b84083d8f..2e1fdb201b 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 the original author or authors. + * Copyright 2002-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -170,7 +170,8 @@ public class InvocableHandlerMethod extends HandlerMethod { } catch (IllegalArgumentException ex) { assertTargetBean(getBridgedMethod(), getBean(), args); - String text = (ex.getMessage() != null ? ex.getMessage() : "Illegal argument"); + String text = (ex.getMessage() == null || ex.getCause() instanceof NullPointerException) + ? "Illegal argument": ex.getMessage(); throw new IllegalStateException(formatInvokeError(text, args), ex); } catch (InvocationTargetException ex) { diff --git a/spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java b/spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java index 99abcc7a5f..2cbf7d2617 100644 --- a/spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java +++ b/spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java @@ -206,7 +206,8 @@ public class InvocableHandlerMethod extends HandlerMethod { } catch (IllegalArgumentException ex) { assertTargetBean(method, getBean(), args); - String text = (ex.getMessage() != null ? ex.getMessage() : "Illegal argument"); + String text = (ex.getMessage() == null || ex.getCause() instanceof NullPointerException) + ? "Illegal argument": ex.getMessage(); throw new IllegalStateException(formatInvokeError(text, args), ex); } catch (InvocationTargetException ex) {