Example usage for org.springframework.batch.core.listener StepListenerFactoryBean isListener

List of usage examples for org.springframework.batch.core.listener StepListenerFactoryBean isListener

Introduction

In this page you can find the example usage for org.springframework.batch.core.listener StepListenerFactoryBean isListener.

Prototype

public static boolean isListener(Object delegate) 

Source Link

Document

Convenience method to check whether the given object is or can be made into a StepListener .

Usage

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

/**
 * Register listeners with step and chunk.
 *///w  w  w. j  a va 2  s  . c o  m
private void registerStepListeners(TaskletStep step, RepeatOperations chunkOperations) {

    for (Object itemHandler : new Object[] { getItemReader(), itemWriter, itemProcessor }) {
        if (StepListenerFactoryBean.isListener(itemHandler)) {
            StepListener listener = StepListenerFactoryBean.getListener(itemHandler);
            if (listener instanceof StepExecutionListener) {
                step.registerStepExecutionListener((StepExecutionListener) listener);
            }
            if (listener instanceof ChunkListener) {
                registerChunkListeners(step, listener);
            }
        }
    }

    step.setStepExecutionListeners(BatchListenerFactoryHelper
            .getListeners(listeners, StepExecutionListener.class).toArray(new StepExecutionListener[] {}));

    List<ChunkListener> chunkListeners = BatchListenerFactoryHelper.getListeners(listeners,
            ChunkListener.class);
    for (ChunkListener chunkListener : chunkListeners) {
        registerChunkListeners(step, chunkListener);
    }
}

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  www .  j  a v  a  2 s  . co  m
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);
            }
        }
    }
}