diff --git a/spring-batch-docs/asciidoc/testing.adoc b/spring-batch-docs/asciidoc/testing.adoc index d5e3af15c2..e786144648 100644 --- a/spring-batch-docs/asciidoc/testing.adoc +++ b/spring-batch-docs/asciidoc/testing.adoc @@ -103,18 +103,18 @@ public class SkipSampleFunctionalTests { @Autowired private JobLauncherTestUtils jobLauncherTestUtils; - private SimpleJdbcTemplate simpleJdbcTemplate; + private JdbcTemplate jdbcTemplate; @Autowired public void setDataSource(DataSource dataSource) { - this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource); + this.jdbcTemplate = new JdbcTemplate(dataSource); } @Test public void testJob() throws Exception { - simpleJdbcTemplate.update("delete from CUSTOMER"); + this.jdbcTemplate.update("delete from CUSTOMER"); for (int i = 1; i <= 10; i++) { - simpleJdbcTemplate.update("insert into CUSTOMER values (?, 0, ?, 100000)", + this.jdbcTemplate.update("insert into CUSTOMER values (?, 0, ?, 100000)", i, "customer" + i); } @@ -140,18 +140,18 @@ public class SkipSampleFunctionalTests { @Autowired private JobLauncherTestUtils jobLauncherTestUtils; - private SimpleJdbcTemplate simpleJdbcTemplate; + private JdbcTemplate jdbcTemplate; @Autowired public void setDataSource(DataSource dataSource) { - this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource); + this.jdbcTemplate = new JdbcTemplate(dataSource); } @Test public void testJob() throws Exception { - simpleJdbcTemplate.update("delete from CUSTOMER"); + this.jdbcTemplate.update("delete from CUSTOMER"); for (int i = 1; i <= 10; i++) { - simpleJdbcTemplate.update("insert into CUSTOMER values (?, 0, ?, 100000)", + this.jdbcTemplate.update("insert into CUSTOMER values (?, 0, ?, 100000)", i, "customer" + i); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcBatchItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcBatchItemWriter.java index 0d70214c19..c9db016fa2 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcBatchItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/database/JdbcBatchItemWriter.java @@ -135,7 +135,7 @@ public void setJdbcTemplate(NamedParameterJdbcOperations namedParameterJdbcTempl } /** - * Check mandatory properties - there must be a SimpleJdbcTemplate and an SQL statement plus a + * Check mandatory properties - there must be a NamedParameterJdbcOperations and an SQL statement plus a * parameter source. */ @Override diff --git a/spring-batch-integration/src/test/java/org/springframework/batch/integration/chunk/RemoteChunkFaultTolerantStepJdbcIntegrationTests.java b/spring-batch-integration/src/test/java/org/springframework/batch/integration/chunk/RemoteChunkFaultTolerantStepJdbcIntegrationTests.java index 373d8a1934..f018300be4 100644 --- a/spring-batch-integration/src/test/java/org/springframework/batch/integration/chunk/RemoteChunkFaultTolerantStepJdbcIntegrationTests.java +++ b/spring-batch-integration/src/test/java/org/springframework/batch/integration/chunk/RemoteChunkFaultTolerantStepJdbcIntegrationTests.java @@ -1,94 +1,93 @@ -package org.springframework.batch.integration.chunk; - -import static org.junit.Assert.assertEquals; - -import java.util.Collections; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.batch.core.BatchStatus; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobParameter; -import org.springframework.batch.core.JobParameters; -import org.springframework.batch.core.JobParametersBuilder; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.messaging.Message; -import org.springframework.messaging.PollableChannel; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -@ContextConfiguration -@RunWith(SpringJUnit4ClassRunner.class) -public class RemoteChunkFaultTolerantStepJdbcIntegrationTests { - - @Autowired - private JobLauncher jobLauncher; - - @Autowired - private Job job; - - @Autowired - private PollableChannel replies; - - @Before - public void drain() { - Message message = replies.receive(100L); - while (message!=null) { - message = replies.receive(100L); - } - } - - @Test - @DirtiesContext - public void testFailedStep() throws Exception { - JobExecution jobExecution = jobLauncher.run(job, new JobParameters(Collections.singletonMap("item.three", - new JobParameter("unsupported")))); - assertEquals(BatchStatus.FAILED, jobExecution.getStatus()); - StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); - assertEquals(9, stepExecution.getReadCount()); - // In principle the write count could be more than 2 and less than 9... - assertEquals(7, stepExecution.getWriteCount()); - } - - @Test - @DirtiesContext - public void testFailedStepOnError() throws Exception { - JobExecution jobExecution = jobLauncher.run(job, new JobParameters(Collections.singletonMap("item.three", - new JobParameter("error")))); - assertEquals(BatchStatus.FAILED, jobExecution.getStatus()); - StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); - assertEquals(9, stepExecution.getReadCount()); - // In principle the write count could be more than 2 and less than 9... - assertEquals(7, stepExecution.getWriteCount()); - } - - @Test - @DirtiesContext - public void testSunnyDayFaultTolerant() throws Exception { - JobExecution jobExecution = jobLauncher.run(job, new JobParameters(Collections.singletonMap("item.three", - new JobParameter("3")))); - assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); - StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); - assertEquals(9, stepExecution.getReadCount()); - assertEquals(9, stepExecution.getWriteCount()); - } - - @Test - @DirtiesContext - public void testSkipsInWriter() throws Exception { - JobExecution jobExecution = jobLauncher.run(job, new JobParametersBuilder().addString("item.three", "fail") - .addLong("run.id", 1L).toJobParameters()); - // System.err.println(new SimpleJdbcTemplate(dataSource).queryForList("SELECT * FROM INT_MESSAGE_GROUP")); - assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); - StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); - assertEquals(9, stepExecution.getReadCount()); - assertEquals(7, stepExecution.getWriteCount()); - // The whole chunk gets skipped... - assertEquals(2, stepExecution.getWriteSkipCount()); - } -} +package org.springframework.batch.integration.chunk; + +import static org.junit.Assert.assertEquals; + +import java.util.Collections; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.batch.core.BatchStatus; +import org.springframework.batch.core.Job; +import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.JobParameter; +import org.springframework.batch.core.JobParameters; +import org.springframework.batch.core.JobParametersBuilder; +import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.launch.JobLauncher; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.messaging.PollableChannel; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@ContextConfiguration +@RunWith(SpringJUnit4ClassRunner.class) +public class RemoteChunkFaultTolerantStepJdbcIntegrationTests { + + @Autowired + private JobLauncher jobLauncher; + + @Autowired + private Job job; + + @Autowired + private PollableChannel replies; + + @Before + public void drain() { + Message message = replies.receive(100L); + while (message!=null) { + message = replies.receive(100L); + } + } + + @Test + @DirtiesContext + public void testFailedStep() throws Exception { + JobExecution jobExecution = jobLauncher.run(job, new JobParameters(Collections.singletonMap("item.three", + new JobParameter("unsupported")))); + assertEquals(BatchStatus.FAILED, jobExecution.getStatus()); + StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); + assertEquals(9, stepExecution.getReadCount()); + // In principle the write count could be more than 2 and less than 9... + assertEquals(7, stepExecution.getWriteCount()); + } + + @Test + @DirtiesContext + public void testFailedStepOnError() throws Exception { + JobExecution jobExecution = jobLauncher.run(job, new JobParameters(Collections.singletonMap("item.three", + new JobParameter("error")))); + assertEquals(BatchStatus.FAILED, jobExecution.getStatus()); + StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); + assertEquals(9, stepExecution.getReadCount()); + // In principle the write count could be more than 2 and less than 9... + assertEquals(7, stepExecution.getWriteCount()); + } + + @Test + @DirtiesContext + public void testSunnyDayFaultTolerant() throws Exception { + JobExecution jobExecution = jobLauncher.run(job, new JobParameters(Collections.singletonMap("item.three", + new JobParameter("3")))); + assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); + StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); + assertEquals(9, stepExecution.getReadCount()); + assertEquals(9, stepExecution.getWriteCount()); + } + + @Test + @DirtiesContext + public void testSkipsInWriter() throws Exception { + JobExecution jobExecution = jobLauncher.run(job, new JobParametersBuilder().addString("item.three", "fail") + .addLong("run.id", 1L).toJobParameters()); + assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); + StepExecution stepExecution = jobExecution.getStepExecutions().iterator().next(); + assertEquals(9, stepExecution.getReadCount()); + assertEquals(7, stepExecution.getWriteCount()); + // The whole chunk gets skipped... + assertEquals(2, stepExecution.getWriteSkipCount()); + } +}