Skip to content

Commit 3cea034

Browse files
committed
PR-605 less formatting
Resolves #605
1 parent 8774383 commit 3cea034

File tree

3 files changed

+37
-12
lines changed

3 files changed

+37
-12
lines changed

spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ private Object enrichInvocationResultIfNecessary(Object input, Object result) {
596596
if (result instanceof Message) {
597597
Map<String, Object> headersMap = (Map<String, Object>) ReflectionUtils
598598
.getField(SimpleFunctionRegistry.this.headersField, ((Message) result).getHeaders());
599-
headersMap.putAll(this.sanitizeHeaders(((Message) input).getHeaders()));
599+
this.sanitizeHeaders(((Message) input).getHeaders()).forEach((k, v) -> headersMap.putIfAbsent(k, v));
600600
}
601601
else {
602602
result = MessageBuilder.withPayload(result).copyHeaders(this.sanitizeHeaders(((Message) input).getHeaders())).build();

spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistryTests.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ public void lookupDefaultName() {
311311
assertThat(function).isNotNull();
312312
}
313313

314+
@SuppressWarnings("unchecked")
314315
@Test
315316
public void lookupWithCompositionFunctionAndConsumer() {
316317
SimpleFunctionRegistry functionRegistry = new SimpleFunctionRegistry(this.conversionService, this.messageConverter,
@@ -347,6 +348,22 @@ public void lookupWithReactiveConsumer() {
347348
functionWrapper.apply("123");
348349
}
349350

351+
@SuppressWarnings({ "rawtypes", "unchecked" })
352+
@Test
353+
public void testHeaderEnricherFunction() {
354+
FunctionRegistration<HeaderEnricherFunction> registration =
355+
new FunctionRegistration<>(new HeaderEnricherFunction(), "headerEnricher")
356+
.type(FunctionType.of(HeaderEnricherFunction.class));
357+
SimpleFunctionRegistry catalog = new SimpleFunctionRegistry(this.conversionService, this.messageConverter,
358+
new JacksonMapper(new ObjectMapper()));
359+
catalog.register(registration);
360+
Function<Message<?>, Message<?>> function = catalog.lookup("headerEnricher");
361+
Message<?> message =
362+
function.apply(MessageBuilder.withPayload("hello").setHeader("original", "originalValue")
363+
.build());
364+
assertThat(message.getHeaders().get("original")).isEqualTo("newValue");
365+
}
366+
350367

351368
public Function<String, String> uppercase() {
352369
return v -> v.toUpperCase();
@@ -501,4 +518,13 @@ public Flux<List<String>> apply(Flux<Message<List<Person>>> listFlux) {
501518
.map(lst -> lst.stream().map(Person::getName).collect(Collectors.toList()));
502519
}
503520
}
521+
522+
private static class HeaderEnricherFunction implements Function<Message<?>, Message<?>> {
523+
524+
@Override
525+
public Message<?> apply(Message<?> message) {
526+
return MessageBuilder.withPayload(message.getPayload()).setHeader("original", "newValue")
527+
.build();
528+
}
529+
}
504530
}

spring-cloud-function-context/src/test/java/org/springframework/cloud/function/userissues/UserIssuesTests.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import org.junit.jupiter.api.BeforeEach;
2424
import org.junit.jupiter.api.Test;
25+
import reactor.core.publisher.Flux;
2526

2627
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2728
import org.springframework.boot.builder.SpringApplicationBuilder;
@@ -34,7 +35,6 @@
3435
import org.springframework.messaging.Message;
3536
import org.springframework.messaging.support.GenericMessage;
3637

37-
import reactor.core.publisher.Flux;
3838

3939
import static org.assertj.core.api.Assertions.assertThat;
4040

@@ -104,17 +104,16 @@ public void testIssue601() throws Exception {
104104
FunctionCatalog catalog = this.configureCatalog(Issue601Configuration.class);
105105
FunctionInvocationWrapper function = catalog.lookup("uppercase");
106106
assertThat(function.getInputType().getTypeName())
107-
.isEqualTo(ResolvableType.forClassWithGenerics(Flux.class, String.class).getType().getTypeName());
107+
.isEqualTo(ResolvableType.forClassWithGenerics(Flux.class, String.class).getType().getTypeName());
108108
assertThat(function.getOutputType().getTypeName())
109-
.isEqualTo(ResolvableType.forClassWithGenerics(Flux.class, Integer.class).getType().getTypeName());
109+
.isEqualTo(ResolvableType.forClassWithGenerics(Flux.class, Integer.class).getType().getTypeName());
110110
Flux<Integer> result = (Flux<Integer>) function.apply(Flux.just("julien", "ricky", "bubbles"));
111111
List<Integer> results = result.collectList().block();
112112
assertThat(results.get(0)).isEqualTo(6);
113113
assertThat(results.get(1)).isEqualTo(5);
114114
assertThat(results.get(2)).isEqualTo(7);
115115
}
116116

117-
118117
@EnableAutoConfiguration
119118
@Configuration
120119
public static class Issue602Configuration {
@@ -133,17 +132,17 @@ public Function<List<Product>, Integer> consumer() {
133132
@Configuration
134133
public static class Issue601Configuration {
135134
@Bean
136-
public Uppercase uppercase() {
137-
return new Uppercase();
138-
}
135+
public Uppercase uppercase() {
136+
return new Uppercase();
137+
}
139138
}
140139

141140
public static class Uppercase implements Function<Flux<String>, Flux<Integer>> {
142141

143-
@Override
144-
public Flux<Integer> apply(Flux<String> s) {
145-
return s.map(v -> v.length());
146-
}
142+
@Override
143+
public Flux<Integer> apply(Flux<String> s) {
144+
return s.map(v -> v.length());
145+
}
147146
}
148147

149148
public static class Product {

0 commit comments

Comments
 (0)