INT-857
This commit is contained in:
@@ -19,6 +19,7 @@ package org.springframework.integration.config.xml;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
|
||||
import org.springframework.beans.factory.xml.ParserContext;
|
||||
@@ -56,6 +57,11 @@ public class FilterParser extends AbstractConsumerEndpointParser {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else {
|
||||
String name = BeanDefinitionReaderUtils.generateBeanName(innerHandlerDefinition, parserContext.getRegistry(), true);
|
||||
BeanDefinitionReaderUtils.registerBeanDefinition(new BeanDefinitionHolder(innerHandlerDefinition, name), parserContext.getRegistry());
|
||||
ref = name;
|
||||
}
|
||||
String method = element.getAttribute("method");
|
||||
if (!StringUtils.hasText(method)) {
|
||||
return ref;
|
||||
|
||||
@@ -27,9 +27,11 @@ import org.springframework.integration.channel.PollableChannel;
|
||||
import org.springframework.integration.core.Message;
|
||||
import org.springframework.integration.core.MessageChannel;
|
||||
import org.springframework.integration.message.StringMessage;
|
||||
import org.springframework.integration.selector.MessageSelector;
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
* @author Grzegorz Grzybek
|
||||
*/
|
||||
public class FilterContextTests {
|
||||
|
||||
@@ -55,4 +57,34 @@ public class FilterContextTests {
|
||||
assertEquals("foobar", reply.getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void filterWithEmbeddedSelector() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"filterContextTests.xml", this.getClass());
|
||||
MessageChannel input = (MessageChannel) context.getBean("input-embedded-selector");
|
||||
PollableChannel output = (PollableChannel) context.getBean("output-embedded-selector");
|
||||
input.send(new StringMessage("foo"));
|
||||
Message<?> reply = output.receive(0);
|
||||
assertNull(reply);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void filterWithEmbeddedBean() {
|
||||
ApplicationContext context = new ClassPathXmlApplicationContext(
|
||||
"filterContextTests.xml", this.getClass());
|
||||
MessageChannel input = (MessageChannel) context.getBean("input-embedded");
|
||||
PollableChannel output = (PollableChannel) context.getBean("output-embedded");
|
||||
input.send(new StringMessage("foo"));
|
||||
Message<?> reply = output.receive(0);
|
||||
assertNull(reply);
|
||||
}
|
||||
|
||||
|
||||
static class TestSelector implements MessageSelector {
|
||||
|
||||
public boolean accept(Message<?> message) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,5 +19,28 @@
|
||||
output-channel="output"/>
|
||||
|
||||
<beans:bean id="testBean" class="org.springframework.integration.filter.TestBean"/>
|
||||
|
||||
<channel id="input-embedded-selector"/>
|
||||
|
||||
<channel id="output-embedded-selector">
|
||||
<queue capacity="50"/>
|
||||
</channel>
|
||||
|
||||
<filter input-channel="input-embedded-selector"
|
||||
output-channel="output-embedded-selector">
|
||||
<beans:bean class="org.springframework.integration.filter.FilterContextTests$TestSelector" />
|
||||
</filter>
|
||||
|
||||
<channel id="input-embedded"/>
|
||||
|
||||
<channel id="output-embedded">
|
||||
<queue capacity="50"/>
|
||||
</channel>
|
||||
|
||||
<filter input-channel="input-embedded"
|
||||
method="acceptStringWithMoreThanThreeChars"
|
||||
output-channel="output-embedded">
|
||||
<beans:bean class="org.springframework.integration.filter.TestBean" />
|
||||
</filter>
|
||||
|
||||
</beans:beans>
|
||||
|
||||
Reference in New Issue
Block a user