Fix FunctionConfiguration.sanitize() for generics
The `FunctionConfiguration.sanitize()` use a `rawtypes` trying to hide generics routines. Spring Integration 6.4 has introduced a `BaseMessageBuilder` which does not work with `rawtypes`. * Fix `FunctionConfiguration.sanitize()` to expose a `<P>` generic argument to satisfy a new `MessageBuilder` byte code, plus to meet all the expectations of this method consumers * In addition perform some code clean to optimize a usage of `MessageBuilder`: - `setHeader()` does set the value overriding existing one - `setHeader()` removes the entry if provided value is `null` - This way we just can go ahead with `MessageBuilder` method chain avoiding extra conditions
This commit is contained in:
@@ -389,17 +389,13 @@ public class FunctionConfiguration {
|
||||
: MessageBuilder.withPayload(value).build();
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
private static Message sanitize(Message inputMessage) {
|
||||
MessageBuilder builder = MessageBuilder
|
||||
.fromMessage(inputMessage)
|
||||
.removeHeader("spring.cloud.stream.sendto.destination")
|
||||
.removeHeader(MessageUtils.SOURCE_TYPE);
|
||||
if (builder.getHeaders().containsKey(MessageUtils.TARGET_PROTOCOL)) {
|
||||
builder = builder.setHeader(MessageUtils.SOURCE_TYPE, builder.getHeaders().get(MessageUtils.TARGET_PROTOCOL));
|
||||
}
|
||||
builder = builder.removeHeader(MessageUtils.TARGET_PROTOCOL);
|
||||
return builder.build();
|
||||
private static <P> Message<P> sanitize(Message<P> inputMessage) {
|
||||
return MessageBuilder
|
||||
.fromMessage(inputMessage)
|
||||
.removeHeader("spring.cloud.stream.sendto.destination")
|
||||
.setHeader(MessageUtils.SOURCE_TYPE, inputMessage.getHeaders().get(MessageUtils.TARGET_PROTOCOL))
|
||||
.removeHeader(MessageUtils.TARGET_PROTOCOL)
|
||||
.build();
|
||||
}
|
||||
|
||||
private static class FunctionToDestinationBinder implements InitializingBean, ApplicationContextAware {
|
||||
|
||||
Reference in New Issue
Block a user