diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/endpoint/AbstractPollingEndpoint.java b/org.springframework.integration/src/main/java/org/springframework/integration/endpoint/AbstractPollingEndpoint.java index 77c1e9548b..0fb1256c33 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/endpoint/AbstractPollingEndpoint.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/endpoint/AbstractPollingEndpoint.java @@ -28,7 +28,6 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.core.task.TaskExecutor; import org.springframework.integration.channel.BeanFactoryChannelResolver; import org.springframework.integration.channel.MessagePublishingErrorHandler; -import org.springframework.integration.scheduling.IntervalTrigger; import org.springframework.integration.scheduling.Trigger; import org.springframework.integration.util.ErrorHandler; import org.springframework.integration.util.ErrorHandlingTaskExecutor; @@ -137,9 +136,7 @@ public abstract class AbstractPollingEndpoint extends AbstractEndpoint implement if (this.initialized) { return; } - if (this.trigger == null) { - this.trigger = new IntervalTrigger(10); - } + Assert.notNull(this.trigger, "trigger is required"); if (this.transactionManager != null) { if (this.transactionDefinition == null) { this.transactionDefinition = new DefaultTransactionDefinition(); diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/gateway/AbstractMessagingGateway.java b/org.springframework.integration/src/main/java/org/springframework/integration/gateway/AbstractMessagingGateway.java index f218f49f95..9527f994df 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/gateway/AbstractMessagingGateway.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/gateway/AbstractMessagingGateway.java @@ -31,6 +31,7 @@ import org.springframework.integration.handler.ReplyMessageHolder; import org.springframework.integration.message.ErrorMessage; import org.springframework.integration.message.MessageHandler; import org.springframework.integration.message.MessageDeliveryException; +import org.springframework.integration.scheduling.IntervalTrigger; import org.springframework.util.Assert; /** @@ -178,6 +179,7 @@ public abstract class AbstractMessagingGateway extends AbstractEndpoint implemen else if (this.replyChannel instanceof PollableChannel) { PollingConsumer endpoint = new PollingConsumer( (PollableChannel) this.replyChannel, handler); + endpoint.setTrigger(new IntervalTrigger(10)); endpoint.setBeanFactory(this.getBeanFactory()); endpoint.afterPropertiesSet(); correlator = endpoint; diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/bus/messageBusTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/bus/messageBusTests.xml index 37e106e047..4cc7a2b5f2 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/bus/messageBusTests.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/bus/messageBusTests.xml @@ -16,6 +16,11 @@ + + + + + diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/channel/MessageChannelTemplateTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/channel/MessageChannelTemplateTests.java index 0248617913..dd14399f0f 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/channel/MessageChannelTemplateTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/channel/MessageChannelTemplateTests.java @@ -37,6 +37,7 @@ import org.springframework.integration.handler.AbstractReplyProducingMessageHand import org.springframework.integration.handler.ReplyMessageHolder; import org.springframework.integration.message.MessageBuilder; import org.springframework.integration.message.StringMessage; +import org.springframework.integration.scheduling.IntervalTrigger; import org.springframework.integration.util.TestUtils; import org.springframework.integration.util.TestUtils.TestApplicationContext; @@ -61,6 +62,7 @@ public class MessageChannelTemplateTests { } }; PollingConsumer endpoint = new PollingConsumer(requestChannel, handler); + endpoint.setTrigger(new IntervalTrigger(10)); context.registerEndpoint("testEndpoint", endpoint); context.refresh(); } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/endpoint/PollingEndpointStub.java b/org.springframework.integration/src/test/java/org/springframework/integration/endpoint/PollingEndpointStub.java index fbe2b4bb31..b353d5ed29 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/endpoint/PollingEndpointStub.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/endpoint/PollingEndpointStub.java @@ -16,11 +16,17 @@ package org.springframework.integration.endpoint; +import org.springframework.integration.scheduling.IntervalTrigger; + /** * @author Jonas Partner */ public class PollingEndpointStub extends AbstractPollingEndpoint { + public PollingEndpointStub() { + this.setTrigger(new IntervalTrigger(500)); + } + @Override protected boolean doPoll() { throw new RuntimeException("intentional test failure"); diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/message/MethodInvokingMessageHandlerTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/message/MethodInvokingMessageHandlerTests.java index 2a34ac18a8..6ae9d8d3bb 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/message/MethodInvokingMessageHandlerTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/message/MethodInvokingMessageHandlerTests.java @@ -31,6 +31,7 @@ import org.springframework.integration.core.Message; import org.springframework.integration.core.MessagingException; import org.springframework.integration.endpoint.PollingConsumer; import org.springframework.integration.handler.MethodInvokingMessageHandler; +import org.springframework.integration.scheduling.IntervalTrigger; import org.springframework.integration.util.TestUtils; import org.springframework.integration.util.TestUtils.TestApplicationContext; @@ -80,6 +81,7 @@ public class MethodInvokingMessageHandlerTests { assertNull(queue.poll()); MethodInvokingMessageHandler handler = new MethodInvokingMessageHandler(testBean, "foo"); PollingConsumer endpoint = new PollingConsumer(channel, handler); + endpoint.setTrigger(new IntervalTrigger(10)); context.registerEndpoint("testEndpoint", endpoint); context.refresh(); String result = queue.poll(1000, TimeUnit.MILLISECONDS); diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/util/TestUtils.java b/org.springframework.integration/src/test/java/org/springframework/integration/util/TestUtils.java index bc231d2581..83fa03336b 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/util/TestUtils.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/util/TestUtils.java @@ -29,6 +29,8 @@ import org.springframework.context.support.GenericApplicationContext; import org.springframework.integration.context.IntegrationContextUtils; import org.springframework.integration.core.MessageChannel; import org.springframework.integration.endpoint.AbstractEndpoint; +import org.springframework.integration.endpoint.AbstractPollingEndpoint; +import org.springframework.integration.scheduling.IntervalTrigger; import org.springframework.integration.scheduling.SimpleTaskScheduler; import org.springframework.integration.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @@ -128,6 +130,12 @@ public abstract class TestUtils { } public void registerEndpoint(String endpointName, AbstractEndpoint endpoint) { + if (endpoint instanceof AbstractPollingEndpoint) { + DirectFieldAccessor accessor = new DirectFieldAccessor(endpoint); + if (accessor.getPropertyValue("trigger") == null) { + ((AbstractPollingEndpoint) endpoint).setTrigger(new IntervalTrigger(10)); + } + } registerBean(endpointName, endpoint, this); } }