diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/StepBuilderHelper.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/StepBuilderHelper.java index 572d47c3d..7bfba0a24 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/StepBuilderHelper.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/StepBuilderHelper.java @@ -55,29 +55,39 @@ public abstract class StepBuilderHelper> { this.properties = new CommonStepProperties(parent.properties); } - public StepBuilderHelper repository(JobRepository jobRepository) { + public B repository(JobRepository jobRepository) { properties.jobRepository = jobRepository; - return this; + @SuppressWarnings("unchecked") + B result = (B) this; + return result; } - public StepBuilderHelper transactionManager(PlatformTransactionManager transactionManager) { + public B transactionManager(PlatformTransactionManager transactionManager) { properties.transactionManager = transactionManager; - return this; + @SuppressWarnings("unchecked") + B result = (B) this; + return result; } - public StepBuilderHelper startLimit(int startLimit) { + public B startLimit(int startLimit) { properties.startLimit = startLimit; - return this; + @SuppressWarnings("unchecked") + B result = (B) this; + return result; } - public StepBuilderHelper listener(StepExecutionListener listener) { + public B listener(StepExecutionListener listener) { properties.addStepExecutionListener(listener); - return this; + @SuppressWarnings("unchecked") + B result = (B) this; + return result; } - public StepBuilderHelper allowStartIfComplete(boolean allowStartIfComplete) { + public B allowStartIfComplete(boolean allowStartIfComplete) { properties.allowStartIfComplete = allowStartIfComplete; - return this; + @SuppressWarnings("unchecked") + B result = (B) this; + return result; } protected String getName() { diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/builder/StepBuilderTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/builder/StepBuilderTests.java new file mode 100644 index 000000000..4c8e5699f --- /dev/null +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/builder/StepBuilderTests.java @@ -0,0 +1,53 @@ +/* + * Copyright 2012-2013 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.batch.core.step.builder; + +import org.junit.Test; +import org.springframework.batch.core.JobParameters; +import org.springframework.batch.core.StepContribution; +import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.repository.JobRepository; +import org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean; +import org.springframework.batch.core.scope.context.ChunkContext; +import org.springframework.batch.core.step.tasklet.Tasklet; +import org.springframework.batch.repeat.RepeatStatus; +import org.springframework.batch.support.transaction.ResourcelessTransactionManager; +import org.springframework.transaction.PlatformTransactionManager; + +/** + * @author Dave Syer + * + */ +public class StepBuilderTests { + + @Test + public void test() throws Exception { + JobRepository jobRepository = new MapJobRepositoryFactoryBean().getJobRepository(); + StepExecution execution = jobRepository.createJobExecution("foo", new JobParameters()).createStepExecution( + "step"); + jobRepository.add(execution); + PlatformTransactionManager transactionManager = new ResourcelessTransactionManager(); + TaskletStepBuilder builder = new StepBuilder("step").repository(jobRepository) + .transactionManager(transactionManager).tasklet(new Tasklet() { + public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) + throws Exception { + return null; + } + }); + builder.build().execute(execution); + } + +}