diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/tasklet/TaskletStep.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/tasklet/TaskletStep.java index e74a437a5..6871336de 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/tasklet/TaskletStep.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/step/tasklet/TaskletStep.java @@ -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"); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/RepeatOperationsStepTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/RepeatOperationsStepTests.java index 28c5b6386..42cd9a33c 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/RepeatOperationsStepTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/RepeatOperationsStepTests.java @@ -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); } diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/SimpleStepExecutorTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/SimpleStepExecutorTests.java index 57aefdc80..fc8022065 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/SimpleStepExecutorTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/simple/SimpleStepExecutorTests.java @@ -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()); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/tasklet/TaskletStepTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/tasklet/TaskletStepTests.java index 9c159d968..abcccc934 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/tasklet/TaskletStepTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/tasklet/TaskletStepTests.java @@ -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()); } } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/support/HibernateAwareItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/support/HibernateAwareItemWriter.java index d593b0b6f..f51d2e33c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/support/HibernateAwareItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/io/support/HibernateAwareItemWriter.java @@ -22,7 +22,7 @@ import org.hibernate.SessionFactory; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatContext; -import org.springframework.batch.repeat.RepeatInterceptor; +import org.springframework.batch.repeat.RepeatListener; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.AttributeAccessor; import org.springframework.orm.hibernate3.HibernateOperations; @@ -35,14 +35,14 @@ import org.springframework.util.Assert; * boundaries away from a less smart {@link ItemWriter} (the delegate). A delegate is required, and will be used to do * the actual writing of the item.
* - * This class implements {@link RepeatInterceptor} and it will only work if properly registered. If the delegate is also - * a {@link RepeatInterceptor} then it does not need to be separately registered as we make the callbacks here in the + * This class implements {@link RepeatListener} and it will only work if properly registered. If the delegate is also + * a {@link RepeatListener} then it does not need to be separately registered as we make the callbacks here in the * right places. * * @author Dave Syer * */ -public class HibernateAwareItemWriter implements ItemWriter, RepeatInterceptor, InitializingBean { +public class HibernateAwareItemWriter implements ItemWriter, RepeatListener, InitializingBean { /** * Key for items processed in the current transaction {@link RepeatContext}. @@ -114,41 +114,41 @@ public class HibernateAwareItemWriter implements ItemWriter, RepeatInterceptor, } /** - * Does nothing unless the delegate is also a {@link RepeatInterceptor} in which case pass on the call to him. + * Does nothing unless the delegate is also a {@link RepeatListener} in which case pass on the call to him. * - * @see org.springframework.batch.repeat.RepeatInterceptor#before(org.springframework.batch.repeat.RepeatContext) + * @see org.springframework.batch.repeat.RepeatListener#before(org.springframework.batch.repeat.RepeatContext) */ public void before(RepeatContext context) { - if (delegate instanceof RepeatInterceptor) { - RepeatInterceptor interceptor = (RepeatInterceptor) delegate; + if (delegate instanceof RepeatListener) { + RepeatListener interceptor = (RepeatListener) delegate; interceptor.before(context); } } /** - * Does nothing unless the delegate is also a {@link RepeatInterceptor} in which case pass on the call to him. + * Does nothing unless the delegate is also a {@link RepeatListener} in which case pass on the call to him. * - * @see org.springframework.batch.repeat.RepeatInterceptor#after(org.springframework.batch.repeat.RepeatContext, + * @see org.springframework.batch.repeat.RepeatListener#after(org.springframework.batch.repeat.RepeatContext, * org.springframework.batch.repeat.ExitStatus) */ public void after(RepeatContext context, ExitStatus result) { - if (delegate instanceof RepeatInterceptor) { - RepeatInterceptor interceptor = (RepeatInterceptor) delegate; + if (delegate instanceof RepeatListener) { + RepeatListener interceptor = (RepeatListener) delegate; interceptor.after(context, result); } } /** * Flush the Hibernate session so that any batch exceptions are within the RepeatContext. If the delegate is also a - * {@link RepeatInterceptor} then it will be given the call before flushing. + * {@link RepeatListener} then it will be given the call before flushing. * * - * @see org.springframework.batch.repeat.RepeatInterceptor#close(org.springframework.batch.repeat.RepeatContext) + * @see org.springframework.batch.repeat.RepeatListener#close(org.springframework.batch.repeat.RepeatContext) */ public void close(RepeatContext context) { try { - if (delegate instanceof RepeatInterceptor) { - RepeatInterceptor interceptor = (RepeatInterceptor) delegate; + if (delegate instanceof RepeatListener) { + RepeatListener interceptor = (RepeatListener) delegate; interceptor.close(context); } flush(); @@ -175,30 +175,30 @@ public class HibernateAwareItemWriter implements ItemWriter, RepeatInterceptor, } /** - * Does nothing unless the delegate is also a {@link RepeatInterceptor} in which case pass on the call to him. + * Does nothing unless the delegate is also a {@link RepeatListener} in which case pass on the call to him. * - * @see org.springframework.batch.repeat.RepeatInterceptor#onError(org.springframework.batch.repeat.RepeatContext, + * @see org.springframework.batch.repeat.RepeatListener#onError(org.springframework.batch.repeat.RepeatContext, * java.lang.Throwable) */ public void onError(RepeatContext context, Throwable e) { - if (delegate instanceof RepeatInterceptor) { - RepeatInterceptor interceptor = (RepeatInterceptor) delegate; + if (delegate instanceof RepeatListener) { + RepeatListener interceptor = (RepeatListener) delegate; interceptor.onError(context, e); } } /** * Sets up the context as a transaction resource so that we can store state and refer back to it in the - * {@link #write(Object)} method. If the delegate is also a {@link RepeatInterceptor} then it will be given the call + * {@link #write(Object)} method. If the delegate is also a {@link RepeatListener} then it will be given the call * afterwards. * - * @see org.springframework.batch.repeat.RepeatInterceptor#open(org.springframework.batch.repeat.RepeatContext) + * @see org.springframework.batch.repeat.RepeatListener#open(org.springframework.batch.repeat.RepeatContext) */ public void open(RepeatContext context) { this.setContext(context); getProcessed().clear(); - if (delegate instanceof RepeatInterceptor) { - RepeatInterceptor interceptor = (RepeatInterceptor) delegate; + if (delegate instanceof RepeatListener) { + RepeatListener interceptor = (RepeatListener) delegate; interceptor.open(context); } } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatInterceptor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatListener.java similarity index 80% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatInterceptor.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatListener.java index a2643ae1b..6049173d4 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatInterceptor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/RepeatListener.java @@ -17,20 +17,19 @@ package org.springframework.batch.repeat; /** - * Interface for interceptors in the batch process. Implementers can provide + * Interface for listeners to the batch process. Implementers can provide * enhance the behaviour of a batch in small cross-cutting modules. The * framework provides callbacks at key points in the processing. * * @author Dave Syer * */ -public interface RepeatInterceptor { +public interface RepeatListener { /** * Called by the framework before each batch item. Implementers can halt a * batch by setting the complete flag on the context. * - * @param context - * the current batch context. + * @param context the current batch context. */ void before(RepeatContext context); @@ -39,10 +38,8 @@ public interface RepeatInterceptor { * item processing results in an exception. This method is called as soon as * the result is known. * - * @param context - * the current batch context - * @param result - * the result of the callback + * @param context the current batch context + * @param result the result of the callback */ void after(RepeatContext context, ExitStatus result); @@ -54,8 +51,7 @@ public interface RepeatInterceptor { * enclosing batches (the whole job), the would need to use the parent * context (recursively). * - * @param context - * the current batch context + * @param context the current batch context */ void open(RepeatContext context); @@ -67,10 +63,8 @@ public interface RepeatInterceptor { * There is no need to re-throw the exception here - that will be done by * the enclosing framework. * - * @param context - * the current batch context - * @param e - * the error that was encountered in an item callback. + * @param context the current batch context + * @param e the error that was encountered in an item callback. */ void onError(RepeatContext context, Throwable e); @@ -79,8 +73,7 @@ public interface RepeatInterceptor { * completion (i.e. even after an exception). Implementers can use this * method to clean up any resources. * - * @param context - * the current batch context. + * @param context the current batch context. */ void close(RepeatContext context); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/aop/RepeatOperationsInterceptor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/aop/RepeatOperationsInterceptor.java index b6d13b2a4..9efef8391 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/aop/RepeatOperationsInterceptor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/aop/RepeatOperationsInterceptor.java @@ -38,7 +38,6 @@ import org.springframework.util.Assert; * not-null, representing the {@link Void#TYPE}). * * @author Dave Syer - * @since 2.1 */ public class RepeatOperationsInterceptor implements MethodInterceptor { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatInterceptor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatListener.java similarity index 92% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatInterceptor.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatListener.java index 9623f5c55..7cdebb810 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatInterceptor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatListener.java @@ -17,7 +17,7 @@ package org.springframework.batch.repeat.interceptor; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatContext; -import org.springframework.batch.repeat.RepeatInterceptor; +import org.springframework.batch.repeat.RepeatListener; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; @@ -25,7 +25,7 @@ import org.springframework.context.ApplicationEventPublisherAware; * @author Dave Syer * */ -public class ApplicationEventPublisherRepeatInterceptor implements ApplicationEventPublisherAware, RepeatInterceptor { +public class ApplicationEventPublisherRepeatListener implements ApplicationEventPublisherAware, RepeatListener { private ApplicationEventPublisher applicationEventPublisher; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/RepeatInterceptorAdapter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/RepeatListenerAdapter.java similarity index 89% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/RepeatInterceptorAdapter.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/RepeatListenerAdapter.java index 3c8e4a91f..c4c94658b 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/RepeatInterceptorAdapter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/interceptor/RepeatListenerAdapter.java @@ -18,9 +18,9 @@ package org.springframework.batch.repeat.interceptor; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatContext; -import org.springframework.batch.repeat.RepeatInterceptor; +import org.springframework.batch.repeat.RepeatListener; -public class RepeatInterceptorAdapter implements RepeatInterceptor { +public class RepeatListenerAdapter implements RepeatListener { public void before(RepeatContext context) { } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/support/RepeatTemplate.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/support/RepeatTemplate.java index 033e9b9e1..94ef90a07 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/support/RepeatTemplate.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/support/RepeatTemplate.java @@ -24,7 +24,7 @@ import org.springframework.batch.repeat.CompletionPolicy; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatCallback; import org.springframework.batch.repeat.RepeatContext; -import org.springframework.batch.repeat.RepeatInterceptor; +import org.springframework.batch.repeat.RepeatListener; import org.springframework.batch.repeat.RepeatOperations; import org.springframework.batch.repeat.exception.RepeatException; import org.springframework.batch.repeat.exception.handler.DefaultExceptionHandler; @@ -48,9 +48,9 @@ import org.springframework.util.Assert; * * Clients that want to take some business action when an exception is thrown by * the {@link RepeatCallback} can consider using a custom - * {@link RepeatInterceptor} instead of trying to customise the + * {@link RepeatListener} instead of trying to customise the * {@link CompletionPolicy}. This is generally a friendlier interface to - * implement, and the {@link RepeatInterceptor#after(RepeatContext, ExitStatus)} + * implement, and the {@link RepeatListener#after(RepeatContext, ExitStatus)} * method is passed in the result of the callback, which would be an instance of * {@link Throwable} if the business processing had thrown an exception. If the * exception is not to be propagated to the caller, then a non-default @@ -64,18 +64,18 @@ public class RepeatTemplate implements RepeatOperations { protected Log logger = LogFactory.getLog(getClass()); - private RepeatInterceptor[] interceptors = new RepeatInterceptor[] {}; + private RepeatListener[] listeners = new RepeatListener[] {}; private CompletionPolicy completionPolicy = new DefaultResultCompletionPolicy(); private ExceptionHandler exceptionHandler = new DefaultExceptionHandler(); - public void setInterceptors(RepeatInterceptor[] interceptors) { - this.interceptors = interceptors; + public void setListeners(RepeatListener[] listeners) { + this.listeners = listeners; } - public void setInterceptor(RepeatInterceptor interceptor) { - interceptors = new RepeatInterceptor[] { interceptor }; + public void setListener(RepeatListener listener) { + listeners = new RepeatListener[] { listener }; } /** @@ -159,8 +159,8 @@ public class RepeatTemplate implements RepeatOperations { // processing takes place. boolean running = !isMarkedComplete(context); - for (int i = 0; i < interceptors.length; i++) { - RepeatInterceptor interceptor = interceptors[i]; + for (int i = 0; i < listeners.length; i++) { + RepeatListener interceptor = listeners[i]; interceptor.open(context); running = running && !isMarkedComplete(context); if (!running) @@ -182,8 +182,8 @@ public class RepeatTemplate implements RepeatOperations { * that they all happen in the same thread - it's easier for * tracking batch status, amongst other things. */ - for (int i = 0; i < interceptors.length; i++) { - RepeatInterceptor interceptor = interceptors[i]; + for (int i = 0; i < listeners.length; i++) { + RepeatListener interceptor = listeners[i]; interceptor.before(context); // Allow before interceptors to veto the batch by setting // flag. @@ -208,14 +208,14 @@ public class RepeatTemplate implements RepeatOperations { try { - for (int i = interceptors.length; i-- > 0;) { - RepeatInterceptor interceptor = interceptors[i]; + for (int i = listeners.length; i-- > 0;) { + RepeatListener interceptor = listeners[i]; interceptor.onError(context, throwable); // This is not an error - only log at debug // level. logger.debug("Exception intercepted (" + (i + 1) + " of " - + interceptors.length + ")", throwable); + + listeners.length + ")", throwable); } exceptionHandler .handleException(context, throwable); @@ -257,8 +257,8 @@ public class RepeatTemplate implements RepeatOperations { } finally { try { - for (int i = interceptors.length; i-- > 0;) { - RepeatInterceptor interceptor = interceptors[i]; + for (int i = listeners.length; i-- > 0;) { + RepeatListener interceptor = listeners[i]; interceptor.close(context); } } finally { @@ -379,8 +379,8 @@ public class RepeatTemplate implements RepeatOperations { // that... if (value != null && value.isContinuable()) { - for (int i = interceptors.length; i-- > 0;) { - RepeatInterceptor interceptor = interceptors[i]; + for (int i = listeners.length; i-- > 0;) { + RepeatListener interceptor = listeners[i]; interceptor.after(context, value); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/RetryInterceptor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/RetryListener.java similarity index 95% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/RetryInterceptor.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/RetryListener.java index 7491d4d6f..52af358c1 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/RetryInterceptor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/RetryListener.java @@ -19,14 +19,14 @@ package org.springframework.batch.retry; import org.springframework.batch.retry.exception.TerminatedRetryException; /** - * Interface for interceptor that can be used to add behaviour to a retry. + * Interface for listener that can be used to add behaviour to a retry. * Implementations of {@link RetryOperations} can chose to issue callbacks to an * interceptor during the retry lifecycle. * * @author Dave Syer * */ -public interface RetryInterceptor { +public interface RetryListener { /** * Called before the first attempt in a retry. For instance, implementers diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/aop/RetryOperationsInterceptor.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/aop/RetryOperationsInterceptor.java index a4aecf129..ea0a247f9 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/aop/RetryOperationsInterceptor.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/aop/RetryOperationsInterceptor.java @@ -40,7 +40,6 @@ import org.springframework.util.Assert; * * @author Rob Harrop * @author Dave Syer - * @since 2.1 */ public class RetryOperationsInterceptor implements MethodInterceptor { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/interceptor/RetryInterceptorSupport.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/interceptor/RetryListenerAdapter.java similarity index 89% rename from spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/interceptor/RetryInterceptorSupport.java rename to spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/interceptor/RetryListenerAdapter.java index 95101e10a..aa9a21e83 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/interceptor/RetryInterceptorSupport.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/interceptor/RetryListenerAdapter.java @@ -18,9 +18,9 @@ package org.springframework.batch.retry.interceptor; import org.springframework.batch.retry.RetryCallback; import org.springframework.batch.retry.RetryContext; -import org.springframework.batch.retry.RetryInterceptor; +import org.springframework.batch.retry.RetryListener; -public class RetryInterceptorSupport implements RetryInterceptor { +public class RetryListenerAdapter implements RetryListener { public void close(RetryContext context, RetryCallback callback, Throwable throwable) { } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/support/RetryTemplate.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/support/RetryTemplate.java index fe5fd6dfd..878855030 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/support/RetryTemplate.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/retry/support/RetryTemplate.java @@ -20,7 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.batch.retry.RetryCallback; import org.springframework.batch.retry.RetryContext; -import org.springframework.batch.retry.RetryInterceptor; +import org.springframework.batch.retry.RetryListener; import org.springframework.batch.retry.RetryOperations; import org.springframework.batch.retry.RetryPolicy; import org.springframework.batch.retry.backoff.BackOffContext; @@ -57,7 +57,6 @@ import org.springframework.batch.retry.synch.RetrySynchronizationManager; * * @author Rob Harrop * @author Dave Syer - * @since 2.1 */ public class RetryTemplate implements RetryOperations { @@ -67,26 +66,26 @@ public class RetryTemplate implements RetryOperations { private volatile RetryPolicy retryPolicy = new SimpleRetryPolicy(); - private volatile RetryInterceptor[] interceptors = new RetryInterceptor[0]; + private volatile RetryListener[] listeners = new RetryListener[0]; /** - * Setter for interceptors. The interceptors are executed before and after a + * Setter for listeners. The listeners are executed before and after a * retry block (i.e. before and after all the attempts), and on an error * (every attempt). - * @param interceptors - * @see RetryInterceptor + * @param listeners + * @see RetryListener */ - public void setInterceptors(RetryInterceptor[] interceptors) { - this.interceptors = interceptors; + public void setListeners(RetryListener[] listeners) { + this.listeners = listeners; } /** - * Setter for single interceptor if there is only one. - * @param interceptor - * @see #setInterceptors(RetryInterceptor[]) + * Setter for single listener if there is only one. + * @param listener + * @see #setListeners(RetryListener[]) */ - public void setInterceptor(RetryInterceptor interceptor) { - this.interceptors = new RetryInterceptor[] { interceptor }; + public void setListener(RetryListener listener) { + this.listeners = new RetryListener[] { listener }; } /** @@ -220,8 +219,8 @@ public class RetryTemplate implements RetryOperations { boolean result = true; - for (int i = 0; i < interceptors.length; i++) { - result = result && interceptors[i].open(context, callback); + for (int i = 0; i < listeners.length; i++) { + result = result && listeners[i].open(context, callback); } return result; @@ -229,14 +228,14 @@ public class RetryTemplate implements RetryOperations { } private void doCloseInterceptors(RetryCallback callback, RetryContext context, Throwable lastException) { - for (int i = interceptors.length; i-- > 0;) { - interceptors[i].close(context, callback, lastException); + for (int i = listeners.length; i-- > 0;) { + listeners[i].close(context, callback, lastException); } } private void doOnErrorInterceptors(RetryCallback callback, RetryContext context, Throwable throwable) { - for (int i = interceptors.length; i-- > 0;) { - interceptors[i].onError(context, callback, throwable); + for (int i = listeners.length; i-- > 0;) { + listeners[i].onError(context, callback, throwable); } } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/HibernateAwareItemWriterTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/HibernateAwareItemWriterTests.java index c0ea8492d..22d45783e 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/HibernateAwareItemWriterTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/io/support/HibernateAwareItemWriterTests.java @@ -25,7 +25,7 @@ import junit.framework.TestCase; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatContext; -import org.springframework.batch.repeat.RepeatInterceptor; +import org.springframework.batch.repeat.RepeatListener; import org.springframework.batch.repeat.context.RepeatContextSupport; import org.springframework.dao.DataAccessException; import org.springframework.orm.hibernate3.HibernateTemplate; @@ -46,7 +46,7 @@ public class HibernateAwareItemWriterTests extends TestCase { }; } - private class StubItemWriter implements ItemWriter, RepeatInterceptor { + private class StubItemWriter implements ItemWriter, RepeatListener { public void write(Object item) { list.add(item); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatInterceptorTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatListenerTests.java similarity index 80% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatInterceptorTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatListenerTests.java index a0d7fb6ad..9c9d7f56b 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatInterceptorTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/ApplicationEventPublisherRepeatListenerTests.java @@ -30,9 +30,9 @@ import junit.framework.TestCase; * @author Dave Syer * */ -public class ApplicationEventPublisherRepeatInterceptorTests extends TestCase { +public class ApplicationEventPublisherRepeatListenerTests extends TestCase { - private ApplicationEventPublisherRepeatInterceptor interceptor = new ApplicationEventPublisherRepeatInterceptor(); + private ApplicationEventPublisherRepeatListener interceptor = new ApplicationEventPublisherRepeatListener(); private List list = new ArrayList(); @@ -51,7 +51,7 @@ public class ApplicationEventPublisherRepeatInterceptorTests extends TestCase { } /** - * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatInterceptor#after(org.springframework.batch.repeat.RepeatContext, ExitStatus)}. + * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatListener#after(org.springframework.batch.repeat.RepeatContext, ExitStatus)}. */ public void testAfter() { interceptor.after(context, ExitStatus.CONTINUABLE); @@ -62,7 +62,7 @@ public class ApplicationEventPublisherRepeatInterceptorTests extends TestCase { } /** - * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatInterceptor#before(org.springframework.batch.repeat.RepeatContext)}. + * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatListener#before(org.springframework.batch.repeat.RepeatContext)}. */ public void testBefore() { interceptor.before(context); @@ -73,7 +73,7 @@ public class ApplicationEventPublisherRepeatInterceptorTests extends TestCase { } /** - * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatInterceptor#close(org.springframework.batch.repeat.RepeatContext)}. + * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatListener#close(org.springframework.batch.repeat.RepeatContext)}. */ public void testClose() { interceptor.close(context); @@ -84,7 +84,7 @@ public class ApplicationEventPublisherRepeatInterceptorTests extends TestCase { } /** - * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatInterceptor#onError(org.springframework.batch.repeat.RepeatContext, java.lang.Throwable)}. + * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatListener#onError(org.springframework.batch.repeat.RepeatContext, java.lang.Throwable)}. */ public void testOnError() { interceptor.onError(context, new RuntimeException("foo")); @@ -95,7 +95,7 @@ public class ApplicationEventPublisherRepeatInterceptorTests extends TestCase { } /** - * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatInterceptor#open(org.springframework.batch.repeat.RepeatContext)}. + * Test method for {@link org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatListener#open(org.springframework.batch.repeat.RepeatContext)}. */ public void testOpen() { interceptor.open(context); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/RepeatInterceptorTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/RepeatListenerTests.java similarity index 87% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/RepeatInterceptorTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/RepeatListenerTests.java index ba5a94c71..4969750d8 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/RepeatInterceptorTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/interceptor/RepeatListenerTests.java @@ -24,23 +24,23 @@ import junit.framework.TestCase; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatCallback; import org.springframework.batch.repeat.RepeatContext; -import org.springframework.batch.repeat.RepeatInterceptor; +import org.springframework.batch.repeat.RepeatListener; import org.springframework.batch.repeat.support.RepeatTemplate; import org.springframework.batch.repeat.support.TaskExecutorRepeatTemplate; import org.springframework.core.task.SimpleAsyncTaskExecutor; -public class RepeatInterceptorTests extends TestCase { +public class RepeatListenerTests extends TestCase { int count = 0; public void testBeforeInterceptors() throws Exception { RepeatTemplate template = new RepeatTemplate(); final List calls = new ArrayList(); - template.setInterceptors(new RepeatInterceptor[] { new RepeatInterceptorAdapter() { + template.setListeners(new RepeatListener[] { new RepeatListenerAdapter() { public void before(RepeatContext context) { calls.add("1"); } - }, new RepeatInterceptorAdapter() { + }, new RepeatListenerAdapter() { public void before(RepeatContext context) { calls.add("2"); } @@ -62,7 +62,7 @@ public class RepeatInterceptorTests extends TestCase { public void testBeforeInterceptorCanVeto() throws Exception { RepeatTemplate template = new RepeatTemplate(); final List calls = new ArrayList(); - template.setInterceptor(new RepeatInterceptorAdapter() { + template.setListener(new RepeatListenerAdapter() { public void before(RepeatContext context) { calls.add("1"); context.setCompleteOnly(); @@ -82,11 +82,11 @@ public class RepeatInterceptorTests extends TestCase { public void testAfterInterceptors() throws Exception { RepeatTemplate template = new RepeatTemplate(); final List calls = new ArrayList(); - template.setInterceptors(new RepeatInterceptor[] { new RepeatInterceptorAdapter() { + template.setListeners(new RepeatListener[] { new RepeatListenerAdapter() { public void after(RepeatContext context, ExitStatus result) { calls.add("1"); } - }, new RepeatInterceptorAdapter() { + }, new RepeatListenerAdapter() { public void after(RepeatContext context, ExitStatus result) { calls.add("2"); } @@ -106,11 +106,11 @@ public class RepeatInterceptorTests extends TestCase { public void testOpenInterceptors() throws Exception { RepeatTemplate template = new RepeatTemplate(); final List calls = new ArrayList(); - template.setInterceptors(new RepeatInterceptor[] { new RepeatInterceptorAdapter() { + template.setListeners(new RepeatListener[] { new RepeatListenerAdapter() { public void open(RepeatContext context) { calls.add("1"); } - }, new RepeatInterceptorAdapter() { + }, new RepeatListenerAdapter() { public void open(RepeatContext context) { calls.add("2"); context.setCompleteOnly(); @@ -129,7 +129,7 @@ public class RepeatInterceptorTests extends TestCase { public void testSingleOpenInterceptor() throws Exception { RepeatTemplate template = new RepeatTemplate(); final List calls = new ArrayList(); - template.setInterceptor(new RepeatInterceptorAdapter() { + template.setListener(new RepeatListenerAdapter() { public void open(RepeatContext context) { calls.add("1"); } @@ -148,11 +148,11 @@ public class RepeatInterceptorTests extends TestCase { public void testCloseInterceptors() throws Exception { RepeatTemplate template = new RepeatTemplate(); final List calls = new ArrayList(); - template.setInterceptors(new RepeatInterceptor[] { new RepeatInterceptorAdapter() { + template.setListeners(new RepeatListener[] { new RepeatListenerAdapter() { public void close(RepeatContext context) { calls.add("1"); } - }, new RepeatInterceptorAdapter() { + }, new RepeatListenerAdapter() { public void close(RepeatContext context) { calls.add("2"); } @@ -173,11 +173,11 @@ public class RepeatInterceptorTests extends TestCase { public void testOnErrorInterceptors() throws Exception { RepeatTemplate template = new RepeatTemplate(); final List calls = new ArrayList(); - template.setInterceptors(new RepeatInterceptor[] { new RepeatInterceptorAdapter() { + template.setListeners(new RepeatListener[] { new RepeatListenerAdapter() { public void onError(RepeatContext context, Throwable t) { calls.add("1"); } - }, new RepeatInterceptorAdapter() { + }, new RepeatListenerAdapter() { public void onError(RepeatContext context, Throwable t) { calls.add("2"); } @@ -200,11 +200,11 @@ public class RepeatInterceptorTests extends TestCase { public void testOnErrorInterceptorsPrecedence() throws Exception { RepeatTemplate template = new RepeatTemplate(); final List calls = new ArrayList(); - template.setInterceptors(new RepeatInterceptor[] { new RepeatInterceptorAdapter() { + template.setListeners(new RepeatListener[] { new RepeatListenerAdapter() { public void after(RepeatContext context, ExitStatus result) { calls.add("1"); } - }, new RepeatInterceptorAdapter() { + }, new RepeatListenerAdapter() { public void onError(RepeatContext context, Throwable t) { calls.add("2"); } @@ -230,11 +230,11 @@ public class RepeatInterceptorTests extends TestCase { template.setTaskExecutor(new SimpleAsyncTaskExecutor()); final List calls = new ArrayList(); final List fails = new ArrayList(); - template.setInterceptors(new RepeatInterceptor[] { new RepeatInterceptorAdapter() { + template.setListeners(new RepeatListener[] { new RepeatListenerAdapter() { public void after(RepeatContext context, ExitStatus result) { calls.add("1"); } - }, new RepeatInterceptorAdapter() { + }, new RepeatListenerAdapter() { public void onError(RepeatContext context, Throwable t) { calls.add("2"); fails.add("2"); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryInterceptorSupportTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryListenerSupportTests.java similarity index 80% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryInterceptorSupportTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryListenerSupportTests.java index b0c4845cf..a7a325d51 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryInterceptorSupportTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryListenerSupportTests.java @@ -18,10 +18,10 @@ package org.springframework.batch.retry.interceptor; import junit.framework.TestCase; -public class RetryInterceptorSupportTests extends TestCase { +public class RetryListenerSupportTests extends TestCase { public void testClose() { - RetryInterceptorSupport support = new RetryInterceptorSupport(); + RetryListenerAdapter support = new RetryListenerAdapter(); try { support.close(null, null, null); } @@ -31,7 +31,7 @@ public class RetryInterceptorSupportTests extends TestCase { } public void testOnError() { - RetryInterceptorSupport support = new RetryInterceptorSupport(); + RetryListenerAdapter support = new RetryListenerAdapter(); try { support.onError(null, null, null); } @@ -41,7 +41,7 @@ public class RetryInterceptorSupportTests extends TestCase { } public void testOpen() { - RetryInterceptorSupport support = new RetryInterceptorSupport(); + RetryListenerAdapter support = new RetryListenerAdapter(); assertTrue(support.open(null, null)); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryInterceptorTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryListenerTests.java similarity index 88% rename from spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryInterceptorTests.java rename to spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryListenerTests.java index 0b7b69221..06aafb8cd 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryInterceptorTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/retry/interceptor/RetryListenerTests.java @@ -23,12 +23,12 @@ import junit.framework.TestCase; import org.springframework.batch.retry.RetryCallback; import org.springframework.batch.retry.RetryContext; -import org.springframework.batch.retry.RetryInterceptor; +import org.springframework.batch.retry.RetryListener; import org.springframework.batch.retry.exception.TerminatedRetryException; import org.springframework.batch.retry.policy.NeverRetryPolicy; import org.springframework.batch.retry.support.RetryTemplate; -public class RetryInterceptorTests extends TestCase { +public class RetryListenerTests extends TestCase { RetryTemplate template = new RetryTemplate(); @@ -37,13 +37,13 @@ public class RetryInterceptorTests extends TestCase { List list = new ArrayList(); public void testOpenInterceptors() throws Exception { - template.setInterceptors(new RetryInterceptor[] { new RetryInterceptorSupport() { + template.setListeners(new RetryListener[] { new RetryListenerAdapter() { public boolean open(RetryContext context, RetryCallback callback) { count++; list.add("1:" + count); return true; } - }, new RetryInterceptorSupport() { + }, new RetryListenerAdapter() { public boolean open(RetryContext context, RetryCallback callback) { count++; list.add("2:" + count); @@ -61,7 +61,7 @@ public class RetryInterceptorTests extends TestCase { } public void testOpenCanVetoRetry() throws Exception { - template.setInterceptor(new RetryInterceptorSupport() { + template.setListener(new RetryListenerAdapter() { public boolean open(RetryContext context, RetryCallback callback) { list.add("1"); return false; @@ -85,12 +85,12 @@ public class RetryInterceptorTests extends TestCase { } public void testCloseInterceptors() throws Exception { - template.setInterceptors(new RetryInterceptor[] { new RetryInterceptorSupport() { + template.setListeners(new RetryListener[] { new RetryListenerAdapter() { public void close(RetryContext context, RetryCallback callback, Throwable t) { count++; list.add("1:" + count); } - }, new RetryInterceptorSupport() { + }, new RetryListenerAdapter() { public void close(RetryContext context, RetryCallback callback, Throwable t) { count++; list.add("2:" + count); @@ -109,11 +109,11 @@ public class RetryInterceptorTests extends TestCase { public void testOnError() throws Exception { template.setRetryPolicy(new NeverRetryPolicy()); - template.setInterceptors(new RetryInterceptor[] { new RetryInterceptorSupport() { + template.setListeners(new RetryListener[] { new RetryListenerAdapter() { public void onError(RetryContext context, RetryCallback callback, Throwable throwable) { list.add("1"); } - }, new RetryInterceptorSupport() { + }, new RetryListenerAdapter() { public void onError(RetryContext context, RetryCallback callback, Throwable throwable) { list.add("2"); } @@ -139,7 +139,7 @@ public class RetryInterceptorTests extends TestCase { } public void testCloseInterceptorsAfterRetry() throws Exception { - template.setInterceptor(new RetryInterceptorSupport() { + template.setListener(new RetryListenerAdapter() { public void close(RetryContext context, RetryCallback callback, Throwable t) { list.add("" + count); // The last attempt should have been successful: diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/dao/HibernateCreditWriter.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/dao/HibernateCreditWriter.java index 1ae90f6f1..d1a2c4300 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/dao/HibernateCreditWriter.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/dao/HibernateCreditWriter.java @@ -20,7 +20,7 @@ import java.util.List; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatContext; -import org.springframework.batch.repeat.RepeatInterceptor; +import org.springframework.batch.repeat.RepeatListener; import org.springframework.batch.sample.domain.CustomerCredit; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; @@ -30,7 +30,7 @@ import org.springframework.orm.hibernate3.support.HibernateDaoSupport; * */ public class HibernateCreditWriter extends HibernateDaoSupport implements - CustomerCreditDao, RepeatInterceptor { + CustomerCreditDao, RepeatListener { private int failOnFlush = -1; private List errors = new ArrayList(); diff --git a/spring-batch-samples/src/main/resources/jobs/adhocLoopJob.xml b/spring-batch-samples/src/main/resources/jobs/adhocLoopJob.xml index 07122c8bc..8f9a76d70 100644 --- a/spring-batch-samples/src/main/resources/jobs/adhocLoopJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/adhocLoopJob.xml @@ -15,7 +15,7 @@ - + - + - - - - - - + class="org.springframework.batch.repeat.interceptor.ApplicationEventPublisherRepeatListener" /> - - - - - - - - diff --git a/spring-batch-samples/src/main/resources/jobs/hibernateJob.xml b/spring-batch-samples/src/main/resources/jobs/hibernateJob.xml index 9932fab09..399fe11dc 100644 --- a/spring-batch-samples/src/main/resources/jobs/hibernateJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/hibernateJob.xml @@ -25,7 +25,7 @@ -