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:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user