RESOLVED - issue BATCH-814: JobRepository should not require Step or Job (only their names)

Moved the check for restartability up into JobLauncher.  There is a corner case where a non-restartable job could be restarted (see comment in SimpleJobLancher), but it should have a pretty small impact.
This commit is contained in:
dsyer
2008-09-05 17:21:24 +00:00
parent db608b91a8
commit 34c2fce32f
26 changed files with 152 additions and 128 deletions

View File

@@ -15,7 +15,6 @@
*/
package org.springframework.batch.integration;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobInstance;
import org.springframework.batch.core.JobParameters;
@@ -34,7 +33,7 @@ public class JobRepositorySupport implements JobRepository {
/* (non-Javadoc)
* @see org.springframework.batch.core.repository.JobRepository#createJobExecution(org.springframework.batch.core.Job, org.springframework.batch.core.JobParameters)
*/
public JobExecution createJobExecution(Job job, JobParameters jobParameters)
public JobExecution createJobExecution(String jobName, JobParameters jobParameters)
throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
return new JobExecution(new JobInstance(0L, jobParameters, job.getName()));
}

View File

@@ -321,7 +321,7 @@ public class ChunkMessageItemWriterIntegrationTests {
JobInstanceAlreadyCompleteException {
SimpleJob job = new SimpleJob();
job.setName("job");
JobExecution jobExecution = jobRepository.createJobExecution(job,
JobExecution jobExecution = jobRepository.createJobExecution(job.getName(),
new JobParametersBuilder().addLong("job.counter", jobCounter++)
.toJobParameters());
StepExecution stepExecution = jobExecution.createStepExecution(step.getName());

View File

@@ -176,7 +176,7 @@ public class FileToMessagesJobFactoryBeanTests {
Job job = (Job) factory.getObject();
JobParameters jobParameters = new JobParametersBuilder().addString(FILE_INPUT_PATH, "classpath:/log4j.properties").toJobParameters();
JobExecution jobExecution = jobRepository.createJobExecution(job, jobParameters);
JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters);
job.execute(jobExecution);
assertNotNull(jobExecution);

View File

@@ -33,7 +33,6 @@ import org.springframework.batch.core.Step;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.integration.JobRepositorySupport;
import org.springframework.batch.integration.JobSupport;
import org.springframework.batch.integration.StepSupport;
import org.springframework.batch.item.ExecutionContext;
import org.springframework.beans.factory.annotation.Required;
@@ -81,7 +80,7 @@ public class StepExecutionMessageHandlerTests {
JobRepositorySupport jobRepository = new JobRepositorySupport();
StepExecutionMessageHandler handler = createHandler(jobRepository);
JobExecutionRequest message = handler.handle(new JobExecutionRequest(jobRepository.createJobExecution(
new JobSupport("job"), new JobParameters())));
job.getName(), new JobParameters())));
assertEquals(1, message.getJobExecution().getStepExecutions().size());
assertEquals(BatchStatus.COMPLETED, message.getStatus());
}
@@ -91,7 +90,7 @@ public class StepExecutionMessageHandlerTests {
JobRepositorySupport jobRepository = new JobRepositorySupport();
StepExecutionMessageHandler handler = createHandler(jobRepository);
JobExecutionRequest jobExecutionRequest = new JobExecutionRequest(jobRepository.createJobExecution(
new JobSupport("job"), new JobParameters()));
job.getName(), new JobParameters()));
jobExecutionRequest.getJobExecution().getExecutionContext().putString("foo", "bar");
JobExecutionRequest message = handler.handle(jobExecutionRequest);
assertEquals(1, message.getJobExecution().getStepExecutions().size());
@@ -104,7 +103,7 @@ public class StepExecutionMessageHandlerTests {
JobRepositorySupport jobRepository = new JobRepositorySupport();
StepExecutionMessageHandler handler = createHandler(jobRepository);
JobExecutionRequest jobExecutionRequest = new JobExecutionRequest(jobRepository.createJobExecution(
new JobSupport("job"), new JobParameters()));
job.getName(), new JobParameters()));
jobExecutionRequest.getJobExecution().getExecutionContext().putString("foo", "bar");
// The step has to add the output attribute to the context
handler.setStep(new StepSupport("step") {
@@ -123,7 +122,7 @@ public class StepExecutionMessageHandlerTests {
public void testHandleFailedJob() throws Exception {
JobRepositorySupport jobRepository = new JobRepositorySupport();
StepExecutionMessageHandler handler = createHandler(jobRepository);
JobExecution jobExecution = jobRepository.createJobExecution(new JobSupport("job"), new JobParameters());
JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), new JobParameters());
jobExecution.setStatus(BatchStatus.FAILED);
JobExecutionRequest message = handler.handle(new JobExecutionRequest(jobExecution));
assertEquals(0, message.getJobExecution().getStepExecutions().size());
@@ -158,7 +157,7 @@ public class StepExecutionMessageHandlerTests {
}
};
StepExecutionMessageHandler handler = createHandler(jobRepository);
JobExecution jobExecution = jobRepository.createJobExecution(new JobSupport("job"), new JobParameters());
JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), new JobParameters());
JobExecutionRequest message = handler.handle(new JobExecutionRequest(jobExecution));
assertNotNull(message);
assertEquals(1, jobExecution.getStepExecutions().size());
@@ -182,7 +181,7 @@ public class StepExecutionMessageHandlerTests {
}
};
StepExecutionMessageHandler handler = createHandler(jobRepository);
JobExecution jobExecution = jobRepository.createJobExecution(new JobSupport("job"), new JobParameters());
JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), new JobParameters());
JobExecutionRequest message = handler.handle(new JobExecutionRequest(jobExecution));
assertNotNull(message);
assertEquals(1, jobExecution.getStepExecutions().size());
@@ -208,7 +207,7 @@ public class StepExecutionMessageHandlerTests {
}
};
StepExecutionMessageHandler handler = createHandler(jobRepository);
JobExecution jobExecution = jobRepository.createJobExecution(new JobSupport("job"), new JobParameters());
JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), new JobParameters());
JobExecutionRequest message = handler.handle(new JobExecutionRequest(jobExecution));
assertNotNull(message);
assertEquals(1, jobExecution.getStepExecutions().size());