INT-4109: Fix NPE in the IntegrationGraphServer

JIRA: https://jira.spring.io/browse/INT-4109

**Cherry-pick to 4.3.x**
This commit is contained in:
Artem Bilan
2016-09-13 16:08:51 -04:00
committed by Gary Russell
parent d1ed66835d
commit c20c38c06f
2 changed files with 15 additions and 6 deletions

View File

@@ -50,6 +50,7 @@ import org.springframework.util.StringUtils;
* Builds the runtime object model graph.
*
* @author Gary Russell
* @author Artem Bilan
* @since 4.3
*
*/
@@ -364,11 +365,12 @@ public class IntegrationGraphServer implements ApplicationContextAware, Applicat
private MessageHandlerNode discardingHandler(String name, IntegrationConsumer consumer,
DiscardingMessageHandler handler, String output, String errors, boolean polled) {
String discards = handler.getDiscardChannel() != null ? handler.getDiscardChannel().toString() : null;
return polled
? new ErrorCapableDiscardingMessageHandlerNode(this.nodeId.incrementAndGet(), name, handler,
consumer.getInputChannel().toString(), output, handler.getDiscardChannel().toString(), errors)
consumer.getInputChannel().toString(), output, discards, errors)
: new DiscardingMessageHandlerNode(this.nodeId.incrementAndGet(), name, handler,
consumer.getInputChannel().toString(), output, handler.getDiscardChannel().toString());
consumer.getInputChannel().toString(), output, discards);
}
private MessageHandlerNode routingHandler(String name, IntegrationConsumer consumer, MessageHandler handler,

View File

@@ -34,6 +34,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.integration.annotation.Filter;
import org.springframework.integration.annotation.IntegrationComponentScan;
import org.springframework.integration.annotation.MessagingGateway;
import org.springframework.integration.annotation.Router;
@@ -67,6 +68,7 @@ import com.fasterxml.jackson.databind.SerializationFeature;
/**
* @author Gary Russell
* @author Artem Bilan
* @since 4.3
*
*/
@@ -95,10 +97,10 @@ public class IntegrationGraphServerTests {
assertThat(map.size(), is(equalTo(3)));
List<Map<?, ?>> nodes = (List<Map<?, ?>>) map.get("nodes");
assertThat(nodes, is(notNullValue()));
assertThat(nodes.size(), is(equalTo(31)));
assertThat(nodes.size(), is(equalTo(32)));
List<Map<?, ?>> links = (List<Map<?, ?>>) map.get("links");
assertThat(links, is(notNullValue()));
assertThat(links.size(), is(equalTo(32)));
assertThat(links.size(), is(equalTo(33)));
toRouter.send(MessageBuilder.withPayload("foo").setHeader("foo", "bar").build());
toRouter.send(MessageBuilder.withPayload("foo").setHeader("foo", "baz").build());
@@ -117,10 +119,10 @@ public class IntegrationGraphServerTests {
assertThat(map.size(), is(equalTo(3)));
nodes = (List<Map<?, ?>>) map.get("nodes");
assertThat(nodes, is(notNullValue()));
assertThat(nodes.size(), is(equalTo(31)));
assertThat(nodes.size(), is(equalTo(32)));
links = (List<Map<?, ?>>) map.get("links");
assertThat(links, is(notNullValue()));
assertThat(links.size(), is(equalTo(34)));
assertThat(links.size(), is(equalTo(35)));
}
@Configuration
@@ -270,6 +272,11 @@ public class IntegrationGraphServerTests {
public void bar(String foo) {
}
@Filter(inputChannel = "filterChannel")
public boolean filter(String payload) {
return false;
}
}
public static class BareHandler implements MessageHandler {