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:
robokaso
2008-02-14 14:52:35 +00:00
parent 6d7b50ee0e
commit 600c68aa02
7 changed files with 12 additions and 21 deletions

View File

@@ -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());
}

View File

@@ -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 {

View File

@@ -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);

View File

@@ -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);

View File

@@ -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();

View File

@@ -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" >

View File

@@ -73,7 +73,6 @@
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="mapJobDao" lazy-init="true"