diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/dao/FlatFileCustomerCreditWriter.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/dao/FlatFileCustomerCreditWriter.java index 888c1ef65..c21150951 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/dao/FlatFileCustomerCreditWriter.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/dao/FlatFileCustomerCreditWriter.java @@ -16,6 +16,7 @@ package org.springframework.batch.sample.dao; +import org.springframework.batch.item.ExecutionContext; import org.springframework.batch.item.ItemStream; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.sample.domain.CustomerCredit; @@ -39,7 +40,7 @@ public class FlatFileCustomerCreditWriter implements CustomerCreditDao, public void writeCredit(CustomerCredit customerCredit) throws Exception { if (!opened) { - open(); + open(new ExecutionContext()); } String line = "" + customerCredit.getName() + separator @@ -56,9 +57,9 @@ public class FlatFileCustomerCreditWriter implements CustomerCreditDao, this.outputSource = outputSource; } - public void open() throws Exception { + public void open(ExecutionContext executionContext) throws Exception { if (outputSource instanceof ItemStream) { - ((ItemStream) outputSource).open(); + ((ItemStream) outputSource).open(executionContext); } opened = true; } diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/GeneratingItemReader.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/GeneratingItemReader.java index e67be3560..86df324a3 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/GeneratingItemReader.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/GeneratingItemReader.java @@ -80,12 +80,6 @@ public class GeneratingItemReader extends AbstractItemReaderRecoverer implements this.marked = this.counter; } - /* (non-Javadoc) - * @see org.springframework.batch.item.ItemStream#open() - */ - public void open() throws StreamException { - } - /* (non-Javadoc) * @see org.springframework.batch.item.ItemStream#reset() */ @@ -102,8 +96,10 @@ public class GeneratingItemReader extends AbstractItemReaderRecoverer implements /* (non-Javadoc) * @see org.springframework.batch.item.ExecutionContextProvider#getExecutionContext() */ - public ExecutionContext getExecutionContext() { - return new ExecutionContext(); + public void beforeSave() { + } + + public void open(ExecutionContext context) throws StreamException { } } diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/StagingItemReader.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/StagingItemReader.java index 434058f92..0ad4242a6 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/StagingItemReader.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/StagingItemReader.java @@ -57,7 +57,7 @@ public class StagingItemReader extends JdbcDaoSupport implements ItemStream, Key * * @see org.springframework.batch.io.driving.DrivingQueryItemReader#open() */ - public void open() { + public void open(ExecutionContext executionContext) { // Can be called from multiple threads because of lazy initialisation... synchronized (lock) { if (keys == null) { @@ -227,22 +227,12 @@ public class StagingItemReader extends JdbcDaoSupport implements ItemStream, Key getBuffer().rollback(); } - /* - * (non-Javadoc) - * - * @see org.springframework.batch.item.ItemStream#restoreFrom(org.springframework.batch.item.ExecutionContext) - */ - public void restoreFrom(ExecutionContext context) { - // no-op - } - /* * (non-Javadoc) * * @see org.springframework.batch.item.ExecutionContextProvider#getExecutionContext() */ - public ExecutionContext getExecutionContext() { - return new ExecutionContext(); + public void beforeSave() { } } diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/InfiniteLoopTasklet.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/InfiniteLoopTasklet.java index bf51fcd18..09733e5d7 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/InfiniteLoopTasklet.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/InfiniteLoopTasklet.java @@ -18,7 +18,6 @@ package org.springframework.batch.sample.tasklet; import org.springframework.batch.core.tasklet.Tasklet; import org.springframework.batch.item.ExecutionContext; -import org.springframework.batch.item.ExecutionContextProvider; import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.support.PropertiesConverter; @@ -30,7 +29,7 @@ import org.springframework.batch.support.PropertiesConverter; * @author Lucas Ward * */ -public class InfiniteLoopTasklet implements Tasklet, ExecutionContextProvider { +public class InfiniteLoopTasklet implements Tasklet { private int count = 0; @@ -47,11 +46,4 @@ public class InfiniteLoopTasklet implements Tasklet, ExecutionContextProvider { return ExitStatus.CONTINUABLE; } - /* (non-Javadoc) - * @see org.springframework.batch.item.ExecutionContextProvider#getExecutionContext() - */ - public ExecutionContext getExecutionContext() { - return new ExecutionContext(PropertiesConverter.stringToProperties("count=" + count)); - } - } diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/SimpleTradeWriter.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/SimpleTradeWriter.java index cae12ae66..3aa7b773b 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/SimpleTradeWriter.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/tasklet/SimpleTradeWriter.java @@ -18,7 +18,8 @@ package org.springframework.batch.sample.tasklet; import org.springframework.batch.core.tasklet.Tasklet; import org.springframework.batch.item.ExecutionContext; -import org.springframework.batch.item.ExecutionContextProvider; +import org.springframework.batch.item.ItemStream; +import org.springframework.batch.item.exception.StreamException; import org.springframework.batch.item.writer.AbstractItemWriter; import org.springframework.batch.sample.dao.TradeDao; import org.springframework.batch.sample.domain.Trade; @@ -38,7 +39,7 @@ import org.springframework.util.Assert; * @author Lucas Ward * @author Dave Syer */ -public class SimpleTradeWriter extends AbstractItemWriter implements ExecutionContextProvider { +public class SimpleTradeWriter extends AbstractItemWriter implements ItemStream { /* * writes a Trade object to output @@ -49,6 +50,8 @@ public class SimpleTradeWriter extends AbstractItemWriter implements ExecutionCo * number of trade objects processed */ private int tradeCount = 0; + + private ExecutionContext executionContext; /** * The input template is read using the readAndMap method, which accepts a @@ -65,14 +68,18 @@ public class SimpleTradeWriter extends AbstractItemWriter implements ExecutionCo public void setTradeDao(TradeDao tradeDao) { this.tradeDao = tradeDao; } + + public void open(ExecutionContext context) throws StreamException { + this.executionContext = context; + } /* (non-Javadoc) * @see org.springframework.batch.item.ExecutionContextProvider#getExecutionContext() */ - public ExecutionContext getExecutionContext() { - ExecutionContext statistics = new ExecutionContext(); - statistics.putLong("trade.count", tradeCount); - return statistics; + public void beforeSave() { + executionContext.putLong("trade.count", tradeCount); } + public void close() throws StreamException { + } } diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/FixedLengthImportJobFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/FixedLengthImportJobFunctionalTests.java index 6aee96386..9f44d4efd 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/FixedLengthImportJobFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/FixedLengthImportJobFunctionalTests.java @@ -23,6 +23,7 @@ import java.sql.SQLException; import org.springframework.batch.io.file.FlatFileItemReader; import org.springframework.batch.io.file.transform.LineTokenizer; +import org.springframework.batch.item.ExecutionContext; import org.springframework.batch.sample.domain.Trade; import org.springframework.batch.sample.mapping.TradeFieldSetMapper; import org.springframework.core.io.ClassPathResource; @@ -61,7 +62,7 @@ public class FixedLengthImportJobFunctionalTests extends AbstractValidatingBatch */ protected void validatePostConditions() throws Exception { - inputSource.open(); + inputSource.open(new ExecutionContext()); jdbcTemplate.query("SELECT ID, ISIN, QUANTITY, PRICE, CUSTOMER FROM trade ORDER BY id", new RowCallbackHandler() { diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/dao/FlatFileCustomerCreditWriterTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/dao/FlatFileCustomerCreditWriterTests.java index 3e15c5aab..0a4fb13d4 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/dao/FlatFileCustomerCreditWriterTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/dao/FlatFileCustomerCreditWriterTests.java @@ -5,6 +5,7 @@ import java.math.BigDecimal; import junit.framework.TestCase; import org.easymock.MockControl; +import org.springframework.batch.item.ExecutionContext; import org.springframework.batch.item.ItemStream; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.sample.domain.CustomerCredit; @@ -28,13 +29,13 @@ public class FlatFileCustomerCreditWriterTests extends TestCase { } public void testOpen() throws Exception { - + ExecutionContext executionContext = new ExecutionContext(); //set-up outputSource mock - output.open(); + output.open(executionContext); outputControl.replay(); //call tested method - writer.open(); + writer.open(executionContext); //verify method calls outputControl.verify(); @@ -65,7 +66,7 @@ public class FlatFileCustomerCreditWriterTests extends TestCase { //set-up OutputSource mock output.write("testName;1"); - output.open(); + output.open(new ExecutionContext()); outputControl.replay(); //call tested method diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/reader/StagingItemReaderTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/reader/StagingItemReaderTests.java index 4ddeda3d4..ea8594e19 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/reader/StagingItemReaderTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/reader/StagingItemReaderTests.java @@ -9,6 +9,7 @@ import org.springframework.batch.core.domain.StepSupport; import org.springframework.batch.execution.scope.SimpleStepContext; import org.springframework.batch.execution.scope.StepContext; import org.springframework.batch.execution.scope.StepSynchronizationManager; +import org.springframework.batch.item.ExecutionContext; import org.springframework.batch.repeat.context.RepeatContextSupport; import org.springframework.batch.repeat.synch.RepeatSynchronizationManager; import org.springframework.batch.sample.item.writer.StagingItemWriter; @@ -49,7 +50,7 @@ public class StagingItemReaderTests extends AbstractTransactionalDataSourceSprin writer.write("BAR"); writer.write("SPAM"); writer.write("BUCKET"); - provider.open(); + provider.open(new ExecutionContext()); } protected void onTearDownAfterTransaction() throws Exception {