From e10161182b7c555a495e1ae11b7945f80b4a0d53 Mon Sep 17 00:00:00 2001 From: David Syer Date: Wed, 25 Nov 2009 13:18:31 +0000 Subject: [PATCH] RESOLVED - issue SPR-6444: TaskExecutor not initialized in task namespace --- .../scheduling/config/TaskExecutorFactoryBean.java | 4 ++++ .../config/ExecutorBeanDefinitionParserTests.java | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/org.springframework.context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java b/org.springframework.context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java index 649374121c1..3ad7d748d4b 100644 --- a/org.springframework.context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java +++ b/org.springframework.context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java @@ -21,6 +21,7 @@ import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.FactoryBean; +import org.springframework.beans.factory.InitializingBean; import org.springframework.core.JdkVersion; import org.springframework.core.task.TaskExecutor; import org.springframework.util.Assert; @@ -108,6 +109,9 @@ public class TaskExecutorFactoryBean implements FactoryBean, BeanN this.setValueIfNotNull("maxPoolSize", range[1]); } this.target = (TaskExecutor) this.beanWrapper.getWrappedInstance(); + if (this.target instanceof InitializingBean) { + ((InitializingBean)this.target).afterPropertiesSet(); + } } } diff --git a/org.springframework.context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java b/org.springframework.context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java index 50d9c5ad637..29410187466 100644 --- a/org.springframework.context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java +++ b/org.springframework.context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java @@ -18,6 +18,10 @@ package org.springframework.scheduling.config; import static org.junit.Assert.assertEquals; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.FutureTask; + import org.junit.Before; import org.junit.Test; @@ -25,6 +29,7 @@ import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.factory.BeanCreationException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; /** * @author Mark Fisher @@ -41,13 +46,20 @@ public class ExecutorBeanDefinitionParserTests { } @Test - public void defaultExecutor() { + public void defaultExecutor() throws Exception { Object executor = this.context.getBean("default"); assertEquals(1, this.getCorePoolSize(executor)); assertEquals(Integer.MAX_VALUE, this.getMaxPoolSize(executor)); assertEquals(Integer.MAX_VALUE, this.getQueueCapacity(executor)); assertEquals(60, this.getKeepAliveSeconds(executor)); assertEquals(false, this.getAllowCoreThreadTimeOut(executor)); + FutureTask task = new FutureTask(new Callable() { + public String call() throws Exception { + return "foo"; + } + }); + ((ThreadPoolTaskExecutor)executor).execute(task); + assertEquals("foo", task.get()); } @Test