fixed build - lesson learned: samples don't cleanup output files themselves, so they need to be cleaned before each run (otherwise the output file already exists even when the job did nothing).

CompositeItemWriter wasn't delegating flush and clear calls, only write.
This commit is contained in:
robokaso
2008-03-25 17:02:28 +00:00
parent f888d44336
commit f5fcf3a6b6
2 changed files with 38 additions and 19 deletions

View File

@@ -3,15 +3,16 @@ package org.springframework.batch.item.support;
import java.util.Iterator;
import java.util.List;
import org.springframework.batch.item.AbstractItemWriter;
import org.springframework.batch.item.ClearFailedException;
import org.springframework.batch.item.FlushFailedException;
import org.springframework.batch.item.ItemWriter;
/**
* Runs a collection of ItemProcessors in fixed-order sequence.
* Calls a collection of ItemWriters in fixed-order sequence.
*
* @author Robert Kasanicky
*/
public class CompositeItemWriter extends AbstractItemWriter {
public class CompositeItemWriter implements ItemWriter {
private List delegates;
@@ -28,4 +29,16 @@ public class CompositeItemWriter extends AbstractItemWriter {
}
}
public void clear() throws ClearFailedException {
for (Iterator iterator = delegates.listIterator(); iterator.hasNext();) {
((ItemWriter) iterator.next()).clear();
}
}
public void flush() throws FlushFailedException {
for (Iterator iterator = delegates.listIterator(); iterator.hasNext();) {
((ItemWriter) iterator.next()).flush();
}
}
}

View File

@@ -12,7 +12,12 @@
<bean id="compositeProcessorJob" parent="simpleJob">
<property name="steps">
<bean id="step1" parent="simpleStep">
<property name="streams" ref="fileItemReader" />
<property name="streams">
<list>
<ref bean="fileItemReader" />
<ref bean="fileItemWriter" />
</list>
</property>
<property name="itemReader">
<bean
class="org.springframework.batch.item.validator.ValidatingItemReader">
@@ -21,26 +26,26 @@
<property name="validator" ref="fixedValidator" />
</bean>
</property>
<property name="itemWriter">
<bean
class="org.springframework.batch.item.support.CompositeItemWriter">
<property name="delegates">
<list>
<bean
class="org.springframework.batch.sample.item.writer.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
<ref bean="fileItemWriter" />
</list>
</property>
</bean>
</property>
<property name="itemWriter" ref="compositeWriter" />
</bean>
</property>
</bean>
<!-- INFRASTRUCTURE SETUP -->
<bean id="compositeWriter"
class="org.springframework.batch.item.support.CompositeItemWriter">
<property name="delegates">
<list>
<bean
class="org.springframework.batch.sample.item.writer.TradeWriter">
<property name="dao" ref="tradeDao" />
</bean>
<ref bean="fileItemWriter" />
</list>
</property>
</bean>
<bean id="fileItemReader"
class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource"
@@ -84,7 +89,8 @@
<bean class="org.springframework.batch.item.file.FlatFileItemWriter"
id="fileItemWriter">
<property name="resource" value="file:target/test-outputs/20070122.testStream.ParallelCustomerReportStep.TEMP.txt" />
<property name="resource"
value="file:target/test-outputs/20070122.testStream.ParallelCustomerReportStep.TEMP.txt" />
<property name="fieldSetCreator">
<bean
class="org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper" />