RESOLVED - issue BATCH-406: jobInstance properties lastExecution and executionCount are useless

http://jira.springframework.org/browse/BATCH-406

removed lastExecution property and createExecution method
This commit is contained in:
robokaso
2008-03-04 11:46:38 +00:00
parent 2e7c457ef9
commit 9065b6ba25
9 changed files with 28 additions and 75 deletions

View File

@@ -61,7 +61,6 @@ public class SimpleJob extends AbstractJob {
public void execute(JobExecution execution) throws InfrastructureException {
JobInstance jobInstance = execution.getJobInstance();
jobInstance.setLastExecution(execution);
StepExecution currentStepExecution = null;
int startedCount = 0;

View File

@@ -139,8 +139,6 @@ public class SimpleJobRepository implements JobRepository {
Assert.notNull(job, "Job must not be null.");
Assert.notNull(jobParameters, "JobParameters must not be null.");
JobInstance jobInstance;
/*
* Find all jobs matching the runtime information.
*
@@ -150,7 +148,7 @@ public class SimpleJobRepository implements JobRepository {
* has finished.
*/
jobInstance = jobInstanceDao.getJobInstance(job, jobParameters);
JobInstance jobInstance = jobInstanceDao.getJobInstance(job, jobParameters);
// existing job instance found
if (jobInstance != null) {
@@ -159,40 +157,29 @@ public class SimpleJobRepository implements JobRepository {
}
List executions = jobExecutionDao.findJobExecutions(jobInstance);
JobExecution lastExecution = null;
// check for running executions and find the last started
for (Iterator iterator = executions.iterator(); iterator.hasNext();) {
JobExecution execution = (JobExecution) iterator.next();
if (lastExecution == null) {
lastExecution = execution;
}
if (execution.getStartTime() != null && lastExecution.getStartTime() != null
&& lastExecution.getStartTime().getTime() < execution.getStartTime().getTime()) {
lastExecution = execution;
}
if (execution.isRunning()) {
throw new JobExecutionAlreadyRunningException("A job execution for this job is already running: "
+ jobInstance);
}
}
jobInstance.setLastExecution(lastExecution);
}
else {
// no job found, create one
jobInstance = jobInstanceDao.createJobInstance(job, jobParameters);
}
return generateJobExecution(jobInstance);
}
private JobExecution generateJobExecution(JobInstance jobInstance) {
JobExecution execution = jobInstance.createJobExecution();
JobExecution jobExecution = new JobExecution(jobInstance);
// Save the JobExecution so that it picks up an ID (useful for clients
// monitoring asynchronous executions):
saveOrUpdate(execution);
return execution;
saveOrUpdate(jobExecution);
return jobExecution;
}
/**

View File

@@ -105,12 +105,7 @@ public class SimpleJobRepositoryTests extends TestCase {
jobConfiguration.setSteps(stepConfigurations);
databaseJob = new JobInstance(new Long(1), jobParameters, jobConfiguration) {
public JobExecution createJobExecution() {
jobExecution = super.createJobExecution();
return jobExecution;
}
};
databaseJob = new JobInstance(new Long(1), jobParameters, jobConfiguration);
databaseStep1 = "dbStep1";
databaseStep2 = "dbStep2";

View File

@@ -81,7 +81,6 @@ public abstract class AbstractJobDaoTests extends AbstractTransactionalDataSourc
jobExecution.setStartTime(jobExecutionStartTime);
jobExecution.setStatus(BatchStatus.STARTED);
jobExecutionDao.saveJobExecution(jobExecution);
jobInstance.setLastExecution(jobExecution);
}
public void testVersionIsNotNullForJob() throws Exception {

View File

@@ -20,6 +20,7 @@ import java.util.List;
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.execution.job.JobSupport;
@@ -32,7 +33,7 @@ import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer
*
*/
public class JdbcJobDaoQueryTests extends TestCase {
JdbcJobExecutionDao jobExecutionDao;
List list = new ArrayList();
@@ -42,7 +43,7 @@ public class JdbcJobDaoQueryTests extends TestCase {
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
jobExecutionDao = new JdbcJobExecutionDao();
jobExecutionDao.setJobExecutionIncrementer(new DataFieldMaxValueIncrementer() {
@@ -69,7 +70,10 @@ public class JdbcJobDaoQueryTests extends TestCase {
return 1;
}
});
jobExecutionDao.saveJobExecution(new JobInstance(new Long(11), new JobParameters(), new JobSupport("testJob")).createJobExecution());
JobExecution jobExecution = new JobExecution(new JobInstance(new Long(11), new JobParameters(), new JobSupport(
"testJob")));
jobExecutionDao.saveJobExecution(jobExecution);
assertEquals(1, list.size());
String query = (String) list.get(0);
assertTrue("Query did not contain FOO_:" + query, query.indexOf("FOO_") >= 0);

View File

@@ -62,7 +62,7 @@ public class StepExecutionProxyResourceTests extends TestCase {
protected void setUp() throws Exception {
jobInstance = new JobInstance(new Long(0), new JobParameters(), new JobSupport("testJob"));
JobExecution jobExecution = jobInstance.createJobExecution();
JobExecution jobExecution = new JobExecution(jobInstance);
Step step = new StepSupport("bar");
stepExecution = jobExecution.createStepExecution(step);
resource.beforeStep(stepExecution);
@@ -97,7 +97,7 @@ public class StepExecutionProxyResourceTests extends TestCase {
resource.setFilePattern("foo/data/%JOB_NAME%/%job.key%-foo");
jobInstance = new JobInstance(new Long(0), new JobParametersBuilder().addString("job.key", "spam")
.toJobParameters(), new JobSupport("testJob"));
JobExecution jobExecution = jobInstance.createJobExecution();
JobExecution jobExecution = new JobExecution(jobInstance);
Step step = new StepSupport("bar");
resource.beforeStep(jobExecution.createStepExecution(step));
doTestPathName("spam-foo", "foo" + pathsep + "data" + pathsep);

View File

@@ -518,7 +518,7 @@ public class ItemOrientedStepTests extends TestCase {
};
itemOrientedStep.setItemProcessor(new SimpleItemHandler(itemReader, itemWriter));
JobExecution jobExecutionContext = jobInstance.createJobExecution();
JobExecution jobExecutionContext = new JobExecution(jobInstance);
StepExecution stepExecution = new StepExecution(itemOrientedStep, jobExecutionContext);
stepExecution.setExecutionContext(new ExecutionContext(PropertiesConverter.stringToProperties("foo=bar")));
@@ -551,7 +551,7 @@ public class ItemOrientedStepTests extends TestCase {
}
});
JobExecution jobExecutionContext = jobInstance.createJobExecution();
JobExecution jobExecutionContext = new JobExecution(jobInstance);
StepExecution stepExecution = new StepExecution(itemOrientedStep, jobExecutionContext);
stepExecution.setExecutionContext(new ExecutionContext(PropertiesConverter.stringToProperties("foo=bar")));
@@ -579,7 +579,7 @@ public class ItemOrientedStepTests extends TestCase {
}
});
JobExecution jobExecutionContext = jobInstance.createJobExecution();
JobExecution jobExecutionContext = new JobExecution(jobInstance);
StepExecution stepExecution = new StepExecution(itemOrientedStep, jobExecutionContext);
stepExecution.setExecutionContext(new ExecutionContext(PropertiesConverter.stringToProperties("foo=bar")));
@@ -611,7 +611,7 @@ public class ItemOrientedStepTests extends TestCase {
}
});
JobExecution jobExecutionContext = jobInstance.createJobExecution();
JobExecution jobExecutionContext = new JobExecution(jobInstance);
StepExecution stepExecution = new StepExecution(itemOrientedStep, jobExecutionContext);
try {
@@ -642,7 +642,7 @@ public class ItemOrientedStepTests extends TestCase {
itemOrientedStep.setItemProcessor(new SimpleItemHandler(itemReader, itemWriter));
itemOrientedStep.registerStream(itemReader);
JobExecution jobExecutionContext = jobInstance.createJobExecution();
JobExecution jobExecutionContext = new JobExecution(jobInstance);
StepExecution stepExecution = new StepExecution(itemOrientedStep, jobExecutionContext);
stepExecution.setExecutionContext(new ExecutionContext(PropertiesConverter.stringToProperties("foo=bar")));