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:
dsyer
2008-02-10 16:27:08 +00:00
parent 31818eed98
commit ad71b2f56e
22 changed files with 187 additions and 164 deletions

View File

@@ -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");

View File

@@ -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);
}

View File

@@ -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());

View File

@@ -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());
}
}