From 65d2df652abaae2ca309d96e3026c2d67312655f Mon Sep 17 00:00:00 2001 From: Chris Schaefer Date: Thu, 5 Sep 2013 15:35:31 -0400 Subject: [PATCH] Add ability to set a custom TaskExecutor impl, remove unused namespaces from JSR bootstrap XML files --- .../batch/core/jsr/launch/JsrJobOperator.java | 18 +++++++++++++++++- .../src/main/resources/baseContext.xml | 5 +---- .../src/main/resources/beanRefContext.xml | 12 +----------- .../core/jsr/launch/JsrJobOperatorTests.java | 19 +++++++++++++++++++ 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/launch/JsrJobOperator.java b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/launch/JsrJobOperator.java index 7e4b5251d..35d63671e 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/launch/JsrJobOperator.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/launch/JsrJobOperator.java @@ -49,6 +49,7 @@ import org.springframework.batch.core.jsr.JsrJobParametersConverter; import org.springframework.batch.core.jsr.configuration.support.BatchPropertyContext; import org.springframework.batch.core.jsr.configuration.support.ThreadLocalClassloaderBeanPostProcessor; import org.springframework.batch.core.repository.JobRepository; +import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.access.BeanFactoryLocator; import org.springframework.beans.factory.access.BeanFactoryReference; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; @@ -116,7 +117,7 @@ import org.springframework.util.Assert; * @author Chris Schaefer * @since 3.0 */ -public class JsrJobOperator implements JobOperator { +public class JsrJobOperator implements JobOperator, InitializingBean { private static final String BATCH_PROPERTY_CONTEXT_BEAN_NAME = "batchPropertyContext"; private org.springframework.batch.core.launch.JobOperator batchJobOperator; @@ -183,6 +184,21 @@ public class JsrJobOperator implements JobOperator { this.batchJobOperator = jobOperator; } + public void setTaskExecutor(TaskExecutor taskExecutor) { + this.taskExecutor = taskExecutor; + } + + protected TaskExecutor getTaskExecutor() { + return taskExecutor; + } + + @Override + public void afterPropertiesSet() throws Exception { + if (this.taskExecutor == null) { + this.taskExecutor = new SyncTaskExecutor(); + } + } + /** * Used to convert the {@link Properties} objects used by JSR-352 to the {@link JobParameters} * objects used in Spring Batch. The default implementation used will configure all parameters diff --git a/spring-batch-core/src/main/resources/baseContext.xml b/spring-batch-core/src/main/resources/baseContext.xml index c77193bfe..974b7d0cb 100644 --- a/spring-batch-core/src/main/resources/baseContext.xml +++ b/spring-batch-core/src/main/resources/baseContext.xml @@ -1,6 +1,5 @@ + http://www.springframework.org/schema/jdbc/spring-jdbc.xsd"> diff --git a/spring-batch-core/src/main/resources/beanRefContext.xml b/spring-batch-core/src/main/resources/beanRefContext.xml index 41d4508e9..2525a99f9 100644 --- a/spring-batch-core/src/main/resources/beanRefContext.xml +++ b/spring-batch-core/src/main/resources/beanRefContext.xml @@ -1,17 +1,8 @@ + http://www.springframework.org/schema/beans/spring-beans.xsd"> @@ -20,5 +11,4 @@ - diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/launch/JsrJobOperatorTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/launch/JsrJobOperatorTests.java index dfdb05962..e5a62cbb1 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/launch/JsrJobOperatorTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/launch/JsrJobOperatorTests.java @@ -41,6 +41,8 @@ import org.springframework.batch.core.jsr.JsrJobParametersConverter; import org.springframework.batch.core.launch.support.SimpleJobOperator; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.step.JobRepositorySupport; +import org.springframework.core.task.SimpleAsyncTaskExecutor; +import org.springframework.core.task.SyncTaskExecutor; public class JsrJobOperatorTests { @@ -95,6 +97,23 @@ public class JsrJobOperatorTests { new JsrJobOperator(new SimpleJobExplorer(null, null, null, null), new JobRepositorySupport(), new SimpleJobOperator(), parameterConverter); } + @Test + public void testDefaultTaskExecutor() throws Exception { + JsrJobOperator jsrJobOperatorImpl = (JsrJobOperator) jsrJobOperator; + jsrJobOperatorImpl.afterPropertiesSet(); + assertNotNull(jsrJobOperatorImpl.getTaskExecutor()); + assertTrue((jsrJobOperatorImpl.getTaskExecutor() instanceof SyncTaskExecutor)); + } + + @Test + public void testCustomTaskExecutor() throws Exception { + JsrJobOperator jsrJobOperatorImpl = (JsrJobOperator) jsrJobOperator; + jsrJobOperatorImpl.setTaskExecutor(new SimpleAsyncTaskExecutor()); + jsrJobOperatorImpl.afterPropertiesSet(); + assertNotNull(jsrJobOperatorImpl.getTaskExecutor()); + assertTrue((jsrJobOperatorImpl.getTaskExecutor() instanceof SimpleAsyncTaskExecutor)); + } + @Test public void testAbandonRoseyScenario() throws Exception { JobExecution jobExecution = new JobExecution(5l);