From ed454dab47bb9fa9f9b7e464186ea8e390205fa4 Mon Sep 17 00:00:00 2001 From: trisberg Date: Mon, 4 Aug 2008 14:52:40 +0000 Subject: [PATCH] BATCH-757: removed use of DelegatingItemWriter --- .../step/item/BatchListenerFactoryHelper.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/BatchListenerFactoryHelper.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/BatchListenerFactoryHelper.java index 105e8b2e7..e1a6250f0 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/BatchListenerFactoryHelper.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/BatchListenerFactoryHelper.java @@ -29,8 +29,11 @@ import org.springframework.batch.core.listener.CompositeItemReadListener; import org.springframework.batch.core.listener.CompositeItemWriteListener; import org.springframework.batch.item.ItemReader; import org.springframework.batch.item.ItemWriter; +import org.springframework.batch.item.FlushFailedException; +import org.springframework.batch.item.ClearFailedException; import org.springframework.batch.item.support.DelegatingItemReader; import org.springframework.batch.item.support.DelegatingItemWriter; +import org.springframework.batch.item.support.AbstractItemWriter; import org.springframework.batch.repeat.RepeatContext; import org.springframework.batch.repeat.RepeatOperations; import org.springframework.batch.repeat.listener.RepeatListenerSupport; @@ -82,7 +85,7 @@ abstract class BatchListenerFactoryHelper { * @param itemWriter * @param listeners */ - public static ItemWriter getItemWriter(ItemWriter itemWriter, StepListener[] listeners) { + public static ItemWriter getItemWriter(final ItemWriter itemWriter, StepListener[] listeners) { final CompositeItemWriteListener multicaster = new CompositeItemWriteListener(); for (int i = 0; i < listeners.length; i++) { @@ -92,11 +95,11 @@ abstract class BatchListenerFactoryHelper { } } - itemWriter = new DelegatingItemWriter(itemWriter) { + return new ItemWriter() { public void write(T item) throws Exception { try { multicaster.beforeWrite(item); - super.write(item); + itemWriter.write(item); multicaster.afterWrite(item); } catch (Exception e) { @@ -104,9 +107,15 @@ abstract class BatchListenerFactoryHelper { throw e; } } - }; - return itemWriter; + public void flush() throws FlushFailedException { + itemWriter.flush(); + } + + public void clear() throws ClearFailedException { + itemWriter.clear(); + } + }; }