Fix potential issue when Message is not available but not needed
If an isolated function doesn't have Message in its classpath, we will never actually need to instantiate that class. This change makes sure we check first.
This commit is contained in:
@@ -90,10 +90,12 @@ public abstract class MessageUtils {
|
||||
return MessageBuilder.withPayload(message).build();
|
||||
}
|
||||
ClassLoader classLoader = ((Isolated) handler).getClassLoader();
|
||||
Class<?> type = ClassUtils.resolveClassName(Message.class.getName(), classLoader);
|
||||
Class<?> type = ClassUtils.isPresent(Message.class.getName(), classLoader)
|
||||
? ClassUtils.resolveClassName(Message.class.getName(), classLoader)
|
||||
: null;
|
||||
Object payload;
|
||||
Map<String, Object> headers;
|
||||
if (type.isAssignableFrom(message.getClass())) {
|
||||
if (type != null && type.isAssignableFrom(message.getClass())) {
|
||||
Method getPayload = ClassUtils.getMethod(type, "getPayload");
|
||||
Method getHeaders = ClassUtils.getMethod(type, "getHeaders");
|
||||
payload = ReflectionUtils.invokeMethod(getPayload, message);
|
||||
@@ -101,7 +103,8 @@ public abstract class MessageUtils {
|
||||
Map<String, Object> map = (Map<String, Object>) ReflectionUtils
|
||||
.invokeMethod(getHeaders, message);
|
||||
headers = map;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
payload = message;
|
||||
headers = Collections.emptyMap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user