Class StepListenerSupport<T,S>
- java.lang.Object
- org.springframework.batch.core.listener.StepListenerSupport<T,S>
- All Implemented Interfaces:
ChunkListener
,ItemProcessListener<T,S>
,ItemReadListener<T>
,ItemWriteListener<S>
,SkipListener<T,S>
,StepExecutionListener
,StepListener
- Direct Known Subclasses:
StagingItemListener
public class StepListenerSupport<T,S> extends java.lang.Object implements StepExecutionListener, ChunkListener, ItemReadListener<T>, ItemProcessListener<T,S>, ItemWriteListener<S>, SkipListener<T,S>
Basic no-op implementations of allStepListener
interfaces.- Author:
- Lucas Ward, Robert Kasanicky, Mahmoud Ben Hassine
Field Summary
Fields inherited from interface org.springframework.batch.core.ChunkListener
ROLLBACK_EXCEPTION_KEY
Constructor Summary
Constructors Constructor Description StepListenerSupport()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterChunk(ChunkContext context)
Callback after the chunk is executed, outside the transaction.void
afterChunkError(ChunkContext context)
Callback after a chunk has been marked for rollback.void
afterProcess(T item, S result)
Called afterItemProcessor.process(Object)
returns.void
afterRead(T item)
Called afterItemReader.read()
.ExitStatus
afterStep(StepExecution stepExecution)
Give a listener a chance to modify the exit status from a step.void
afterWrite(java.util.List<? extends S> items)
Called afterItemWriter.write(java.util.List)
This will be called before any transaction is committed, and beforeChunkListener.afterChunk(ChunkContext)
void
beforeChunk(ChunkContext context)
Callback before the chunk is executed, but inside the transaction.void
beforeProcess(T item)
Called beforeItemProcessor.process(Object)
.void
beforeRead()
Called beforeItemReader.read()
void
beforeStep(StepExecution stepExecution)
Initialize the state of the listener with theStepExecution
from the current scope.void
beforeWrite(java.util.List<? extends S> items)
Called beforeItemWriter.write(java.util.List)
void
onProcessError(T item, java.lang.Exception e)
Called if an exception was thrown fromItemProcessor.process(Object)
.void
onReadError(java.lang.Exception ex)
Called if an error occurs while trying to read.void
onSkipInProcess(T item, java.lang.Throwable t)
This item failed on processing with the given exception, and a skip was called for.void
onSkipInRead(java.lang.Throwable t)
Callback for a failure on read that is legal, so is not going to be re-thrown.void
onSkipInWrite(S item, java.lang.Throwable t)
This item failed on write with the given exception, and a skip was called for.void
onWriteError(java.lang.Exception exception, java.util.List<? extends S> items)
Called if an error occurs while trying to write.
Method Detail
afterStep
public ExitStatus afterStep(StepExecution stepExecution)
Description copied from interface:StepExecutionListener
Give a listener a chance to modify the exit status from a step. The value returned will be combined with the normal exit status usingExitStatus.and(ExitStatus)
. Called after execution of step's processing logic (both successful or failed). Throwing exception in this method has no effect, it will only be logged.- Specified by:
afterStep
in interfaceStepExecutionListener
- Parameters:
stepExecution
-StepExecution
instance.- Returns:
- an
ExitStatus
to combine with the normal value. Returnnull
to leave the old value unchanged.
beforeStep
public void beforeStep(StepExecution stepExecution)
Description copied from interface:StepExecutionListener
Initialize the state of the listener with theStepExecution
from the current scope.- Specified by:
beforeStep
in interfaceStepExecutionListener
- Parameters:
stepExecution
- instance ofStepExecution
.
afterChunk
public void afterChunk(ChunkContext context)
Description copied from interface:ChunkListener
Callback after the chunk is executed, outside the transaction.- Specified by:
afterChunk
in interfaceChunkListener
- Parameters:
context
- The currentChunkContext
beforeChunk
public void beforeChunk(ChunkContext context)
Description copied from interface:ChunkListener
Callback before the chunk is executed, but inside the transaction.- Specified by:
beforeChunk
in interfaceChunkListener
- Parameters:
context
- The currentChunkContext
afterRead
public void afterRead(T item)
Description copied from interface:ItemReadListener
Called afterItemReader.read()
. This method is called only for actual items (ie it is not called when the reader returns null).- Specified by:
afterRead
in interfaceItemReadListener<T>
- Parameters:
item
- returned from read()
beforeRead
public void beforeRead()
Description copied from interface:ItemReadListener
Called beforeItemReader.read()
- Specified by:
beforeRead
in interfaceItemReadListener<T>
onReadError
public void onReadError(java.lang.Exception ex)
Description copied from interface:ItemReadListener
Called if an error occurs while trying to read.- Specified by:
onReadError
in interfaceItemReadListener<T>
- Parameters:
ex
- thrown fromItemWriter
afterWrite
public void afterWrite(java.util.List<? extends S> items)
Description copied from interface:ItemWriteListener
Called afterItemWriter.write(java.util.List)
This will be called before any transaction is committed, and beforeChunkListener.afterChunk(ChunkContext)
- Specified by:
afterWrite
in interfaceItemWriteListener<T>
- Parameters:
items
- written items
beforeWrite
public void beforeWrite(java.util.List<? extends S> items)
Description copied from interface:ItemWriteListener
Called beforeItemWriter.write(java.util.List)
- Specified by:
beforeWrite
in interfaceItemWriteListener<T>
- Parameters:
items
- to be written
onWriteError
public void onWriteError(java.lang.Exception exception, java.util.List<? extends S> items)
Description copied from interface:ItemWriteListener
Called if an error occurs while trying to write. Will be called inside a transaction, but the transaction will normally be rolled back. There is no way to identify from this callback which of the items (if any) caused the error.- Specified by:
onWriteError
in interfaceItemWriteListener<T>
- Parameters:
exception
- thrown fromItemWriter
items
- attempted to be written.
afterProcess
public void afterProcess(T item, @Nullable S result)
Description copied from interface:ItemProcessListener
Called afterItemProcessor.process(Object)
returns. If the processor returnsnull
, this method will still be called, with a {code null} result, allowing for notification of 'filtered' items.- Specified by:
afterProcess
in interfaceItemProcessListener<T,S>
- Parameters:
item
- to be processedresult
- of processing
beforeProcess
public void beforeProcess(T item)
Description copied from interface:ItemProcessListener
Called beforeItemProcessor.process(Object)
.- Specified by:
beforeProcess
in interfaceItemProcessListener<T,S>
- Parameters:
item
- to be processed.
onProcessError
public void onProcessError(T item, java.lang.Exception e)
Description copied from interface:ItemProcessListener
Called if an exception was thrown fromItemProcessor.process(Object)
.- Specified by:
onProcessError
in interfaceItemProcessListener<T,S>
- Parameters:
item
- attempted to be processede
- - exception thrown during processing.
onSkipInProcess
public void onSkipInProcess(T item, java.lang.Throwable t)
Description copied from interface:SkipListener
This item failed on processing with the given exception, and a skip was called for.- Specified by:
onSkipInProcess
in interfaceSkipListener<T,S>
- Parameters:
item
- the failed itemt
- the cause of the failure
onSkipInRead
public void onSkipInRead(java.lang.Throwable t)
Description copied from interface:SkipListener
Callback for a failure on read that is legal, so is not going to be re-thrown. In case transaction is rolled back and items are re-read, this callback will occur repeatedly for the same cause. This will only happen if read items are not buffered.- Specified by:
onSkipInRead
in interfaceSkipListener<T,S>
- Parameters:
t
- cause of the failure
onSkipInWrite
public void onSkipInWrite(S item, java.lang.Throwable t)
Description copied from interface:SkipListener
This item failed on write with the given exception, and a skip was called for.- Specified by:
onSkipInWrite
in interfaceSkipListener<T,S>
- Parameters:
item
- the failed itemt
- the cause of the failure
afterChunkError
public void afterChunkError(ChunkContext context)
Description copied from interface:ChunkListener
Callback after a chunk has been marked for rollback. It is invoked after transaction rollback. While the rollback will have occurred, transactional resources might still be active and accessible. Due to this, data access code within this callback will still "participate" in the original transaction unless it declares that it runs in its own transaction. Hence: Use PROPAGATION_REQUIRES_NEW for any transactional operation that is called from here.- Specified by:
afterChunkError
in interfaceChunkListener
- Parameters:
context
- the chunk context containing the exception that caused the underlying rollback.