@@ -355,8 +355,9 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect
|
|||||||
? new BeanFactoryResolver(this.functionProperties.getApplicationContext())
|
? new BeanFactoryResolver(this.functionProperties.getApplicationContext())
|
||||||
: null;
|
: null;
|
||||||
HeaderEnricher enricher = new HeaderEnricher(configuration.getOutputHeaderMappingExpression(), beanResolver);
|
HeaderEnricher enricher = new HeaderEnricher(configuration.getOutputHeaderMappingExpression(), beanResolver);
|
||||||
FunctionInvocationWrapper w = new FunctionInvocationWrapper("outputHeaderEnricher", enricher, Message.class, Message.class);
|
Type mesageType = ResolvableType.forClassWithGenerics(Message.class, Object.class).getType();
|
||||||
composedFunction = (FunctionInvocationWrapper) w.andThen((Function<Object, Object>) composedFunction);
|
FunctionInvocationWrapper enricherWrapper = new FunctionInvocationWrapper("outputHeaderEnricher", enricher, mesageType, mesageType);
|
||||||
|
composedFunction = (FunctionInvocationWrapper) composedFunction.andThen((Function<Object, Object>) enricherWrapper);
|
||||||
composedFunction.functionDefinition = functionDefinition;
|
composedFunction.functionDefinition = functionDefinition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -180,17 +180,17 @@ public class HeaderMappingTests {
|
|||||||
SampleFunctionConfiguration.class).web(WebApplicationType.NONE).run(
|
SampleFunctionConfiguration.class).web(WebApplicationType.NONE).run(
|
||||||
"--logging.level.org.springframework.cloud.function=DEBUG",
|
"--logging.level.org.springframework.cloud.function=DEBUG",
|
||||||
"--spring.main.lazy-initialization=true",
|
"--spring.main.lazy-initialization=true",
|
||||||
"--spring.cloud.function.configuration.foo.output-header-mapping-expression.key1='hello1'",
|
"--spring.cloud.function.configuration.foo.output-header-mapping-expression.keyOut1='hello1'",
|
||||||
"--spring.cloud.function.configuration.foo.output-header-mapping-expression.key2=headers.contentType")) {
|
"--spring.cloud.function.configuration.foo.output-header-mapping-expression.keyOut2=headers.contentType")) {
|
||||||
|
|
||||||
FunctionCatalog functionCatalog = context.getBean(FunctionCatalog.class);
|
FunctionCatalog functionCatalog = context.getBean(FunctionCatalog.class);
|
||||||
FunctionInvocationWrapper function = functionCatalog.lookup("foo");
|
FunctionInvocationWrapper function = functionCatalog.lookup("foo");
|
||||||
Message<byte[]> result = (Message<byte[]>) function.apply(MessageBuilder.withPayload("helo")
|
Message<byte[]> result = (Message<byte[]>) function.apply(MessageBuilder.withPayload("helo")
|
||||||
.setHeader(MessageHeaders.CONTENT_TYPE, "application/json").build());
|
.setHeader(MessageHeaders.CONTENT_TYPE, "application/json").build());
|
||||||
assertThat(result.getHeaders().containsKey("key1")).isTrue();
|
assertThat(result.getHeaders().containsKey("keyOut1")).isTrue();
|
||||||
assertThat(result.getHeaders().get("key1")).isEqualTo("hello1");
|
assertThat(result.getHeaders().get("keyOut1")).isEqualTo("hello1");
|
||||||
assertThat(result.getHeaders().containsKey("key2")).isTrue();
|
assertThat(result.getHeaders().containsKey("keyOut2")).isTrue();
|
||||||
assertThat(result.getHeaders().get("key2")).isEqualTo("application/json");
|
assertThat(result.getHeaders().get("keyOut2")).isEqualTo("application/json");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,7 +255,10 @@ public class HeaderMappingTests {
|
|||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public Function<Message<?>, Message<?>> foo() {
|
public Function<Message<?>, Message<?>> foo() {
|
||||||
return x -> x;
|
return x -> {
|
||||||
|
assertThat(x.getHeaders().containsKey("keyOut1")).isFalse();
|
||||||
|
return x;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user