diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/step/batchlet/BatchletAdapter.java b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/step/batchlet/BatchletAdapter.java index ec9992785..993a8e70b 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/step/batchlet/BatchletAdapter.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/step/batchlet/BatchletAdapter.java @@ -16,17 +16,22 @@ package org.springframework.batch.core.jsr.step.batchlet; import javax.batch.api.Batchlet; +import javax.batch.operations.BatchRuntimeException; import org.springframework.batch.core.ExitStatus; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; -import org.springframework.batch.core.step.tasklet.Tasklet; +import org.springframework.batch.core.step.tasklet.StoppableTasklet; import org.springframework.batch.repeat.RepeatStatus; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -//TODO: This needs to implement StoppableTasklet -public class BatchletAdapter implements Tasklet { +/** + * + * @author Michael Minella + * @since 3.0 + */ +public class BatchletAdapter implements StoppableTasklet { private Batchlet batchlet; @@ -47,9 +52,12 @@ public class BatchletAdapter implements Tasklet { return RepeatStatus.FINISHED; } - //TODO: Once the stoppable tasklet is implemented...this will be good to go - // @Override - // public void stop() { - // batchlet.stop(); - // } + @Override + public void stop() { + try { + batchlet.stop(); + } catch (Exception e) { + throw new BatchRuntimeException(e); + } + } } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/step/batchlet/BatchletAdapterTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/step/batchlet/BatchletAdapterTests.java index fe84ddb6a..efa863379 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/step/batchlet/BatchletAdapterTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/step/batchlet/BatchletAdapterTests.java @@ -1,10 +1,12 @@ package org.springframework.batch.core.jsr.step.batchlet; import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import javax.batch.api.Batchlet; +import javax.batch.operations.BatchRuntimeException; import org.junit.Before; import org.junit.Test; @@ -50,4 +52,16 @@ public class BatchletAdapterTests { verify(delegate).process(); verify(contribution).setExitStatus(new ExitStatus("my exit status")); } + + @Test + public void testStop() throws Exception{ + adapter.stop(); + verify(delegate).stop(); + } + + @Test(expected=BatchRuntimeException.class) + public void testStopException() throws Exception{ + doThrow(new Exception("expected")).when(delegate).stop(); + adapter.stop(); + } }