Skip to content

Commit 17ac635

Browse files
committed
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
1 parent ffb62cb commit 17ac635

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

core/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java

+7-11
Original file line numberDiff line numberDiff line change
@@ -389,17 +389,13 @@ private <T> Message<T> wrapToMessageIfNecessary(T value) {
389389
: MessageBuilder.withPayload(value).build();
390390
}
391391

392-
@SuppressWarnings({ "unchecked", "rawtypes" })
393-
private static Message sanitize(Message inputMessage) {
394-
MessageBuilder builder = MessageBuilder
395-
.fromMessage(inputMessage)
396-
.removeHeader("spring.cloud.stream.sendto.destination")
397-
.removeHeader(MessageUtils.SOURCE_TYPE);
398-
if (builder.getHeaders().containsKey(MessageUtils.TARGET_PROTOCOL)) {
399-
builder = builder.setHeader(MessageUtils.SOURCE_TYPE, builder.getHeaders().get(MessageUtils.TARGET_PROTOCOL));
400-
}
401-
builder = builder.removeHeader(MessageUtils.TARGET_PROTOCOL);
402-
return builder.build();
392+
private static <P> Message<P> sanitize(Message<P> inputMessage) {
393+
return MessageBuilder
394+
.fromMessage(inputMessage)
395+
.removeHeader("spring.cloud.stream.sendto.destination")
396+
.setHeader(MessageUtils.SOURCE_TYPE, inputMessage.getHeaders().get(MessageUtils.TARGET_PROTOCOL))
397+
.removeHeader(MessageUtils.TARGET_PROTOCOL)
398+
.build();
403399
}
404400

405401
private static class FunctionToDestinationBinder implements InitializingBean, ApplicationContextAware {

0 commit comments

Comments
 (0)