IN PROGRESS - issue BATCH-212: Merge InputSource with ItemProvider

http://opensource.atlassian.com/projects/spring/browse/BATCH-212

Remove unnecessary uses of Delegating ItemReader from samples.
This commit is contained in:
dsyer
2007-12-18 18:47:33 +00:00
parent 77e6a321f1
commit 7f71dc55ce
9 changed files with 98 additions and 151 deletions

View File

@@ -145,14 +145,14 @@ public class ItemReaderRetryPolicy extends AbstractStatefulRetryPolicy {
// The delegate context...
private RetryContext delegateContext;
private ItemReader provider;
private ItemReader reader;
private ItemRecoverer recoverer;
public ItemProviderRetryContext(ItemReaderRetryCallback callback) {
super(RetrySynchronizationManager.getContext());
item = callback.next(this);
this.provider = callback.getReader();
this.reader = callback.getReader();
this.recoverer = callback.getRecoverer();
}
@@ -165,8 +165,8 @@ public class ItemReaderRetryPolicy extends AbstractStatefulRetryPolicy {
}
public RetryContext open(RetryCallback callback) {
if (hasFailed(provider, item)) {
this.delegateContext = retryContextCache.get(provider
if (hasFailed(reader, item)) {
this.delegateContext = retryContextCache.get(reader
.getKey(item));
}
if (this.delegateContext == null) {
@@ -180,7 +180,7 @@ public class ItemReaderRetryPolicy extends AbstractStatefulRetryPolicy {
public void registerThrowable(RetryContext context, Throwable throwable)
throws TerminatedRetryException {
retryContextCache.put(provider.getKey(item), this.delegateContext);
retryContextCache.put(reader.getKey(item), this.delegateContext);
delegate.registerThrowable(this.delegateContext, throwable);
}
@@ -199,7 +199,7 @@ public class ItemReaderRetryPolicy extends AbstractStatefulRetryPolicy {
public Object handleRetryExhausted(RetryContext context)
throws Exception {
// If there is no going back, then we can remove the history
retryContextCache.remove(provider.getKey(item));
retryContextCache.remove(reader.getKey(item));
RepeatSynchronizationManager.setCompleteOnly();
if (recoverer != null) {
boolean success = recoverer.recover(item, context

View File

@@ -36,12 +36,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader" ref="fileInputTemplate2" />
</bean>
</property>
<property name="itemReader" ref="fileInputTemplate2" />
<property name="itemProcessor">
<bean class="org.springframework.batch.sample.item.processor.PersonProcessor" />
</property>

View File

@@ -27,13 +27,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader"
ref="playerFileItemReader" />
</bean>
</property>
<property name="itemReader" ref="playerFileItemReader" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.sample.item.processor.PlayerItemProcessor">
@@ -57,13 +51,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader"
ref="gameFileItemReader" />
</bean>
</property>
<property name="itemReader" ref="gameFileItemReader" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.item.processor.ItemWriterItemProcessor">
@@ -87,13 +75,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader"
ref="playerSummarizationSource" />
</bean>
</property>
<property name="itemReader" ref="playerSummarizationSource" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.item.processor.ItemWriterItemProcessor">

View File

@@ -21,13 +21,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader"
ref="hibernateItemReader" />
</bean>
</property>
<property name="itemReader" ref="hibernateItemReader" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.sample.item.processor.CustomerCreditIncreaseProcessor">

View File

@@ -20,11 +20,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader" ref="ibatisItemReader" />
</bean>
</property>
<property name="itemReader" ref="ibatisItemReader" />
<property name="itemProcessor">
<bean class="org.springframework.batch.sample.item.processor.CustomerCreditIncreaseProcessor">
<property name="outputSource">

View File

@@ -22,13 +22,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader"
ref="playerFileItemReader" />
</bean>
</property>
<property name="itemReader" ref="playerFileItemReader" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.sample.item.processor.StagingItemProcessor"
@@ -110,13 +104,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader"
ref="gameFileItemReader" />
</bean>
</property>
<property name="itemReader" ref="gameFileItemReader" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.item.processor.ItemWriterItemProcessor">
@@ -140,13 +128,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader"
ref="playerSummarizationSource" />
</bean>
</property>
<property name="itemReader" ref="playerSummarizationSource" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.item.processor.ItemWriterItemProcessor">

View File

@@ -65,11 +65,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader"
p:item-reader-ref="tradeSqlItemReader" />
</property>
<property name="itemReader" ref="tradeSqlItemReader" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.sample.item.processor.DummyProcessor" />

View File

@@ -41,13 +41,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader"
ref="tradeSqlItemReader" />
</bean>
</property>
<property name="itemReader" ref="tradeSqlItemReader" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.sample.item.processor.CustomerUpdateProcessor"
@@ -60,12 +54,7 @@
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader" ref="customerSqlItemReader" />
</bean>
</property>
<property name="itemReader" ref="customerSqlItemReader" />
<property name="itemProcessor">
<bean
class="org.springframework.batch.sample.item.processor.CustomerCreditUpdateProcessor"

View File

@@ -1,78 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
<bean parent="stepScope"/>
<bean parent="jobConfigurationRegistryBeanPostProcessor"/>
<bean parent="stepScope" />
<bean parent="jobConfigurationRegistryBeanPostProcessor" />
<bean id="xmlStaxJob" parent="simpleJob">
<property name="steps">
<bean id="step1" parent="simpleStep">
<property name="tasklet">
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean class="org.springframework.batch.item.provider.DelegatingItemReader">
<property name="itemReader">
<bean class="org.springframework.batch.io.file.support.StaxEventReaderItemReader" scope="step">
<aop:scoped-proxy/>
<property name="fragmentRootElementName" value="trade" />
<property name="resource" value="data/staxJob/input/20070918.testStream.xmlFileStep.xml" />
<property name="fragmentDeserializer">
<bean class="org.springframework.batch.io.file.support.oxm.UnmarshallingFragmentDeserializer">
<constructor-arg>
<bean class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="aliases" ref="aliases" />
</bean>
</constructor-arg>
</bean>
</property>
</bean>
</property>
</bean>
</property>
<property name="itemProcessor">
<bean class="org.springframework.batch.item.processor.ItemWriterItemProcessor"
p:itemWriter-ref="tradeStaxWriter" />
</property>
</bean>
</property>
</bean>
</property>
</bean>
<bean class="org.springframework.batch.io.file.support.StaxEventWriterItemWriter" id="tradeStaxWriter">
<property name="resource" value="file:target/test-outputs/20070918.testStream.xmlFileStep.output.xml" />
<property name="serializer" ref="tradeMarshallingSerializer" />
<property name="rootTagName" value="trades" />
<property name="overwriteOutput" value="true" />
</bean>
<bean class="org.springframework.batch.io.file.support.oxm.MarshallingObjectToXmlSerializer" id="tradeMarshallingSerializer">
<constructor-arg>
<bean class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="aliases" ref="aliases" />
</bean>
</constructor-arg>
</bean>
<util:map id="aliases">
<entry key="trade" value="org.springframework.batch.sample.domain.Trade" />
<entry key="isin" value="java.lang.String" />
<entry key="quantity" value="long" />
<entry key="price" value="java.math.BigDecimal" />
<entry key="customer" value="java.lang.String" />
</util:map>
<!-- register the step scope with the application context -->
<bean class="org.springframework.batch.execution.scope.StepScope" />
</beans>
<bean
class="org.springframework.batch.execution.tasklet.RestartableItemOrientedTasklet">
<property name="itemReader">
<bean
class="org.springframework.batch.io.file.support.StaxEventReaderItemReader"
scope="step">
<aop:scoped-proxy />
<property name="fragmentRootElementName"
value="trade" />
<property name="resource"
value="data/staxJob/input/20070918.testStream.xmlFileStep.xml" />
<property name="fragmentDeserializer">
<bean
class="org.springframework.batch.io.file.support.oxm.UnmarshallingFragmentDeserializer">
<constructor-arg>
<bean
class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="aliases"
ref="aliases" />
</bean>
</constructor-arg>
</bean>
</property>
</bean>
</property>
<property name="itemProcessor">
<bean
class="org.springframework.batch.item.processor.ItemWriterItemProcessor"
p:itemWriter-ref="tradeStaxWriter" />
</property>
</bean>
</property>
</bean>
</property>
</bean>
<bean
class="org.springframework.batch.io.file.support.StaxEventWriterItemWriter"
id="tradeStaxWriter">
<property name="resource"
value="file:target/test-outputs/20070918.testStream.xmlFileStep.output.xml" />
<property name="serializer" ref="tradeMarshallingSerializer" />
<property name="rootTagName" value="trades" />
<property name="overwriteOutput" value="true" />
</bean>
<bean
class="org.springframework.batch.io.file.support.oxm.MarshallingObjectToXmlSerializer"
id="tradeMarshallingSerializer">
<constructor-arg>
<bean
class="org.springframework.oxm.xstream.XStreamMarshaller">
<property name="aliases" ref="aliases" />
</bean>
</constructor-arg>
</bean>
<util:map id="aliases">
<entry key="trade"
value="org.springframework.batch.sample.domain.Trade" />
<entry key="isin" value="java.lang.String" />
<entry key="quantity" value="long" />
<entry key="price" value="java.math.BigDecimal" />
<entry key="customer" value="java.lang.String" />
</util:map>
<!-- register the step scope with the application context -->
<bean class="org.springframework.batch.execution.scope.StepScope" />
</beans>