From 895336f60a632efcfbdba738faac1b0cc3b19a53 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Wed, 4 Nov 2015 16:45:11 -0500 Subject: [PATCH] INT-3877: BarrierParser and requires-reply JIRA: https://jira.spring.io/browse/INT-3877 Failed to set the `requires-reply` boolean. --- .../integration/config/xml/BarrierParser.java | 1 + .../BarrierMessageHandlerTests.java | 20 ++++++++++++++++++- .../config/xml/BarrierParserTests-context.xml | 3 ++- .../config/xml/BarrierParserTests.java | 3 ++- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/BarrierParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/BarrierParser.java index b58547ceb3..29ef7ab219 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/BarrierParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/BarrierParser.java @@ -44,6 +44,7 @@ public class BarrierParser extends AbstractConsumerEndpointParser { IntegrationNamespaceUtils.injectConstructorWithAdapter("correlation-strategy", "correlation-strategy-method", "correlation-strategy-expression", "CorrelationStrategy", element, handlerBuilder, null, parserContext); + IntegrationNamespaceUtils.setValueIfAttributeDefined(handlerBuilder, element, "requires-reply"); return handlerBuilder; } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/aggregator/BarrierMessageHandlerTests.java b/spring-integration-core/src/test/java/org/springframework/integration/aggregator/BarrierMessageHandlerTests.java index f6ce939005..66818b99bb 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/aggregator/BarrierMessageHandlerTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/aggregator/BarrierMessageHandlerTests.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -46,12 +47,12 @@ import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.integration.aggregator.BarrierMessageHandler; import org.springframework.integration.annotation.Poller; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.config.EnableIntegration; +import org.springframework.integration.handler.ReplyRequiredException; import org.springframework.integration.support.MessageBuilder; import org.springframework.integration.test.util.TestUtils; import org.springframework.messaging.Message; @@ -194,6 +195,23 @@ public class BarrierMessageHandlerTests { assertEquals(0, suspensions.size()); } + @Test + public void testRequiresReply() throws Exception { + final BarrierMessageHandler handler = new BarrierMessageHandler(0); + QueueChannel outputChannel = new QueueChannel(); + handler.setOutputChannel(outputChannel); + handler.setBeanFactory(mock(BeanFactory.class)); + handler.setRequiresReply(true); + handler.afterPropertiesSet(); + try { + handler.handleMessage(MessageBuilder.withPayload("foo").setCorrelationId("foo").build()); + fail("exception expected"); + } + catch (Exception e) { + assertThat(e, Matchers.instanceOf(ReplyRequiredException.class)); + } + } + @Test public void testExceptionReply() throws Exception { final BarrierMessageHandler handler = new BarrierMessageHandler(10000); diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/BarrierParserTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/BarrierParserTests-context.xml index fd33ed8db9..b0e3e3273a 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/BarrierParserTests-context.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/BarrierParserTests-context.xml @@ -9,7 +9,8 @@ - diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/BarrierParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/BarrierParserTests.java index 03e5e4fbbc..ef4b6c1879 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/BarrierParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/BarrierParserTests.java @@ -20,6 +20,7 @@ import static org.hamcrest.Matchers.instanceOf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import org.junit.Test; import org.junit.runner.RunWith; @@ -83,13 +84,13 @@ public class BarrierParserTests { BarrierMessageHandler handler = TestUtils.getPropertyValue(this.barrier1, "handler", BarrierMessageHandler.class); assertEquals(10000L, TestUtils.getPropertyValue(handler, "timeout")); + assertTrue(TestUtils.getPropertyValue(handler, "requiresReply", Boolean.class)); assertThat(TestUtils.getPropertyValue(this.barrier2, "handler.correlationStrategy"), instanceOf(HeaderAttributeCorrelationStrategy.class)); assertThat(TestUtils.getPropertyValue(this.barrier3, "handler.messageGroupProcessor"), instanceOf(TestMGP.class)); assertThat(TestUtils.getPropertyValue(this.barrier3, "handler.correlationStrategy"), instanceOf(TestCS.class)); - } public static class TestMGP implements MessageGroupProcessor {