Example usage for org.springframework.batch.core.step.item SimpleChunkProcessor setListeners

List of usage examples for org.springframework.batch.core.step.item SimpleChunkProcessor setListeners

Introduction

In this page you can find the example usage for org.springframework.batch.core.step.item SimpleChunkProcessor setListeners.

Prototype

public void setListeners(List<? extends StepListener> listeners) 

Source Link

Document

Register some StepListener s with the handler.

Usage

From source file:org.springframework.batch.core.step.item.SimpleStepFactoryBean.java

/**
 * Register explicitly set ({@link #setListeners(StepListener[])}) item
 * listeners and auto-register reader, processor and writer if applicable
 *///from w ww.  ja  v a2 s.c om
private void registerItemListeners(SimpleChunkProvider<T> chunkProvider,
        SimpleChunkProcessor<T, S> chunkProcessor) {

    StepListener[] listeners = getListeners();

    // explicitly set item listeners
    chunkProvider.setListeners(
            BatchListenerFactoryHelper.<ItemReadListener<T>>getListeners(listeners, ItemReadListener.class));
    chunkProvider.setListeners(
            BatchListenerFactoryHelper.<SkipListener<T, S>>getListeners(listeners, SkipListener.class));

    chunkProcessor.setListeners(BatchListenerFactoryHelper.<ItemProcessListener<T, S>>getListeners(listeners,
            ItemProcessListener.class));
    chunkProcessor.setListeners(
            BatchListenerFactoryHelper.<ItemWriteListener<S>>getListeners(listeners, ItemWriteListener.class));
    chunkProcessor.setListeners(
            BatchListenerFactoryHelper.<SkipListener<T, S>>getListeners(listeners, SkipListener.class));

    List<StepListener> listofListeners = Arrays.asList(listeners);
    // auto-register reader, processor and writer
    for (Object itemHandler : new Object[] { getItemReader(), getItemWriter(), getItemProcessor() }) {

        if (listofListeners.contains(itemHandler)) {
            continue;
        }

        if (StepListenerFactoryBean.isListener(itemHandler)) {
            StepListener listener = StepListenerFactoryBean.getListener(itemHandler);
            if (listener instanceof SkipListener<?, ?>) {
                chunkProvider.registerListener(listener);
                chunkProcessor.registerListener(listener);
                // already registered with both so avoid double-registering
                continue;
            }
            if (listener instanceof ItemReadListener<?>) {
                chunkProvider.registerListener(listener);
            }
            if (listener instanceof ItemProcessListener<?, ?> || listener instanceof ItemWriteListener<?>) {
                chunkProcessor.registerListener(listener);
            }
        }
    }
}