INT-1576,INT-1579,INT-2025: added spring-integration-scripting and fixed HeaderEnricher issue
This commit is contained in:
@@ -40,7 +40,7 @@ public abstract class AbstractScriptExecutingMessageProcessor<T> implements Mess
|
||||
Assert.notNull(scriptVariableGenerator, "scriptVariableGenerator must not be null");
|
||||
this.scriptVariableGenerator = scriptVariableGenerator;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Executes the script and returns the result.
|
||||
|
||||
@@ -96,7 +96,14 @@ public class HeaderEnricher implements Transformer {
|
||||
if (shouldOverwrite == null) {
|
||||
shouldOverwrite = this.defaultOverwrite;
|
||||
}
|
||||
Object value = valueProcessor.processMessage(message);
|
||||
/**
|
||||
* Only evaluate value if necessary
|
||||
*/
|
||||
Object value = null;
|
||||
if (headerMap.get(key) == null || shouldOverwrite || !this.shouldSkipNulls){
|
||||
value = valueProcessor.processMessage(message);
|
||||
}
|
||||
|
||||
if ((value != null && shouldOverwrite) || headerMap.get(key) == null || (value == null && !this.shouldSkipNulls)) {
|
||||
headerMap.put(key, value);
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
http\://www.springframework.org/schema/integration/spring-integration-1.0.xsd=org/springframework/integration/config/xml/spring-integration-1.0.xsd
|
||||
http\://www.springframework.org/schema/integration/spring-integration-2.0.xsd=org/springframework/integration/config/xml/spring-integration-2.0.xsd
|
||||
http\://www.springframework.org/schema/integration/spring-integration.xsd=org/springframework/integration/config/xml/spring-integration-2.0.xsd
|
||||
http\://www.springframework.org/schema/integration/spring-integration.xsd=org/springframework/integration/config/xml/spring-integration-2.0.xsd
|
||||
http\://www.springframework.org/schema/integration/scripting/spring-integration-scripting-core.xsd=org/springframework/integration/scripting/config/xml/spring-integration-scripting-core-2.1.xsd
|
||||
http\://www.springframework.org/schema/integration/scripting/spring-integration-scripting-core-2.1.xsd=org/springframework/integration/scripting/config/xml/spring-integration-scripting-core-2.1.xsd
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
<header-enricher input-channel="beanResolvingInput" output-channel="output">
|
||||
<header name="num" expression="headers.num ^ @testBean.value" overwrite="true"/>
|
||||
</header-enricher>
|
||||
|
||||
<header-enricher input-channel="expressionNotExecutedInput" output-channel="output">
|
||||
<header name="num" expression="headers.num / 0" />
|
||||
</header-enricher>
|
||||
|
||||
<beans:bean id="testBean" class="org.springframework.integration.transformer.SpelHeaderEnricherIntegrationTests$TestBean"/>
|
||||
|
||||
|
||||
@@ -42,6 +42,9 @@ public class SpelHeaderEnricherIntegrationTests {
|
||||
|
||||
@Autowired
|
||||
private MessageChannel beanResolvingInput;
|
||||
|
||||
@Autowired
|
||||
private MessageChannel expressionNotExecutedInput;
|
||||
|
||||
@Autowired @Qualifier("output")
|
||||
private PollableChannel output;
|
||||
@@ -62,6 +65,14 @@ public class SpelHeaderEnricherIntegrationTests {
|
||||
Message<?> result = output.receive(0);
|
||||
assertEquals(243, result.getHeaders().get("num"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void suppressBeanExecution(){
|
||||
Message<?> message = MessageBuilder.withPayload("test").setHeader("num", 3).build();
|
||||
this.expressionNotExecutedInput.send(message);
|
||||
Message<?> result = output.receive(0);
|
||||
assertEquals(3, result.getHeaders().get("num"));
|
||||
}
|
||||
|
||||
|
||||
static class TestBean {
|
||||
|
||||
Reference in New Issue
Block a user