IN PROGRESS - issue BATCH-340: Refactor JobRepository for greater clarity and consistency.
http://jira.springframework.org/browse/BATCH-340 JdbcStepExecutionDao no longer has JobExecutionDao dependency - repository coordinates the daos now
This commit is contained in:
@@ -259,6 +259,10 @@ public class SimpleJobRepository implements JobRepository {
|
||||
|
||||
if (stepExecution.getId() == null) {
|
||||
// new execution, obtain id and insert
|
||||
JobExecution jobExecution = stepExecution.getJobExecution();
|
||||
if (jobExecution.getId() == null) {
|
||||
jobExecutionDao.saveJobExecution(jobExecution);
|
||||
}
|
||||
stepExecutionDao.saveStepExecution(stepExecution);
|
||||
stepExecutionDao.saveExecutionAttributes(stepExecution.getId(), stepExecution.getExecutionAttributes());
|
||||
}
|
||||
|
||||
@@ -96,8 +96,6 @@ public class JdbcStepExecutionDao extends AbstractJdbcBatchMetadataDao
|
||||
|
||||
private DataFieldMaxValueIncrementer stepExecutionIncrementer;
|
||||
|
||||
private JobExecutionDao jobExecutionDao;
|
||||
|
||||
public ExecutionAttributes findExecutionAttributes(final Long executionId) {
|
||||
|
||||
Assert.notNull(executionId, "ExecutionId must not be null.");
|
||||
@@ -281,8 +279,6 @@ public class JdbcStepExecutionDao extends AbstractJdbcBatchMetadataDao
|
||||
|
||||
validateStepExecution(stepExecution);
|
||||
|
||||
cascadeJobExecution(stepExecution.getJobExecution());
|
||||
|
||||
stepExecution.setId(new Long(stepExecutionIncrementer.nextLongValue()));
|
||||
stepExecution.incrementVersion(); // should be 0 now
|
||||
Object[] parameters = new Object[] { stepExecution.getId(), stepExecution.getVersion(),
|
||||
@@ -297,14 +293,6 @@ public class JdbcStepExecutionDao extends AbstractJdbcBatchMetadataDao
|
||||
Types.INTEGER, Types.VARCHAR, Types.CHAR, Types.VARCHAR, Types.VARCHAR });
|
||||
}
|
||||
|
||||
private void cascadeJobExecution(JobExecution jobExecution) {
|
||||
if (jobExecution.getId() != null) {
|
||||
// assume already saved...
|
||||
return;
|
||||
}
|
||||
jobExecutionDao.saveJobExecution(jobExecution);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate StepExecution. At a minimum, JobId, StartTime, and Status cannot
|
||||
* be null. EndTime can be null for an unfinished job.
|
||||
@@ -478,13 +466,8 @@ public class JdbcStepExecutionDao extends AbstractJdbcBatchMetadataDao
|
||||
this.stepExecutionIncrementer = stepExecutionIncrementer;
|
||||
}
|
||||
|
||||
public void setJobExecutionDao(JobExecutionDao jobExecutionDao) {
|
||||
this.jobExecutionDao = jobExecutionDao;
|
||||
}
|
||||
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.notNull(stepExecutionIncrementer, "StepExecutionIncrementer cannot be null.");
|
||||
Assert.notNull(jobExecutionDao, "JobDao cannot be null");
|
||||
}
|
||||
|
||||
public static class AttributeType {
|
||||
|
||||
@@ -369,7 +369,7 @@ public class SimpleJobRepositoryTests extends TestCase {
|
||||
}
|
||||
|
||||
public void testSaveExistingStepExecution() {
|
||||
StepExecution stepExecution = new StepExecution(new StepInstance(new Long(10L)), null, null);
|
||||
StepExecution stepExecution = new StepExecution(new StepInstance(new Long(10L)), new JobExecution(null), null);
|
||||
ExecutionAttributes executionAttributes = new ExecutionAttributes();
|
||||
stepExecution.setExecutionAttributes(executionAttributes);
|
||||
stepDao.saveStepExecution(stepExecution);
|
||||
|
||||
@@ -49,6 +49,8 @@ public abstract class AbstractStepDaoTests extends AbstractTransactionalDataSour
|
||||
protected StepInstanceDao stepInstanceDao;
|
||||
|
||||
protected StepExecutionDao stepExecutionDao;
|
||||
|
||||
protected JobExecutionDao jobExecutionDao;
|
||||
|
||||
protected JobInstance jobInstance;
|
||||
|
||||
@@ -76,6 +78,10 @@ public abstract class AbstractStepDaoTests extends AbstractTransactionalDataSour
|
||||
this.stepExecutionDao = stepExecutionDao;
|
||||
}
|
||||
|
||||
public void setJobExecutionDao(JobExecutionDao jobExecutionDao) {
|
||||
this.jobExecutionDao = jobExecutionDao;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.springframework.test.AbstractSingleSpringContextTests#getConfigLocations()
|
||||
@@ -94,6 +100,7 @@ public abstract class AbstractStepDaoTests extends AbstractTransactionalDataSour
|
||||
step1 = stepInstanceDao.createStepInstance(jobInstance, "TestStep1");
|
||||
step2 = stepInstanceDao.createStepInstance(jobInstance, "TestStep2");
|
||||
jobExecution = new JobExecution(step2.getJobInstance());
|
||||
jobExecutionDao.saveJobExecution(jobExecution);
|
||||
|
||||
stepExecution = new StepExecution(step1, jobExecution, null);
|
||||
stepExecution.setStatus(BatchStatus.STARTED);
|
||||
|
||||
@@ -46,7 +46,6 @@ public class JdbcStepDaoPrefixTests extends TestCase {
|
||||
|
||||
stepInstanceDao = new JdbcStepInstanceDao();
|
||||
stepExecutionDao = new JdbcStepExecutionDao();
|
||||
stepExecutionDao.setJobExecutionDao(new MapJobDao());
|
||||
stepExecutionIncrementer = (DataFieldMaxValueIncrementer)stepExecutionIncrementerControl.getMock();
|
||||
stepIncrementer = (DataFieldMaxValueIncrementer)stepIncrementerControl.getMock();
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
<bean id="stepExecutionDao" class="org.springframework.batch.execution.repository.dao.JdbcStepExecutionDao" >
|
||||
<property name="jdbcTemplate" ref="jdbcTemplate" />
|
||||
<property name="stepExecutionIncrementer" ref="stepExecutionIncrementer" />
|
||||
<property name="jobExecutionDao" ref="jobExecutionDao"/>
|
||||
</bean>
|
||||
|
||||
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
|
||||
|
||||
Reference in New Issue
Block a user