List of usage examples for org.springframework.batch.core.step.item SimpleChunkProcessor setListeners
public void setListeners(List<? extends StepListener> listeners)
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); } } } }