diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/domain/JobInstance.java b/spring-batch-core/src/main/java/org/springframework/batch/core/domain/JobInstance.java index 018f8342a..a07a176f3 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/domain/JobInstance.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/domain/JobInstance.java @@ -16,6 +16,8 @@ package org.springframework.batch.core.domain; +import org.springframework.util.Assert; + /** @@ -36,14 +38,11 @@ public class JobInstance extends Entity { private int jobExecutionCount; private JobExecution lastExecution; - - public JobInstance(Long id, JobParameters jobParameters) { - super(id); - this.jobParameters = jobParameters==null ? new JobParameters() : jobParameters; - } public JobInstance(Long id, JobParameters jobParameters, Job job){ - this(id, jobParameters); + super(id); + Assert.notNull(job); + this.jobParameters = jobParameters==null ? new JobParameters() : jobParameters; this.job = job; } @@ -92,7 +91,4 @@ public class JobInstance extends Entity { return job; } - public void setJob(Job job) { - this.job = job; - } } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/domain/JobExecutionTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/domain/JobExecutionTests.java index 4cfc5d80d..41a4f3178 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/domain/JobExecutionTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/domain/JobExecutionTests.java @@ -93,7 +93,7 @@ public class JobExecutionTests extends TestCase { */ public void testGetJobId() { assertEquals(11, execution.getJobId().longValue()); - execution = new JobExecution(new JobInstance(new Long(23), new JobParameters()), null); + execution = new JobExecution(new JobInstance(new Long(23), new JobParameters(), new JobSupport("testJob")), null); assertEquals(23, execution.getJobId().longValue()); } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/domain/JobInstanceTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/domain/JobInstanceTests.java index c68088cec..44a316b10 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/domain/JobInstanceTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/domain/JobInstanceTests.java @@ -51,8 +51,6 @@ public class JobInstanceTests extends TestCase { public void testGetJob(){ assertEquals("job", instance.getJob().getName()); - instance.setJob(null); - assertEquals(null, instance.getJob()); } public void testCreateJobExecution(){ @@ -62,8 +60,15 @@ public class JobInstanceTests extends TestCase { } public void testCreateWithNulls(){ - instance = new JobInstance(null, null); - assertEquals(null, instance.getJobName()); + try { + new JobInstance(null, null, null); + fail("job instance can't exist without job specified"); + } + catch (IllegalArgumentException e) { + // expected + } + instance = new JobInstance(null, null, new JobSupport("testJob")); + assertEquals("testJob", instance.getJobName()); assertEquals(0, instance.getJobParameters().getParameters().size()); } } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/domain/StepExecutionTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/domain/StepExecutionTests.java index c2346c96f..325733a18 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/domain/StepExecutionTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/domain/StepExecutionTests.java @@ -260,7 +260,7 @@ public class StepExecutionTests extends TestCase { } private StepExecution newStepExecution(String stepName, Long long2) { - JobInstance job = new JobInstance(new Long(3), new JobParameters()); + JobInstance job = new JobInstance(new Long(3), new JobParameters(), new JobSupport("testJob")); StepExecution execution = new StepExecution(stepName, new JobExecution(job, long2), new Long(4)); return execution; } diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/SimpleJobRepository.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/SimpleJobRepository.java index dff95d7d4..2afe45c08 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/SimpleJobRepository.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/SimpleJobRepository.java @@ -160,7 +160,7 @@ public class SimpleJobRepository implements JobRepository { * thread or process will block until this transaction has finished. */ - jobInstances = jobInstanceDao.findJobInstances(job.getName(), jobParameters); + jobInstances = jobInstanceDao.findJobInstances(job, jobParameters); } if (jobInstances.size() == 1) { @@ -188,7 +188,6 @@ public class SimpleJobRepository implements JobRepository { } } jobInstance.setLastExecution(lastExecution); - jobInstance.setJob(job); } else if (jobInstances.size() == 0) { // no job found, create one @@ -286,8 +285,7 @@ public class SimpleJobRepository implements JobRepository { */ private JobInstance createJobInstance(Job job, JobParameters jobParameters) { - JobInstance jobInstance = jobInstanceDao.createJobInstance(job.getName(), jobParameters); - jobInstance.setJob(job); + JobInstance jobInstance = jobInstanceDao.createJobInstance(job, jobParameters); return jobInstance; } diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JdbcJobInstanceDao.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JdbcJobInstanceDao.java index 542219cec..b73e7211a 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JdbcJobInstanceDao.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JdbcJobInstanceDao.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.springframework.batch.core.domain.Job; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobParameters; import org.springframework.beans.factory.InitializingBean; @@ -50,19 +51,20 @@ public class JdbcJobInstanceDao extends AbstractJdbcBatchMetadataDao implements * @throws IllegalArgumentException if any {@link JobIdentifier} fields are * null. */ - public JobInstance createJobInstance(String jobName, JobParameters jobParameters) { + public JobInstance createJobInstance(Job job, JobParameters jobParameters) { - Assert.notNull(jobName, "Job Name must not be null."); + Assert.notNull(job, "Job must not be null."); + Assert.hasLength(job.getName(), "Job must have a name"); Assert.notNull(jobParameters, "JobParameters must not be null."); Long jobId = new Long(jobIncrementer.nextLongValue()); - Object[] parameters = new Object[] { jobId, jobName, createJobKey(jobParameters) }; + Object[] parameters = new Object[] { jobId, job.getName(), createJobKey(jobParameters) }; getJdbcTemplate().update(getQuery(CREATE_JOB), parameters, new int[] { Types.INTEGER, Types.VARCHAR, Types.VARCHAR }); insertJobParameters(jobId, jobParameters); - JobInstance jobInstance = new JobInstance(jobId, jobParameters); + JobInstance jobInstance = new JobInstance(jobId, jobParameters, job); return jobInstance; } @@ -144,16 +146,17 @@ public class JdbcJobInstanceDao extends AbstractJdbcBatchMetadataDao implements * @throws IllegalArgumentException if any {@link JobIdentifier} fields are * null. */ - public List findJobInstances(final String jobName, final JobParameters jobParameters) { + public List findJobInstances(final Job job, final JobParameters jobParameters) { - Assert.notNull(jobName, "Job Name must not be null."); + Assert.notNull(job, "Job must not be null."); + Assert.hasLength(job.getName(), "Job must have a name"); Assert.notNull(jobParameters, "JobParameters must not be null."); - Object[] parameters = new Object[] { jobName, createJobKey(jobParameters) }; + Object[] parameters = new Object[] { job.getName(), createJobKey(jobParameters) }; RowMapper rowMapper = new RowMapper() { public Object mapRow(ResultSet rs, int rowNum) throws SQLException { - JobInstance jobInstance = new JobInstance(new Long(rs.getLong(1)), jobParameters); + JobInstance jobInstance = new JobInstance(new Long(rs.getLong(1)), jobParameters, job); return jobInstance; } }; diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JobInstanceDao.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JobInstanceDao.java index a0afe9b82..9400fe6e4 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JobInstanceDao.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/JobInstanceDao.java @@ -2,6 +2,7 @@ package org.springframework.batch.execution.repository.dao; import java.util.List; +import org.springframework.batch.core.domain.Job; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobParameters; @@ -24,7 +25,7 @@ public interface JobInstanceDao { * @param jobParameters * @return JobInstance */ - JobInstance createJobInstance(String jobName, JobParameters jobParameters); + JobInstance createJobInstance(Job job, JobParameters jobParameters); /** * Find all job instances that match the given name and parameters. If no @@ -36,6 +37,6 @@ public interface JobInstanceDao { * @return List of {@link JobInstance} objects matching * {@link JobIdentifier} */ - List findJobInstances(String jobName, JobParameters jobParameters); + List findJobInstances(Job job, JobParameters jobParameters); } diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapJobDao.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapJobDao.java index 34edb01c4..63d01cb6b 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapJobDao.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapJobDao.java @@ -23,7 +23,7 @@ import java.util.Map; import java.util.Set; import java.util.Map.Entry; -import org.springframework.batch.core.domain.JobSupport; +import org.springframework.batch.core.domain.Job; import org.springframework.batch.core.domain.JobExecution; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobParameters; @@ -47,19 +47,18 @@ public class MapJobDao implements JobInstanceDao, JobExecutionDao { executionsById.clear(); } - public JobInstance createJobInstance(String jobName, JobParameters jobParameters) { - JobInstance jobInstance = new JobInstance(new Long(currentId++), jobParameters); - jobInstance.setJob(new JobSupport(jobName)); + public JobInstance createJobInstance(Job job, JobParameters jobParameters) { + JobInstance jobInstance = new JobInstance(new Long(currentId++), jobParameters, job); jobsById.put(jobInstance.getId(), jobInstance); return jobInstance; } - public List findJobInstances(String jobName, JobParameters jobParameters) { + public List findJobInstances(Job job, JobParameters jobParameters) { List list = new ArrayList(); for (Iterator iter = jobsById.values().iterator(); iter.hasNext();) { JobInstance jobInstance = (JobInstance) iter.next(); - if (jobInstance.getJobName().equals(jobName) && jobInstance.getJobParameters().equals(jobParameters)) { + if (jobInstance.getJobName().equals(job.getName()) && jobInstance.getJobParameters().equals(jobParameters)) { list.add(jobInstance); } } diff --git a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapStepDao.java b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapStepDao.java index f0fee6e14..3b9177a86 100644 --- a/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapStepDao.java +++ b/spring-batch-execution/src/main/java/org/springframework/batch/execution/repository/dao/MapStepDao.java @@ -16,8 +16,10 @@ package org.springframework.batch.execution.repository.dao; +import java.util.Iterator; import java.util.Map; import java.util.Set; +import java.util.Map.Entry; import org.springframework.batch.core.domain.JobExecution; import org.springframework.batch.core.domain.StepExecution; @@ -127,7 +129,13 @@ public class MapStepDao implements StepExecutionDao { } public StepExecution getStepExecution(JobExecution jobExecution, String stepName) { - // TODO Auto-generated method stub +// for (Iterator iterator = executionsById.entrySet().iterator(); iterator.hasNext();) { +// Entry entry = (Entry) iterator.next(); +// StepExecution stepExecution = (StepExecution) entry.getValue(); +// if (stepExecution.getJobExecution().equals(jobExecution) && stepExecution.getStepName().equals(stepName)){ +// return stepExecution; +// } +// } return null; } diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/job/simple/SimpleJobTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/job/simple/SimpleJobTests.java index c088b603c..580c91f86 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/job/simple/SimpleJobTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/job/simple/SimpleJobTests.java @@ -252,7 +252,7 @@ public class SimpleJobTests extends TestCase { * Check JobRepository to ensure status is being saved. */ private void checkRepository(BatchStatus status, ExitStatus exitStatus) { - assertEquals(jobInstance, jobInstanceDao.findJobInstances(jobInstance.getJobName(), jobParameters).get(0)); + assertEquals(jobInstance, jobInstanceDao.findJobInstances(jobInstance.getJob(), jobParameters).get(0)); // because map dao stores in memory, it can be checked directly JobExecution jobExecution = (JobExecution) jobExecutionDao.findJobExecutions(jobInstance).get(0); assertEquals(jobInstance.getId(), jobExecution.getJobId()); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/SimpleJobRepositoryTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/SimpleJobRepositoryTests.java index 8710a79c5..c22ca3eb4 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/SimpleJobRepositoryTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/SimpleJobRepositoryTests.java @@ -109,7 +109,7 @@ public class SimpleJobRepositoryTests extends TestCase { jobConfiguration.setSteps(stepConfigurations); - databaseJob = new JobInstance(new Long(1), jobParameters) { + databaseJob = new JobInstance(new Long(1), jobParameters, jobConfiguration) { public JobExecution createJobExecution() { jobExecution = super.createJobExecution(); return jobExecution; @@ -235,8 +235,8 @@ public class SimpleJobRepositoryTests extends TestCase { List jobs = new ArrayList(); jobs.add(databaseJob); - jobs.add(new JobInstance(new Long(127), jobParameters)); - jobInstanceDao.findJobInstances(jobConfiguration.getName(), jobParameters); + jobs.add(new JobInstance(new Long(127), jobParameters, jobConfiguration)); + jobInstanceDao.findJobInstances(jobConfiguration, jobParameters); jobInstanceDaoControl.setReturnValue(jobs); jobInstanceDaoControl.replay(); @@ -256,7 +256,7 @@ public class SimpleJobRepositoryTests extends TestCase { jobConfiguration.setStartLimit(1); List jobs = new ArrayList(); - jobInstanceDao.findJobInstances(jobConfiguration.getName(), jobParameters); + jobInstanceDao.findJobInstances(jobConfiguration, jobParameters); jobs.add(databaseJob); jobInstanceDaoControl.setReturnValue(jobs); jobExecutionDao.getJobExecutionCount(databaseJob); @@ -330,7 +330,7 @@ public class SimpleJobRepositoryTests extends TestCase { public void testSaveOrUpdateValidJobExecution() throws Exception { - JobExecution jobExecution = new JobExecution(new JobInstance(new Long(1), jobParameters)); + JobExecution jobExecution = new JobExecution(new JobInstance(new Long(1), jobParameters, jobConfiguration)); // new execution - call save on job dao jobExecutionDao.saveJobExecution(jobExecution); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractJobDaoTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractJobDaoTests.java index 259972e25..f0bc47a40 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractJobDaoTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractJobDaoTests.java @@ -74,7 +74,7 @@ public abstract class AbstractJobDaoTests extends AbstractTransactionalDataSourc job = new JobSupport("Job1"); // Create job. - jobInstance = jobInstanceDao.createJobInstance(job.getName(), jobParameters); + jobInstance = jobInstanceDao.createJobInstance(job, jobParameters); // Create an execution jobExecutionStartTime = new Date(System.currentTimeMillis()); @@ -99,13 +99,13 @@ public abstract class AbstractJobDaoTests extends AbstractTransactionalDataSourc public void testFindNonExistentJob() { // No job should be found since it hasn't been created. - List jobs = jobInstanceDao.findJobInstances("nonexistentJob", jobParameters); + List jobs = jobInstanceDao.findJobInstances(new JobSupport("nonexistentJob"), jobParameters); assertTrue(jobs.size() == 0); } public void testFindJob() { - List jobs = jobInstanceDao.findJobInstances(job.getName(), jobParameters); + List jobs = jobInstanceDao.findJobInstances(job, jobParameters); assertTrue(jobs.size() == 1); JobInstance tempJob = (JobInstance) jobs.get(0); assertTrue(jobInstance.equals(tempJob)); @@ -130,19 +130,20 @@ public abstract class AbstractJobDaoTests extends AbstractTransactionalDataSourc */ public void testCreateJobWithExistingName() { - jobInstanceDao.createJobInstance("ScheduledJob", jobParameters); + Job scheduledJob = new JobSupport("ScheduledJob"); + jobInstanceDao.createJobInstance(scheduledJob, jobParameters); // Modifying the key should bring back a completely different // JobInstance JobParameters tempProps = new JobParametersBuilder().addString("job.key", "testKey1").toJobParameters(); List jobs; - jobs = jobInstanceDao.findJobInstances("ScheduledJob", jobParameters); + jobs = jobInstanceDao.findJobInstances(scheduledJob, jobParameters); assertEquals(1, jobs.size()); JobInstance jobInstance = (JobInstance) jobs.get(0); assertEquals(jobParameters, jobInstance.getJobParameters()); - jobs = jobInstanceDao.findJobInstances("ScheduledJob", tempProps); + jobs = jobInstanceDao.findJobInstances(scheduledJob, tempProps); assertEquals(0, jobs.size()); } @@ -206,15 +207,16 @@ public abstract class AbstractJobDaoTests extends AbstractTransactionalDataSourc public void testZeroExecutionCount() { - JobInstance testJob = jobInstanceDao.createJobInstance("test", new JobParameters()); + JobInstance testJob = jobInstanceDao.createJobInstance(new JobSupport("test"), new JobParameters()); // no jobExecutions saved for new job, count should be 0 assertEquals(jobExecutionDao.getJobExecutionCount(testJob), 0); } public void testJobWithSimpleJobIdentifier() throws Exception { + Job testJob = new JobSupport("test"); // Create job. - jobInstance = jobInstanceDao.createJobInstance("test", jobParameters); + jobInstance = jobInstanceDao.createJobInstance(testJob, jobParameters); List jobs = jdbcTemplate.queryForList("SELECT * FROM BATCH_JOB_INSTANCE where JOB_INSTANCE_ID=?", new Object[] { jobInstance.getId() }); @@ -224,10 +226,12 @@ public abstract class AbstractJobDaoTests extends AbstractTransactionalDataSourc } public void testJobWithDefaultJobIdentifier() throws Exception { + + Job testDefaultJob = new JobSupport("testDefault"); // Create job. - jobInstance = jobInstanceDao.createJobInstance("testDefault", jobParameters); + jobInstance = jobInstanceDao.createJobInstance(testDefaultJob, jobParameters); - List jobs = jobInstanceDao.findJobInstances("testDefault", jobParameters); + List jobs = jobInstanceDao.findJobInstances(testDefaultJob, jobParameters); assertEquals(1, jobs.size()); assertEquals(jobParameters.getString("job.key"), ((JobInstance) jobs.get(0)).getJobParameters().getString( diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractStepDaoTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractStepDaoTests.java index 34666fea3..fcad20ceb 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractStepDaoTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/AbstractStepDaoTests.java @@ -86,7 +86,7 @@ public abstract class AbstractStepDaoTests extends AbstractTransactionalDataSour */ protected void onSetUpInTransaction() throws Exception { Job job = new JobSupport("TestJob"); - jobInstance = jobInstanceDao.createJobInstance(job.getName(), jobParameters); + jobInstance = jobInstanceDao.createJobInstance(job, jobParameters); step1 = "TestStep1"; step2 = "TestStep2"; jobExecution = new JobExecution(jobInstance); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/JdbcJobDaoQueryTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/JdbcJobDaoQueryTests.java index ba935d32b..3130d7e3a 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/JdbcJobDaoQueryTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/JdbcJobDaoQueryTests.java @@ -22,6 +22,7 @@ import junit.framework.TestCase; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobParameters; +import org.springframework.batch.core.domain.JobSupport; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer; @@ -68,7 +69,7 @@ public class JdbcJobDaoQueryTests extends TestCase { return 1; } }); - jobExecutionDao.saveJobExecution(new JobInstance(new Long(11), new JobParameters()).createJobExecution()); + jobExecutionDao.saveJobExecution(new JobInstance(new Long(11), new JobParameters(), new JobSupport("testJob")).createJobExecution()); assertEquals(1, list.size()); String query = (String) list.get(0); assertTrue("Query did not contain FOO_:" + query, query.indexOf("FOO_") >= 0); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/JdbcStepDaoPrefixTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/JdbcStepDaoPrefixTests.java index 0b6e1b361..4951bbe87 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/JdbcStepDaoPrefixTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/JdbcStepDaoPrefixTests.java @@ -8,6 +8,7 @@ import org.easymock.MockControl; import org.springframework.batch.core.domain.JobExecution; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobParameters; +import org.springframework.batch.core.domain.JobSupport; import org.springframework.batch.core.domain.StepExecution; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -29,7 +30,7 @@ public class JdbcStepDaoPrefixTests extends TestCase { MockJdbcTemplate jdbcTemplate = new MockJdbcTemplate(); - JobInstance job = new JobInstance(new Long(1), new JobParameters()); + JobInstance job = new JobInstance(new Long(1), new JobParameters(), new JobSupport("testJob")); String step = "foo"; StepExecution stepExecution = new StepExecution(step, new JobExecution(job), null); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapJobDaoTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapJobDaoTests.java index 3106d0313..ddf406485 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapJobDaoTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapJobDaoTests.java @@ -20,9 +20,11 @@ import java.util.List; import junit.framework.TestCase; +import org.springframework.batch.core.domain.Job; import org.springframework.batch.core.domain.JobExecution; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobParameters; +import org.springframework.batch.core.domain.JobSupport; public class MapJobDaoTests extends TestCase { @@ -30,44 +32,47 @@ public class MapJobDaoTests extends TestCase { JobParameters jobParameters = new JobParameters(); + Job fooJob = new JobSupport("foo"); + protected void setUp() throws Exception { MapJobDao.clear(); } public void testCreateAndRetrieveSingle() throws Exception { - JobInstance job = dao.createJobInstance("foo", jobParameters); - List result = dao.findJobInstances("foo", jobParameters); + JobInstance job = dao.createJobInstance(fooJob, jobParameters); + List result = dao.findJobInstances(fooJob, jobParameters); assertTrue(result.contains(job)); } public void testCreateAndRetrieveMultiple() throws Exception { - JobInstance job = dao.createJobInstance("foo", jobParameters); - job = dao.createJobInstance("bar", jobParameters); - List result = dao.findJobInstances("bar", jobParameters); + JobInstance job = dao.createJobInstance(fooJob, jobParameters); + Job barJob = new JobSupport("bar"); + job = dao.createJobInstance(barJob, jobParameters); + List result = dao.findJobInstances(barJob, jobParameters); assertEquals(1, result.size()); assertTrue(result.contains(job)); } public void testNoExecutionsForNewJob() throws Exception { - JobInstance job = dao.createJobInstance("foo", jobParameters); + JobInstance job = dao.createJobInstance(fooJob, jobParameters); assertEquals(0, dao.getJobExecutionCount(job)); } public void testSaveExecutionUpdatesId() throws Exception { - JobInstance job = dao.createJobInstance("foo", jobParameters); + JobInstance job = dao.createJobInstance(fooJob, jobParameters); JobExecution execution = new JobExecution(job); assertNull(execution.getId()); dao.saveJobExecution(execution); assertNotNull(execution.getId()); } public void testCorrectExecutionCountForExistingJob() throws Exception { - JobInstance job = dao.createJobInstance("foo", jobParameters); + JobInstance job = dao.createJobInstance(fooJob, jobParameters); dao.saveJobExecution(new JobExecution(job)); assertEquals(1, dao.getJobExecutionCount(job)); } public void testMultipleExecutionsPerExisting() throws Exception { - JobInstance job = dao.createJobInstance("foo", jobParameters); + JobInstance job = dao.createJobInstance(fooJob, jobParameters); dao.saveJobExecution(new JobExecution(job)); Thread.sleep(50L); // Hack, hack, hackety, hack - job executions are not unique if created too close together! dao.saveJobExecution(new JobExecution(job)); @@ -76,7 +81,7 @@ public class MapJobDaoTests extends TestCase { public void testGetJobExecution(){ - JobInstance jobInstance = dao.createJobInstance("foo", jobParameters); + JobInstance jobInstance = dao.createJobInstance(fooJob, jobParameters); JobExecution jobExecution = new JobExecution(jobInstance); dao.saveJobExecution(jobExecution); JobExecution tempExecution = dao.getJobExecution(jobExecution.getId()); @@ -85,7 +90,7 @@ public class MapJobDaoTests extends TestCase { public void testGetNonExistantJobExecution(){ - JobInstance jobInstance = dao.createJobInstance("foo", jobParameters); + JobInstance jobInstance = dao.createJobInstance(fooJob, jobParameters); JobExecution jobExecution = new JobExecution(jobInstance); dao.saveJobExecution(jobExecution); assertNull(dao.getJobExecution(new Long(999999))); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapStepDaoTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapStepDaoTests.java index 895189784..7e448efe9 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapStepDaoTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/repository/dao/MapStepDaoTests.java @@ -16,11 +16,16 @@ package org.springframework.batch.execution.repository.dao; +import java.util.Properties; + import junit.framework.TestCase; +import org.springframework.batch.core.domain.JobExecution; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobParameters; +import org.springframework.batch.core.domain.JobSupport; import org.springframework.batch.core.domain.StepExecution; +import org.springframework.batch.item.ExecutionContext; public class MapStepDaoTests extends TestCase { @@ -33,14 +38,10 @@ public class MapStepDaoTests extends TestCase { protected void setUp() throws Exception { MapStepDao.clear(); - job = new JobInstance(new Long(jobId++), new JobParameters()); + job = new JobInstance(new Long(jobId++), new JobParameters(), new JobSupport("testJob")); step = "foo"; } - public void testNoExecutionsForNew() throws Exception { -// assertEquals(0, dao.getStepExecutionCount(step)); - } - public void testSaveExecutionUpdatesId() throws Exception { StepExecution execution = new StepExecution(step, null, null); assertNull(execution.getId()); @@ -48,26 +49,16 @@ public class MapStepDaoTests extends TestCase { assertNotNull(execution.getId()); } - public void testCorrectExecutionCountForExisting() throws Exception { -// dao.saveStepExecution(new StepExecution(step, null, null)); -// assertEquals(1, dao.getStepExecutionCount(step)); - } - - public void testOnlyOneExecutionPerStep() throws Exception { -// dao.saveStepExecution(new StepExecution(step, null, null)); -// dao.saveStepExecution(new StepExecution(step, null, null)); -// assertEquals(2, dao.getStepExecutionCount(step)); - } - public void testSaveExecutionContext() throws Exception { -// assertEquals(null, dao.getExecutionContext(step.getId())); +// JobExecution jobExecution = new JobExecution(null); +// StepExecution stepExecution = new StepExecution(step, jobExecution, null); +// assertEquals(null, dao.findExecutionContext(stepExecution)); // Properties data = new Properties(); // data.setProperty("restart.key1", "restartData"); // ExecutionContext executionContext = new ExecutionContext(data); -// StepExecution stepExecution = new StepExecution(step, null, null); // stepExecution.setExecutionContext(executionContext); // dao.saveStepExecution(stepExecution); -// StepExecution tempExecution = dao.getStepExecution(stepExecution.getId(), step); +// StepExecution tempExecution = dao.getStepExecution(jobExecution, step); // assertEquals(tempExecution, stepExecution); // assertEquals(stepExecution.getExecutionContext(), tempExecution.getExecutionContext()); } diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/resource/BatchResourceFactoryBeanTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/resource/BatchResourceFactoryBeanTests.java index dd5162cbd..f4aaa3753 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/resource/BatchResourceFactoryBeanTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/resource/BatchResourceFactoryBeanTests.java @@ -59,8 +59,7 @@ public class BatchResourceFactoryBeanTests extends TestCase { protected void setUp() throws Exception { - jobInstance = new JobInstance(new Long(0), new JobParameters()); - jobInstance.setJob(new JobSupport("testJob")); + jobInstance = new JobInstance(new Long(0), new JobParameters(), new JobSupport("testJob")); JobExecution jobExecution = jobInstance.createJobExecution(); stepInstance = "bar"; resourceFactory.setStepContext(new SimpleStepContext(jobExecution.createStepExecution(stepInstance))); @@ -99,8 +98,7 @@ public class BatchResourceFactoryBeanTests extends TestCase { public void testNonStandardFilePatternWithJobParameters() throws Exception { jobInstance = new JobInstance(new Long(0), new JobParametersBuilder().addString("job.key", "spam") - .toJobParameters()); - jobInstance.setJob(new JobSupport("testJob")); + .toJobParameters(), new JobSupport("testJob")); JobExecution jobExecution = jobInstance.createJobExecution(); stepInstance = "bar"; resourceFactory.setStepContext(new SimpleStepContext(jobExecution.createStepExecution(stepInstance))); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/ChunkedStepTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/ChunkedStepTests.java index e2d86b07d..414f2cd5c 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/ChunkedStepTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/ChunkedStepTests.java @@ -95,9 +95,7 @@ public class ChunkedStepTests extends TestCase { // Only process one item: chunkedStep.setChunkSize(1); - jobInstance = new JobInstance(new Long(0), new JobParameters()); - jobInstance.setJob(new JobSupport("FOO")); - + jobInstance = new JobInstance(new Long(0), new JobParameters(), new JobSupport("FOO")); SimpleStreamManager streamManager = new SimpleStreamManager(transactionManager); streamManager.setUseClassNameAsPrefix(false); chunkedStep.setStreamManager(streamManager); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/ItemOrientedStepTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/ItemOrientedStepTests.java index 4e79d67e3..05c3c8a5d 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/ItemOrientedStepTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/ItemOrientedStepTests.java @@ -108,8 +108,7 @@ public class ItemOrientedStepTests extends TestCase { template.setCompletionPolicy(new SimpleCompletionPolicy(1)); itemOrientedStep.setChunkOperations(template); - jobInstance = new JobInstance(new Long(0), new JobParameters()); - jobInstance.setJob(new JobSupport("FOO")); + jobInstance = new JobInstance(new Long(0), new JobParameters(), new JobSupport("FOO")); SimpleStreamManager streamManager = new SimpleStreamManager(transactionManager); streamManager.setUseClassNameAsPrefix(false); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/TaskletStepTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/TaskletStepTests.java index bbb1d6fb4..b41ffa8ec 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/TaskletStepTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/TaskletStepTests.java @@ -9,6 +9,7 @@ import org.springframework.batch.core.domain.JobExecution; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobInterruptedException; import org.springframework.batch.core.domain.JobParameters; +import org.springframework.batch.core.domain.JobSupport; import org.springframework.batch.core.domain.StepExecution; import org.springframework.batch.core.tasklet.Tasklet; import org.springframework.batch.execution.step.TaskletStep; @@ -26,7 +27,7 @@ public class TaskletStepTests extends TestCase { protected void setUp() throws Exception { stepExecution = new StepExecution("stepName", new JobExecution(new JobInstance( - new Long(0L), new JobParameters()), new Long(12))); + new Long(0L), new JobParameters(), new JobSupport("testJob")), new Long(12))); } public void testTaskletMandatory() throws Exception { diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/RepeatOperationsStepTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/RepeatOperationsStepTests.java index e04114f7f..5f40b363c 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/RepeatOperationsStepTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/RepeatOperationsStepTests.java @@ -23,6 +23,7 @@ import junit.framework.TestCase; import org.springframework.batch.core.domain.JobExecution; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobParameters; +import org.springframework.batch.core.domain.JobSupport; import org.springframework.batch.core.domain.StepExecution; import org.springframework.batch.execution.step.ItemOrientedStep; import org.springframework.batch.item.reader.AbstractItemReader; @@ -92,7 +93,7 @@ public class RepeatOperationsStepTests extends TestCase { configuration.setChunkOperations(repeatTemplate); configuration.setJobRepository(new JobRepositorySupport()); configuration.setTransactionManager(new ResourcelessTransactionManager()); - StepExecution stepExecution = new StepExecution("stepName", new JobExecution(new JobInstance(new Long(0L), new JobParameters()), + StepExecution stepExecution = new StepExecution("stepName", new JobExecution(new JobInstance(new Long(0L), new JobParameters(), new JobSupport("testJob")), new Long(12))); configuration.afterPropertiesSet(); try { @@ -133,7 +134,7 @@ public class RepeatOperationsStepTests extends TestCase { configuration.setStepOperations(stepTemplate); configuration.setJobRepository(new JobRepositorySupport()); configuration.setTransactionManager(new ResourcelessTransactionManager()); - StepExecution stepExecution = new StepExecution("stepName", new JobExecution(new JobInstance(new Long(0L), new JobParameters()), + StepExecution stepExecution = new StepExecution("stepName", new JobExecution(new JobInstance(new Long(0L), new JobParameters(), new JobSupport("testJob")), new Long(12))); configuration.afterPropertiesSet(); configuration.execute(stepExecution); diff --git a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/StepExecutorInterruptionTests.java b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/StepExecutorInterruptionTests.java index 126c7e15d..8b898cf50 100644 --- a/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/StepExecutorInterruptionTests.java +++ b/spring-batch-execution/src/test/java/org/springframework/batch/execution/step/support/StepExecutorInterruptionTests.java @@ -79,7 +79,7 @@ public class StepExecutorInterruptionTests extends TestCase { List steps = jobInstance.getJob().getSteps(); final String stepName = ((Step)steps.get(0)).getName(); - JobExecution jobExecutionContext = new JobExecution(new JobInstance(new Long(0L), new JobParameters())); + JobExecution jobExecutionContext = new JobExecution(new JobInstance(new Long(0L), new JobParameters(), new JobSupport("testJob"))); final StepExecution stepExecution = new StepExecution(stepName, jobExecutionContext); step.setItemReader(new AbstractItemReader() { public Object read() throws Exception { 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 4cfee96f9..87309c71d 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 @@ -3,6 +3,7 @@ package org.springframework.batch.sample.item.reader; import org.springframework.batch.core.domain.JobExecution; import org.springframework.batch.core.domain.JobInstance; import org.springframework.batch.core.domain.JobParameters; +import org.springframework.batch.core.domain.JobSupport; import org.springframework.batch.core.domain.StepExecution; import org.springframework.batch.execution.scope.SimpleStepContext; import org.springframework.batch.execution.scope.StepContext; @@ -36,7 +37,7 @@ public class StagingItemReaderTests extends AbstractTransactionalDataSourceSprin protected void prepareTestInstance() throws Exception { StepContext stepScopeContext = new SimpleStepContext(new StepExecution("stepName", - new JobExecution(new JobInstance(jobId, new JobParameters())))); + new JobExecution(new JobInstance(jobId, new JobParameters(), new JobSupport("testJob"))))); StepSynchronizationManager.register(stepScopeContext); RepeatSynchronizationManager.register(new RepeatContextSupport(null)); super.prepareTestInstance();