An explicit 'trigger' property is now required for the AbstractPollingEndpoint. It no longer creates an arbitrary default.

This commit is contained in:
Mark Fisher
2008-11-25 21:27:12 +00:00
parent db09791428
commit f572b370f3
7 changed files with 26 additions and 4 deletions

View File

@@ -16,6 +16,11 @@
<bean id="endpoint" class="org.springframework.integration.endpoint.PollingConsumer">
<constructor-arg ref="sourceChannel"/>
<constructor-arg ref="serviceActivator"/>
<property name="trigger">
<bean class="org.springframework.integration.scheduling.IntervalTrigger">
<constructor-arg value="100"/>
</bean>
</property>
</bean>
<bean id="serviceActivator" class="org.springframework.integration.handler.ServiceActivatingHandler">

View File

@@ -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();
}

View File

@@ -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");

View File

@@ -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);

View File

@@ -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);
}
}