From e0c30c26c1946df9835b65b7adb424b6cacba5df Mon Sep 17 00:00:00 2001 From: dhgarrette Date: Tue, 24 Feb 2009 19:01:13 +0000 Subject: [PATCH] BATCH-1100: moved state data update to @AfterWrite method --- .../sample/domain/trade/internal/TradeWriter.java | 13 +++++++++---- .../src/main/resources/jobs/skipSampleJob.xml | 3 ++- .../batch/sample/SkipSampleFunctionalTests.java | 7 +------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/trade/internal/TradeWriter.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/trade/internal/TradeWriter.java index bdabeacb9..da99dfa88 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/trade/internal/TradeWriter.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/domain/trade/internal/TradeWriter.java @@ -22,12 +22,14 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.batch.core.annotation.AfterWrite; import org.springframework.batch.item.ExecutionContext; import org.springframework.batch.item.ItemStreamException; import org.springframework.batch.item.ItemStreamSupport; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.sample.domain.trade.Trade; import org.springframework.batch.sample.domain.trade.TradeDao; +import org.springframework.util.Assert; /** * Delegates the actual writing to custom DAO delegate. Allows configurable @@ -47,23 +49,26 @@ public class TradeWriter extends ItemStreamSupport implements ItemWriter public void write(List trades) { - BigDecimal amount = BigDecimal.ZERO; - for (Trade trade : trades) { log.debug(trade); dao.writeTrade(trade); - amount = amount.add(trade.getPrice()); + Assert.notNull(trade.getPrice()); // There must be a price to total if (this.failingCustomers.contains(trade.getCustomer())) { throw new RuntimeException("Something unexpected happened!"); } } - this.totalPrice = this.totalPrice.add(amount); + } + @AfterWrite + public void updateTotalPrice(List trades) { + for (Trade trade : trades) { + this.totalPrice = this.totalPrice.add(trade.getPrice()); + } } @Override diff --git a/spring-batch-samples/src/main/resources/jobs/skipSampleJob.xml b/spring-batch-samples/src/main/resources/jobs/skipSampleJob.xml index a33e220a0..2fa9ebe11 100644 --- a/spring-batch-samples/src/main/resources/jobs/skipSampleJob.xml +++ b/spring-batch-samples/src/main/resources/jobs/skipSampleJob.xml @@ -38,7 +38,8 @@ - + + diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/SkipSampleFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/SkipSampleFunctionalTests.java index f1e630c83..cb6249462 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/SkipSampleFunctionalTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/SkipSampleFunctionalTests.java @@ -24,7 +24,6 @@ import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.jdbc.SimpleJdbcTestUtils; -import org.springframework.transaction.annotation.Transactional; /** * Error is encountered during writing - transaction is rolled back and the @@ -126,7 +125,6 @@ public class SkipSampleFunctionalTests { *
  • This step does not occur. No error records are logged. * */ - @Transactional @Test public void testJobIncrementing() { // @@ -136,10 +134,7 @@ public class SkipSampleFunctionalTests { Map execution1 = this.getJobExecution(id1); assertEquals("COMPLETED", execution1.get("STATUS")); - // - // TODO: Uncomment this! - // - // this.validateLaunchWithSkips(); + this.validateLaunchWithSkips(); // // Clear the data