From 0dfe9ca191e39bb94896df770bd925e08b22a56b Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Fri, 10 Oct 2008 14:48:11 +0000 Subject: [PATCH] Added support for "taskExecutor" on the @Poller annotation. This requires a reference to a TaskExecutor instance resolvable by bean name (INT-409). --- .../springframework/integration/annotation/Poller.java | 2 ++ .../config/annotation/AnnotationConfigUtils.java | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/annotation/Poller.java b/org.springframework.integration/src/main/java/org/springframework/integration/annotation/Poller.java index e37705841a..258e164576 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/annotation/Poller.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/annotation/Poller.java @@ -49,6 +49,8 @@ public @interface Poller { int maxMessagesPerPoll() default -1; + String taskExecutor() default ""; + Transactional transactionAttributes() default @Transactional; String transactionManager() default ""; diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/annotation/AnnotationConfigUtils.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/annotation/AnnotationConfigUtils.java index 490dae08a8..d08d8e5501 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/annotation/AnnotationConfigUtils.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/annotation/AnnotationConfigUtils.java @@ -22,6 +22,7 @@ import java.util.List; import org.aopalliance.aop.Advice; import org.springframework.beans.factory.BeanFactory; +import org.springframework.core.task.TaskExecutor; import org.springframework.integration.annotation.Poller; import org.springframework.integration.endpoint.AbstractPollingEndpoint; import org.springframework.integration.scheduling.IntervalTrigger; @@ -57,6 +58,13 @@ public abstract class AnnotationConfigUtils { Transactional txAnnotation = pollerAnnotation.transactionAttributes(); endpoint.setTransactionDefinition(parseTransactionAnnotation(txAnnotation)); } + if (StringUtils.hasText(pollerAnnotation.taskExecutor())) { + String taskExecutorRef = pollerAnnotation.taskExecutor(); + Assert.isTrue(beanFactory.containsBean(taskExecutorRef), + "failed to resolve taskExecutor reference, no such bean '" + taskExecutorRef + "'"); + TaskExecutor taskExecutor = (TaskExecutor) beanFactory.getBean(taskExecutorRef, TaskExecutor.class); + endpoint.setTaskExecutor(taskExecutor); + } String[] adviceChainArray = pollerAnnotation.adviceChain(); if (adviceChainArray.length > 0) { List adviceChain = new ArrayList();