From cd9d9bc656a66e1b744a28212c3168a470d5d1b0 Mon Sep 17 00:00:00 2001 From: Gunnar Hillert Date: Mon, 21 Nov 2011 12:56:01 -0500 Subject: [PATCH] INT-2245 Jdbc Outbound Gateways - Change "request-timeout" to "reply-timeout" For reference see: https://jira.springsource.org/browse/INT-2245 --- .../config/JdbcOutboundGatewayParser.java | 3 +- .../StoredProcOutboundGatewayParser.java | 3 +- .../config/spring-integration-jdbc-2.1.xsd | 30 +++++++++++++++++-- ...cOutboundAdapterWithPollerTest-context.xml | 10 ++++--- .../JdbcOutboundGatewayParserTests.java | 25 +++++++++++++++- ...cOutboundGatewayWithPollerTest-context.xml | 13 ++++---- .../StoredProcOutboundGatewayParserTests.java | 20 +++++++++++++ .../jdbc/config/outboundPollerSchema.sql | 3 ++ .../storedProcOutboundGatewayParserTest.xml | 2 +- 9 files changed, 94 insertions(+), 15 deletions(-) diff --git a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayParser.java b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayParser.java index 498cf2631d..07fdd202d3 100644 --- a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayParser.java +++ b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayParser.java @@ -77,7 +77,8 @@ public class JdbcOutboundGatewayParser extends AbstractConsumerEndpointParser { IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "row-mapper"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "max-messages-per-poll"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "keys-generated"); - + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "reply-timeout", "sendTimeout"); + String replyChannel = element.getAttribute("reply-channel"); if (StringUtils.hasText(replyChannel)) { builder.addPropertyReference("outputChannel", replyChannel); diff --git a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/config/StoredProcOutboundGatewayParser.java b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/config/StoredProcOutboundGatewayParser.java index 13f72f35a0..7a3a95eb7f 100644 --- a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/config/StoredProcOutboundGatewayParser.java +++ b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/config/StoredProcOutboundGatewayParser.java @@ -58,7 +58,8 @@ public class StoredProcOutboundGatewayParser extends AbstractConsumerEndpointPar IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, gatewayElement, "use-payload-as-parameter-source"); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, gatewayElement, "sql-parameter-source-factory"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, gatewayElement, "skip-undeclared-results"); - + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, gatewayElement, "reply-timeout", "sendTimeout"); + final ManagedList procedureParameterList = StoredProcParserUtils.getProcedureParameterBeanDefinitions(gatewayElement, parserContext); final ManagedList sqlParameterDefinitionList = StoredProcParserUtils.getSqlParameterDefinitionBeanDefinitions(gatewayElement, parserContext); final ManagedMap returningResultsetMap = StoredProcParserUtils.getReturningResultsetBeanDefinitions(gatewayElement, parserContext); diff --git a/spring-integration-jdbc/src/main/resources/org/springframework/integration/jdbc/config/spring-integration-jdbc-2.1.xsd b/spring-integration-jdbc/src/main/resources/org/springframework/integration/jdbc/config/spring-integration-jdbc-2.1.xsd index fb35a35a07..f8987af5d1 100644 --- a/spring-integration-jdbc/src/main/resources/org/springframework/integration/jdbc/config/spring-integration-jdbc-2.1.xsd +++ b/spring-integration-jdbc/src/main/resources/org/springframework/integration/jdbc/config/spring-integration-jdbc-2.1.xsd @@ -418,7 +418,20 @@ - + + + + + + @@ -901,7 +914,20 @@ - + + + + + + diff --git a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundAdapterWithPollerTest-context.xml b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundAdapterWithPollerTest-context.xml index 9d226f3f22..898cd25a1b 100644 --- a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundAdapterWithPollerTest-context.xml +++ b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundAdapterWithPollerTest-context.xml @@ -23,10 +23,12 @@ - - - - + + + + + + diff --git a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayParserTests.java b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayParserTests.java index f1fbd3f58f..ff1c9cd3a5 100644 --- a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayParserTests.java +++ b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayParserTests.java @@ -23,6 +23,7 @@ import javax.sql.DataSource; import org.junit.After; import org.junit.Test; +import org.springframework.beans.DirectFieldAccessor; import org.springframework.context.ApplicationContext; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; @@ -30,6 +31,8 @@ import org.springframework.integration.Message; import org.springframework.integration.MessageChannel; import org.springframework.integration.core.MessagingTemplate; import org.springframework.integration.core.PollableChannel; +import org.springframework.integration.endpoint.EventDrivenConsumer; +import org.springframework.integration.endpoint.PollingConsumer; import org.springframework.integration.jdbc.JdbcOutboundGateway; import org.springframework.integration.support.MessageBuilder; import org.springframework.integration.test.util.TestUtils; @@ -97,7 +100,7 @@ public class JdbcOutboundGatewayParserTests { Map payload = (Map) reply.getPayload(); assertEquals(1, payload.get("updated")); } - + @Test public void testWithPoller() throws Exception{ ApplicationContext ac = new ClassPathXmlApplicationContext("JdbcOutboundGatewayWithPollerTest-context.xml", this.getClass()); @@ -115,6 +118,26 @@ public class JdbcOutboundGatewayParserTests { Map payload = (Map) reply.getPayload(); assertEquals("bar", payload.get("name")); } + + @Test + public void testReplyTimeoutIsSet() throws Exception { + setUp("JdbcOutboundGatewayWithPollerTest-context.xml", getClass()); + + PollingConsumer outboundGateway = this.context.getBean("jdbcOutboundGateway", PollingConsumer.class); + + DirectFieldAccessor accessor = new DirectFieldAccessor(outboundGateway); + Object source = accessor.getPropertyValue("handler"); + accessor = new DirectFieldAccessor(source); + source = accessor.getPropertyValue("messagingTemplate"); + + MessagingTemplate messagingTemplate = (MessagingTemplate) source; + + accessor = new DirectFieldAccessor(messagingTemplate); + + Long sendTimeout = (Long) accessor.getPropertyValue("sendTimeout"); + assertEquals("Wrong sendTimeout", Long.valueOf(444L), sendTimeout); + + } @After public void tearDown() { diff --git a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayWithPollerTest-context.xml b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayWithPollerTest-context.xml index 2a85031516..8fb99cb16a 100644 --- a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayWithPollerTest-context.xml +++ b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/JdbcOutboundGatewayWithPollerTest-context.xml @@ -18,14 +18,17 @@ - + - - - + + + + + + diff --git a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/StoredProcOutboundGatewayParserTests.java b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/StoredProcOutboundGatewayParserTests.java index f5670ac171..6344f83d71 100644 --- a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/StoredProcOutboundGatewayParserTests.java +++ b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/StoredProcOutboundGatewayParserTests.java @@ -29,6 +29,7 @@ import org.junit.Test; import org.springframework.beans.DirectFieldAccessor; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.core.MessagingTemplate; import org.springframework.integration.endpoint.EventDrivenConsumer; import org.springframework.integration.jdbc.storedproc.PrimeMapper; import org.springframework.integration.jdbc.storedproc.ProcedureParameter; @@ -61,6 +62,25 @@ public class StoredProcOutboundGatewayParserTests { assertEquals("Wrong stored procedure name", "GET_PRIME_NUMBERS", storedProcedureName); } + @Test + public void testReplyTimeoutIsSet() throws Exception { + setUp("storedProcOutboundGatewayParserTest.xml", getClass()); + + DirectFieldAccessor accessor = new DirectFieldAccessor(this.outboundGateway); + Object source = accessor.getPropertyValue("handler"); + accessor = new DirectFieldAccessor(source); + source = accessor.getPropertyValue("messagingTemplate"); + + MessagingTemplate messagingTemplate = (MessagingTemplate) source; + + accessor = new DirectFieldAccessor(messagingTemplate); + + Long sendTimeout = (Long) accessor.getPropertyValue("sendTimeout"); + assertEquals("Wrong sendTimeout", Long.valueOf(555L), sendTimeout); + + } + + @Test public void testSkipUndeclaredResultsAttributeSet() throws Exception { setUp("storedProcOutboundGatewayParserTest.xml", getClass()); diff --git a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/outboundPollerSchema.sql b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/outboundPollerSchema.sql index 1e7de53392..5bbc45ec34 100644 --- a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/outboundPollerSchema.sql +++ b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/outboundPollerSchema.sql @@ -1,2 +1,5 @@ +drop table bazz; +drop table foow; + create table bazz(id varchar(100),status int,name varchar(20)); create table foow(id varchar(100),status int,name varchar(20)); \ No newline at end of file diff --git a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/storedProcOutboundGatewayParserTest.xml b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/storedProcOutboundGatewayParserTest.xml index 41eceb4ffa..0ed853c7f4 100644 --- a/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/storedProcOutboundGatewayParserTest.xml +++ b/spring-integration-jdbc/src/test/java/org/springframework/integration/jdbc/config/storedProcOutboundGatewayParserTest.xml @@ -22,7 +22,7 @@ skip-undeclared-results="false" order="2" reply-channel="replyChannel" - request-timeout="555" + reply-timeout="555" return-value-required="false">