List of usage examples for org.springframework.batch.core.listener StepListenerFactoryBean isListener
public static boolean isListener(Object delegate)
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); } } } }