INT-1576,INT-1579,INT-2025: added spring-integration-scripting and fixed HeaderEnricher issue

This commit is contained in:
David Turanski
2011-08-03 15:15:00 +05:30
parent f94411e11d
commit 207f043587
64 changed files with 1735 additions and 239 deletions

View File

@@ -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.

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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"/>

View File

@@ -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 {