INT-736 Added support for the 'scheduler' reference.

This commit is contained in:
Mark Fisher
2009-07-18 00:53:33 +00:00
parent 76da6421d3
commit 260690381c
4 changed files with 45 additions and 4 deletions

View File

@@ -13,7 +13,7 @@
<queue />
</channel>
<delayer id="delayer"
<delayer id="delayerWithDefaultScheduler"
input-channel="input"
output-channel="output"
default-delay="1234"
@@ -22,4 +22,14 @@
send-timeout="987"
wait-for-tasks-to-complete-on-shutdown="true"/>
<delayer id="delayerWithCustomScheduler"
input-channel="input"
output-channel="output"
default-delay="0"
scheduler="testScheduler"/>
<beans:bean id="testScheduler" class="org.springframework.scheduling.concurrent.ScheduledExecutorFactoryBean">
<beans:property name="poolSize" value="7"/>
</beans:bean>
</beans:beans>

View File

@@ -24,6 +24,7 @@ import org.junit.runner.RunWith;
import org.springframework.beans.DirectFieldAccessor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.Ordered;
import org.springframework.integration.endpoint.EventDrivenConsumer;
import org.springframework.integration.handler.DelayHandler;
import org.springframework.test.context.ContextConfiguration;
@@ -42,8 +43,8 @@ public class DelayerParserTests {
@Test
public void checkConfiguration() {
Object endpoint = context.getBean("delayer");
public void defaultScheduler() {
Object endpoint = context.getBean("delayerWithDefaultScheduler");
assertEquals(EventDrivenConsumer.class, endpoint.getClass());
Object handler = new DirectFieldAccessor(endpoint).getPropertyValue("handler");
assertEquals(DelayHandler.class, handler.getClass());
@@ -58,4 +59,19 @@ public class DelayerParserTests {
assertEquals(Boolean.TRUE, accessor.getPropertyValue("waitForTasksToCompleteOnShutdown"));
}
@Test
public void customScheduler() {
Object endpoint = context.getBean("delayerWithCustomScheduler");
assertEquals(EventDrivenConsumer.class, endpoint.getClass());
Object handler = new DirectFieldAccessor(endpoint).getPropertyValue("handler");
assertEquals(DelayHandler.class, handler.getClass());
DelayHandler delayHandler = (DelayHandler) handler;
assertEquals(Ordered.LOWEST_PRECEDENCE, delayHandler.getOrder());
DirectFieldAccessor accessor = new DirectFieldAccessor(delayHandler);
assertEquals(context.getBean("output"), accessor.getPropertyValue("outputChannel"));
assertEquals(new Long(0), accessor.getPropertyValue("defaultDelay"));
assertEquals(context.getBean("testScheduler"), accessor.getPropertyValue("scheduler"));
}
}