diff --git a/archetypes/.classpath b/archetypes/.classpath new file mode 100644 index 000000000..6d8fb1e60 --- /dev/null +++ b/archetypes/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/spring-batch-core/.springBeans b/spring-batch-core/.springBeans index 41cad27f5..35d8dd4a0 100644 --- a/spring-batch-core/.springBeans +++ b/spring-batch-core/.springBeans @@ -60,6 +60,7 @@ src/test/resources/org/springframework/batch/core/configuration/xml/StopRestartOnCompletedStepJobParserTests-context.xml src/test/resources/org/springframework/batch/core/configuration/xml/StopRestartOnFailedStepJobParserTests-context.xml src/test/resources/org/springframework/batch/core/configuration/xml/JobRegistryJobParserTests-context.xml + src/test/resources/org/springframework/batch/core/launch/JobLauncherIntegrationTests-context.xml diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/launch/JobLauncherIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/launch/JobLauncherIntegrationTests.java new file mode 100644 index 000000000..4259bad92 --- /dev/null +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/launch/JobLauncherIntegrationTests.java @@ -0,0 +1,76 @@ +package org.springframework.batch.core.launch; + +import static org.junit.Assert.assertEquals; + +import java.util.Calendar; + +import javax.sql.DataSource; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.batch.core.Job; +import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.JobInstance; +import org.springframework.batch.core.JobParametersBuilder; +import org.springframework.batch.core.repository.dao.JdbcJobInstanceDao; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@ContextConfiguration +@RunWith(SpringJUnit4ClassRunner.class) +public class JobLauncherIntegrationTests { + + private SimpleJdbcTemplate jdbcTemplate; + + @Autowired + private JobLauncher jobLauncher; + + @Autowired + private Job job; + + @Autowired + public void setDataSource(DataSource dataSource) { + jdbcTemplate = new SimpleJdbcTemplate(dataSource); + } + + @Test + public void testLaunchAndRelaunch() throws Exception { + + int before = jdbcTemplate.queryForInt("select count(*) from BATCH_JOB_INSTANCE"); + + JobExecution jobExecution = launch(true,0); + launch(false, jobExecution.getJobId()); + launch(false, jobExecution.getJobId()); + + int after = jdbcTemplate.queryForInt("select count(*) from BATCH_JOB_INSTANCE"); + assertEquals(before+1, after); + + } + + private JobExecution launch(boolean start, long jobInstanceID) throws Exception { + + if (start) { + + Calendar c = Calendar.getInstance(); + JobParametersBuilder builder = new JobParametersBuilder(); + builder.addDate("TIMESTAMP", c.getTime()); + return jobLauncher.run(job, builder.toJobParameters()); + + } else { + + JdbcJobInstanceDao dao = new JdbcJobInstanceDao(); + dao.setJdbcTemplate(jdbcTemplate); + JobInstance instance = dao.getJobInstance(jobInstanceID); + if (instance != null) { + return jobLauncher.run(job, instance.getJobParameters()); + } + + return null; + + } + + } + +} diff --git a/spring-batch-core/src/test/resources/org/springframework/batch/core/launch/JobLauncherIntegrationTests-context.xml b/spring-batch-core/src/test/resources/org/springframework/batch/core/launch/JobLauncherIntegrationTests-context.xml new file mode 100644 index 000000000..1a637a071 --- /dev/null +++ b/spring-batch-core/src/test/resources/org/springframework/batch/core/launch/JobLauncherIntegrationTests-context.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + schema-hsqldb.sql + + + + + + + + + + + + + +