INT-1130 Added support for 'ref' and 'method' (for Map-returning methods) on the top level <header-enricher/> element.
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans:beans xmlns="http://www.springframework.org/schema/integration"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:beans="http://www.springframework.org/schema/beans"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/integration
|
||||
http://www.springframework.org/schema/integration/spring-integration.xsd">
|
||||
|
||||
<header-enricher input-channel="input" ref="testBean" method="enrich">
|
||||
<header name="other" value="zzz"/>
|
||||
</header-enricher>
|
||||
|
||||
<beans:bean id="testBean" class="org.springframework.integration.config.xml.HeaderEnricherMethodInvokingTests$TestBean"/>
|
||||
|
||||
</beans:beans>
|
||||
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright 2002-2010 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.integration.config.xml;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.integration.channel.QueueChannel;
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.core.MessageChannel;
|
||||
import org.springframework.integration.message.MessageBuilder;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
* @since 2.0
|
||||
*/
|
||||
@ContextConfiguration
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
public class HeaderEnricherMethodInvokingTests {
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext context;
|
||||
|
||||
|
||||
@Test
|
||||
public void replyChannelExplicitOverwriteTrue() {
|
||||
MessageChannel inputChannel = context.getBean("input", MessageChannel.class);
|
||||
QueueChannel replyChannel = new QueueChannel();
|
||||
Message<?> message = MessageBuilder.withPayload("test").setReplyChannel(replyChannel).build();
|
||||
inputChannel.send(message);
|
||||
Message<?> result = replyChannel.receive(0);
|
||||
assertNotNull(result);
|
||||
assertEquals("test", result.getPayload());
|
||||
assertEquals(replyChannel, result.getHeaders().getReplyChannel());
|
||||
assertEquals(123, result.getHeaders().get("foo"));
|
||||
assertEquals("ABC", result.getHeaders().get("bar"));
|
||||
assertEquals("zzz", result.getHeaders().get("other"));
|
||||
}
|
||||
|
||||
|
||||
public static class TestBean {
|
||||
|
||||
public String echo(String text) {
|
||||
return text.toUpperCase();
|
||||
}
|
||||
|
||||
public Map<String, Object> enrich() {
|
||||
Map<String, Object> headers = new HashMap<String, Object>();
|
||||
headers.put("foo", 123);
|
||||
headers.put("bar", "ABC");
|
||||
return headers;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* Copyright 2002-2010 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.integration.handler;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.integration.annotation.Payload;
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.message.MessageBuilder;
|
||||
import org.springframework.integration.transformer.HeaderEnricher;
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
* @since 2.0
|
||||
*/
|
||||
public class MethodInvokingHeaderEnricherTests {
|
||||
|
||||
@Test
|
||||
public void emptyHeadersOnRequest() {
|
||||
TestBean testBean = new TestBean();
|
||||
MethodInvokingMessageProcessor processor = new MethodInvokingMessageProcessor(testBean, "process");
|
||||
HeaderEnricher enricher = new HeaderEnricher();
|
||||
enricher.setMessageProcessor(processor);
|
||||
enricher.setDefaultOverwrite(true);
|
||||
Message<?> message = MessageBuilder.withPayload("test").build();
|
||||
Message<?> result = enricher.transform(message);
|
||||
assertEquals("TEST", result.getHeaders().get("foo"));
|
||||
assertEquals("ABC", result.getHeaders().get("bar"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void overwriteFalseByDefault() {
|
||||
TestBean testBean = new TestBean();
|
||||
MethodInvokingMessageProcessor processor = new MethodInvokingMessageProcessor(testBean, "process");
|
||||
HeaderEnricher enricher = new HeaderEnricher();
|
||||
enricher.setMessageProcessor(processor);
|
||||
Message<?> message = MessageBuilder.withPayload("test").setHeader("bar", "XYZ").build();
|
||||
Message<?> result = enricher.transform(message);
|
||||
assertEquals("TEST", result.getHeaders().get("foo"));
|
||||
assertEquals("XYZ", result.getHeaders().get("bar"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void overwriteFalseExplicit() {
|
||||
TestBean testBean = new TestBean();
|
||||
MethodInvokingMessageProcessor processor = new MethodInvokingMessageProcessor(testBean, "process");
|
||||
HeaderEnricher enricher = new HeaderEnricher();
|
||||
enricher.setMessageProcessor(processor);
|
||||
enricher.setDefaultOverwrite(false);
|
||||
Message<?> message = MessageBuilder.withPayload("test").setHeader("bar", "XYZ").build();
|
||||
Message<?> result = enricher.transform(message);
|
||||
assertEquals("TEST", result.getHeaders().get("foo"));
|
||||
assertEquals("XYZ", result.getHeaders().get("bar"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void overwriteTrue() {
|
||||
TestBean testBean = new TestBean();
|
||||
MethodInvokingMessageProcessor processor = new MethodInvokingMessageProcessor(testBean, "process");
|
||||
HeaderEnricher enricher = new HeaderEnricher();
|
||||
enricher.setMessageProcessor(processor);
|
||||
enricher.setDefaultOverwrite(true);
|
||||
Message<?> message = MessageBuilder.withPayload("test").setHeader("bar", "XYZ").build();
|
||||
Message<?> result = enricher.transform(message);
|
||||
assertEquals("TEST", result.getHeaders().get("foo"));
|
||||
assertEquals("ABC", result.getHeaders().get("bar"));
|
||||
}
|
||||
|
||||
|
||||
public static class TestBean {
|
||||
|
||||
public Map<String, Object> process(@Payload("toUpperCase()") String s) {
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
map.put("foo", s);
|
||||
map.put("bar", "ABC");
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user