OPEN - issue BATCH-347: aop / template interceptor class names ambiguous
http://jira.springframework.org/browse/BATCH-347 Rename Rpeat/RetryInterceptor as *Listener (and get rid of last error in samples).
This commit is contained in:
@@ -28,6 +28,11 @@ import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.tasklet.Tasklet;
|
||||
import org.springframework.batch.io.exception.BatchCriticalException;
|
||||
import org.springframework.batch.repeat.ExitStatus;
|
||||
import org.springframework.batch.repeat.RepeatCallback;
|
||||
import org.springframework.batch.repeat.RepeatContext;
|
||||
import org.springframework.batch.repeat.RepeatListener;
|
||||
import org.springframework.batch.repeat.policy.SimpleCompletionPolicy;
|
||||
import org.springframework.batch.repeat.support.RepeatTemplate;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
@@ -46,6 +51,16 @@ public class TaskletStep extends StepSupport implements InitializingBean {
|
||||
|
||||
private JobRepository jobRepository;
|
||||
|
||||
private RepeatListener[] listeners = new RepeatListener[] {};
|
||||
|
||||
public void setListeners(RepeatListener[] listeners) {
|
||||
this.listeners = listeners;
|
||||
}
|
||||
|
||||
public void setListener(RepeatListener listener) {
|
||||
listeners = new RepeatListener[] { listener };
|
||||
}
|
||||
|
||||
/**
|
||||
* Check mandatory properties.
|
||||
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
|
||||
@@ -97,8 +112,21 @@ public class TaskletStep extends StepSupport implements InitializingBean {
|
||||
|
||||
ExitStatus exitStatus = ExitStatus.FAILED;
|
||||
try {
|
||||
exitStatus = tasklet.execute();
|
||||
|
||||
// We are using the RepeatTemplate as a vehicle for the listener
|
||||
// so it can be set up cheaply here with standard properties.
|
||||
RepeatTemplate template = new RepeatTemplate();
|
||||
template.setCompletionPolicy(new SimpleCompletionPolicy(1));
|
||||
|
||||
template.setListeners(listeners);
|
||||
exitStatus =template.iterate(new RepeatCallback() {
|
||||
public ExitStatus doInIteration(RepeatContext context) throws Exception {
|
||||
return tasklet.execute();
|
||||
}
|
||||
});
|
||||
|
||||
updateStatus(stepExecution, BatchStatus.COMPLETED);
|
||||
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.error("Encountered an error running the tasklet");
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.springframework.batch.item.ItemWriter;
|
||||
import org.springframework.batch.item.reader.ItemReaderAdapter;
|
||||
import org.springframework.batch.item.writer.ItemWriterAdapter;
|
||||
import org.springframework.batch.repeat.RepeatContext;
|
||||
import org.springframework.batch.repeat.interceptor.RepeatInterceptorAdapter;
|
||||
import org.springframework.batch.repeat.interceptor.RepeatListenerAdapter;
|
||||
import org.springframework.batch.repeat.policy.SimpleCompletionPolicy;
|
||||
import org.springframework.batch.repeat.support.RepeatTemplate;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
@@ -75,7 +75,7 @@ public class RepeatOperationsStepTests extends TestCase {
|
||||
public void testSuccessfulRepeatOperationsHolder() throws Exception {
|
||||
RepeatTemplate repeatTemplate = new RepeatTemplate();
|
||||
final List list = new ArrayList();
|
||||
repeatTemplate.setInterceptor(new RepeatInterceptorAdapter() {
|
||||
repeatTemplate.setListener(new RepeatListenerAdapter() {
|
||||
public void onError(RepeatContext context, Throwable e) {
|
||||
list.add(e);
|
||||
}
|
||||
@@ -107,7 +107,7 @@ public class RepeatOperationsStepTests extends TestCase {
|
||||
public void testSuccessfulRepeatOperationsHolderWithStepOperations() throws Exception {
|
||||
RepeatTemplate chunkTemplate = new RepeatTemplate();
|
||||
final List list = new ArrayList();
|
||||
chunkTemplate.setInterceptor(new RepeatInterceptorAdapter() {
|
||||
chunkTemplate.setListener(new RepeatListenerAdapter() {
|
||||
public void before(RepeatContext context) {
|
||||
list.add(context);
|
||||
}
|
||||
@@ -115,7 +115,7 @@ public class RepeatOperationsStepTests extends TestCase {
|
||||
chunkTemplate.setCompletionPolicy(new SimpleCompletionPolicy(2));
|
||||
RepeatTemplate stepTemplate = new RepeatTemplate();
|
||||
final List steps = new ArrayList();
|
||||
stepTemplate.setInterceptor(new RepeatInterceptorAdapter() {
|
||||
stepTemplate.setListener(new RepeatListenerAdapter() {
|
||||
public void before(RepeatContext context) {
|
||||
steps.add(context);
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ import org.springframework.batch.repeat.ExitStatus;
|
||||
import org.springframework.batch.repeat.RepeatContext;
|
||||
import org.springframework.batch.repeat.exception.handler.DefaultExceptionHandler;
|
||||
import org.springframework.batch.repeat.exception.handler.ExceptionHandler;
|
||||
import org.springframework.batch.repeat.interceptor.RepeatInterceptorAdapter;
|
||||
import org.springframework.batch.repeat.interceptor.RepeatListenerAdapter;
|
||||
import org.springframework.batch.repeat.policy.SimpleCompletionPolicy;
|
||||
import org.springframework.batch.repeat.support.RepeatTemplate;
|
||||
import org.springframework.batch.support.PropertiesConverter;
|
||||
@@ -186,7 +186,7 @@ public class SimpleStepExecutorTests extends TestCase {
|
||||
jobExecution.setId(new Long(1));
|
||||
final StepExecution stepExecution = new StepExecution(step, jobExecution);
|
||||
|
||||
template.setInterceptor(new RepeatInterceptorAdapter() {
|
||||
template.setListener(new RepeatListenerAdapter() {
|
||||
public void open(RepeatContext context) {
|
||||
assertNotNull(StepSynchronizationManager.getContext().getStepExecution());
|
||||
assertEquals(stepExecution, StepSynchronizationManager.getContext().getStepExecution());
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package org.springframework.batch.execution.step.tasklet;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.batch.core.domain.JobExecution;
|
||||
@@ -12,11 +15,15 @@ import org.springframework.batch.core.tasklet.Tasklet;
|
||||
import org.springframework.batch.execution.step.simple.JobRepositorySupport;
|
||||
import org.springframework.batch.io.exception.BatchCriticalException;
|
||||
import org.springframework.batch.repeat.ExitStatus;
|
||||
import org.springframework.batch.repeat.RepeatContext;
|
||||
import org.springframework.batch.repeat.interceptor.RepeatListenerAdapter;
|
||||
|
||||
public class TaskletStepTests extends TestCase {
|
||||
|
||||
private StepExecution stepExecution;
|
||||
|
||||
private List list = new ArrayList();
|
||||
|
||||
protected void setUp() throws Exception {
|
||||
stepExecution = new StepExecution(new StepInstance(new Long(11)), new JobExecution(new JobInstance(
|
||||
new Long(0L), new JobParameters()), new Long(12)));
|
||||
@@ -45,22 +52,37 @@ public class TaskletStepTests extends TestCase {
|
||||
}
|
||||
}
|
||||
|
||||
public void testSuccessfulExecution() throws StepInterruptedException, BatchCriticalException {
|
||||
public void testSuccessfulExecution() throws Exception {
|
||||
TaskletStep step = new TaskletStep(new StubTasklet(false, false), new JobRepositorySupport());
|
||||
step.execute(stepExecution);
|
||||
assertNotNull(stepExecution.getStartTime());
|
||||
assertSame(ExitStatus.FINISHED, stepExecution.getExitStatus());
|
||||
assertEquals(ExitStatus.FINISHED, stepExecution.getExitStatus());
|
||||
assertNotNull(stepExecution.getEndTime());
|
||||
}
|
||||
|
||||
public void testFailureExecution() throws StepInterruptedException, BatchCriticalException {
|
||||
public void testFailureExecution() throws Exception {
|
||||
TaskletStep step = new TaskletStep(new StubTasklet(true, false), new JobRepositorySupport());
|
||||
step.execute(stepExecution);
|
||||
assertNotNull(stepExecution.getStartTime());
|
||||
assertSame(ExitStatus.FAILED, stepExecution.getExitStatus());
|
||||
assertEquals(ExitStatus.FAILED, stepExecution.getExitStatus());
|
||||
assertNotNull(stepExecution.getEndTime());
|
||||
}
|
||||
|
||||
public void testSuccessfulExecutionWithListener() throws Exception {
|
||||
TaskletStep step = new TaskletStep(new StubTasklet(false, false), new JobRepositorySupport());
|
||||
step.setListener(new RepeatListenerAdapter() {
|
||||
public void open(RepeatContext context) {
|
||||
list.add("open");
|
||||
}
|
||||
public void close(RepeatContext context) {
|
||||
list.add("close");
|
||||
}
|
||||
});
|
||||
step.execute(stepExecution);
|
||||
System.err.println(list);
|
||||
assertEquals(2, list.size());
|
||||
}
|
||||
|
||||
public void testExceptionExecution() throws StepInterruptedException, BatchCriticalException {
|
||||
TaskletStep step = new TaskletStep(new StubTasklet(false, true), new JobRepositorySupport());
|
||||
try {
|
||||
@@ -69,7 +91,7 @@ public class TaskletStepTests extends TestCase {
|
||||
}
|
||||
catch (BatchCriticalException e) {
|
||||
assertNotNull(stepExecution.getStartTime());
|
||||
assertSame(ExitStatus.FAILED, stepExecution.getExitStatus());
|
||||
assertEquals(ExitStatus.FAILED, stepExecution.getExitStatus());
|
||||
assertNotNull(stepExecution.getEndTime());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user