diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobLauncher.java b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobLauncher.java
index 903bd9390..2e16c82dd 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobLauncher.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobLauncher.java
@@ -81,7 +81,17 @@ public class SimpleJobLauncher implements JobLauncher, InitializingBean {
Assert.notNull(job, "The Job must not be null.");
Assert.notNull(jobParameters, "The JobParameters must not be null.");
- final JobExecution jobExecution = jobRepository.createJobExecution(job, jobParameters);
+ boolean exists = jobRepository.isJobInstanceExists(job.getName(), jobParameters);
+ if (exists && !job.isRestartable()) {
+ throw new JobRestartException("JobInstance already exists and is not restartable");
+ }
+ /**
+ * There is a very small probability that a non-restartable job can be
+ * restarted, but only if another process or thread manages to launch
+ * and fail a job execution for this instance between the last assertion
+ * and the next method returning successfully.
+ */
+ final JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters);
taskExecutor.execute(new Runnable() {
diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobOperator.java b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobOperator.java
index 07617cfd3..02ab10709 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobOperator.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/launch/support/SimpleJobOperator.java
@@ -85,7 +85,8 @@ public class SimpleJobOperator implements JobOperator, InitializingBean {
public void afterPropertiesSet() throws Exception {
Assert.notNull(jobLauncher, "JobLauncher must be provided");
Assert.notNull(jobRegistry, "JobLocator must be provided");
- Assert.notNull(jobExplorer, "BatchMetaDataExplorer must be provided");
+ Assert.notNull(jobExplorer, "JobExplorer must be provided");
+ Assert.notNull(jobRepository, "JobRepository must be provided");
}
/**
diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/JobRepository.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/JobRepository.java
index 1337fd45e..57a5a26c1 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/JobRepository.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/JobRepository.java
@@ -54,9 +54,8 @@ public interface JobRepository {
* returned in a new {@link JobInstance}, associated with the
* {@link JobExecution}. If no previous instance is found, the execution
* will be associated with a new {@link JobInstance}
- *
+ * @param jobName TODO
* @param jobParameters the runtime parameters for the job
- * @param job the job the execution should be associated with.
*
* @return a valid job {@link JobExecution} for the arguments provided
* @throws JobExecutionAlreadyRunningException if there is a
@@ -69,7 +68,7 @@ public interface JobRepository {
* found and was already completed successfully.
*
*/
- JobExecution createJobExecution(Job job, JobParameters jobParameters) throws JobExecutionAlreadyRunningException,
+ JobExecution createJobExecution(String jobName, JobParameters jobParameters) throws JobExecutionAlreadyRunningException,
JobRestartException, JobInstanceAlreadyCompleteException;
/**
diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBean.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBean.java
index a761348da..fc49c375f 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBean.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBean.java
@@ -83,7 +83,7 @@ public class JobRepositoryFactoryBean extends AbstractJobRepositoryFactoryBean i
*
* @param isolationLevelForCreate the isolation level name to set
*
- * @see SimpleJobRepository#createJobExecution(org.springframework.batch.core.Job,
+ * @see SimpleJobRepository#createJobExecution(String,
* org.springframework.batch.core.JobParameters)
*/
public void setIsolationLevelForCreate(String isolationLevelForCreate) {
diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/SimpleJobRepository.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/SimpleJobRepository.java
index 78c2636d2..b14fef106 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/SimpleJobRepository.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/SimpleJobRepository.java
@@ -143,13 +143,13 @@ public class SimpleJobRepository implements JobRepository {
* support the higher isolation levels).
*
*
- * @see JobRepository#createJobExecution(Job, JobParameters)
+ * @see JobRepository#createJobExecution(String, JobParameters)
*
*/
- public JobExecution createJobExecution(Job job, JobParameters jobParameters)
+ public JobExecution createJobExecution(String jobName, JobParameters jobParameters)
throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
- Assert.notNull(job, "Job must not be null.");
+ Assert.notNull(jobName, "Job name must not be null.");
Assert.notNull(jobParameters, "JobParameters must not be null.");
/*
@@ -161,14 +161,11 @@ public class SimpleJobRepository implements JobRepository {
* has finished.
*/
- JobInstance jobInstance = jobInstanceDao.getJobInstance(job.getName(), jobParameters);
+ JobInstance jobInstance = jobInstanceDao.getJobInstance(jobName, jobParameters);
ExecutionContext executionContext;
// existing job instance found
if (jobInstance != null) {
- if (!job.isRestartable()) {
- throw new JobRestartException("JobInstance already exists and is not restartable");
- }
List executions = jobExecutionDao.findJobExecutions(jobInstance);
@@ -188,7 +185,7 @@ public class SimpleJobRepository implements JobRepository {
}
else {
// no job found, create one
- jobInstance = jobInstanceDao.createJobInstance(job.getName(), jobParameters);
+ jobInstance = jobInstanceDao.createJobInstance(jobName, jobParameters);
executionContext = new ExecutionContext();
}
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/job/JobSupport.java b/spring-batch-core/src/test/java/org/springframework/batch/core/job/JobSupport.java
index 4cbfbd068..ec70d3aad 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/job/JobSupport.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/job/JobSupport.java
@@ -142,7 +142,7 @@ public class JobSupport implements BeanNameAware, Job {
*/
public void execute(JobExecution execution) throws UnexpectedJobExecutionException {
throw new UnsupportedOperationException(
- "JobSupport does not provide an implementation of run(). Use a smarter subclass.");
+ "JobSupport does not provide an implementation of execute(). Use a smarter subclass.");
}
public String toString() {
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/job/SimpleJobTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/job/SimpleJobTests.java
index 16b962bc6..f7f7255a6 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/job/SimpleJobTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/job/SimpleJobTests.java
@@ -123,7 +123,7 @@ public class SimpleJobTests extends TestCase {
job.setName("testJob");
job.setSteps(steps);
- jobExecution = jobRepository.createJobExecution(job, jobParameters);
+ jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters);
jobInstance = jobExecution.getJobInstance();
stepExecution1 = new StepExecution(step1.getName(), jobExecution);
@@ -403,7 +403,7 @@ public class SimpleJobTests extends TestCase {
assertFalse(jobExecution.getExecutionContext().isEmpty());
- jobExecution = jobRepository.createJobExecution(job, jobParameters);
+ jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters);
try {
job.execute(jobExecution);
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/launch/SimpleJobLauncherTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/launch/SimpleJobLauncherTests.java
index 30eb32588..cccfcb23d 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/launch/SimpleJobLauncherTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/launch/SimpleJobLauncherTests.java
@@ -16,8 +16,14 @@
package org.springframework.batch.core.launch;
-import static org.easymock.EasyMock.*;
-import static org.junit.Assert.*;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.List;
@@ -30,6 +36,7 @@ import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.job.JobSupport;
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
import org.springframework.batch.core.repository.JobRepository;
+import org.springframework.batch.core.repository.JobRestartException;
import org.springframework.batch.repeat.ExitStatus;
import org.springframework.core.task.TaskExecutor;
@@ -42,6 +49,7 @@ public class SimpleJobLauncherTests {
private SimpleJobLauncher jobLauncher;
private Job job = new JobSupport("foo") {
+ @Override
public void execute(JobExecution execution) {
execution.setExitStatus(ExitStatus.FINISHED);
return;
@@ -66,8 +74,8 @@ public class SimpleJobLauncherTests {
JobExecution jobExecution = new JobExecution(null, null);
- expect(jobRepository.createJobExecution(job, jobParameters)).andReturn(jobExecution);
-
+ expect(jobRepository.isJobInstanceExists(job.getName(), jobParameters)).andReturn(false);
+ expect(jobRepository.createJobExecution(job.getName(), jobParameters)).andReturn(jobExecution);
replay(jobRepository);
jobLauncher.afterPropertiesSet();
@@ -77,6 +85,38 @@ public class SimpleJobLauncherTests {
verify(jobRepository);
}
+ /*
+ * Non-restartable JobInstance can be run only once - attempt to run
+ * existing non-restartable JobInstance causes error.
+ */
+ @Test
+ public void testRunNonRestartableJobInstanceTwice() throws Exception {
+ job = new JobSupport("foo") {
+ @Override
+ public boolean isRestartable() {
+ return false;
+ }
+ @Override
+ public void execute(JobExecution execution) {
+ execution.setExitStatus(ExitStatus.FINISHED);
+ return;
+ }
+ };
+
+ testRun();
+ try {
+ reset(jobRepository);
+ expect(jobRepository.isJobInstanceExists(job.getName(), jobParameters)).andReturn(true);
+ replay(jobRepository);
+ jobLauncher.run(job, jobParameters);
+ fail("Expected JobRestartException");
+ }
+ catch (JobRestartException e) {
+ // expected
+ }
+ verify(jobRepository);
+ }
+
@Test
public void testTaskExecutor() throws Exception {
final List list = new ArrayList();
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractStepExecutionDaoTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractStepExecutionDaoTests.java
index 89ff49c3c..929b6b846 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractStepExecutionDaoTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractStepExecutionDaoTests.java
@@ -32,7 +32,6 @@ import org.springframework.batch.core.JobInstance;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.StepExecution;
-import org.springframework.batch.core.job.JobSupport;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.step.StepSupport;
import org.springframework.dao.OptimisticLockingFailureException;
@@ -71,9 +70,7 @@ public abstract class AbstractStepExecutionDaoTests extends AbstractTransactiona
@Before
public void onSetUp() throws Exception {
repository = getJobRepository();
-
-
- jobExecution = repository.createJobExecution(new JobSupport("testJob"), new JobParameters());
+ jobExecution = repository.createJobExecution("job", new JobParameters());
jobInstance = jobExecution.getJobInstance();
step = new StepSupport("foo");
stepExecution = new StepExecution(step.getName(), jobExecution);
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBeanTests.java
index 77c9ff0f7..8517af8c1 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBeanTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBeanTests.java
@@ -18,7 +18,6 @@ package org.springframework.batch.core.repository.support;
import static junit.framework.Assert.*;
import static org.easymock.EasyMock.*;
import org.springframework.batch.core.JobParameters;
-import org.springframework.batch.core.job.JobSupport;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.item.database.support.DataFieldMaxValueIncrementerFactory;
import org.springframework.dao.DataAccessException;
@@ -161,7 +160,7 @@ public class JobRepositoryFactoryBeanTests {
expect(transactionManager.getTransaction(transactionDefinition)).andReturn(null);
replay(transactionManager);
try {
- repository.createJobExecution(new JobSupport("job"), new JobParameters());
+ repository.createJobExecution("foo", new JobParameters());
// we expect an exception from the txControl because we provided the
// wrong meta data
fail("Expected IllegalArgumentException");
@@ -188,7 +187,7 @@ public class JobRepositoryFactoryBeanTests {
replay(dataSource);
replay(transactionManager);
try {
- repository.createJobExecution(new JobSupport("job"), new JobParameters());
+ repository.createJobExecution("foo", new JobParameters());
// we expect an exception but not from the txControl because we
// provided the correct meta data
fail("Expected IllegalArgumentException");
@@ -215,7 +214,7 @@ public class JobRepositoryFactoryBeanTests {
replay(dataSource);
replay(transactionManager);
try {
- repository.createJobExecution(new JobSupport("job"), new JobParameters());
+ repository.createJobExecution("foo", new JobParameters());
// we expect an exception but not from the txControl because we
// provided the correct meta data
fail("Expected IllegalArgumentException");
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MapJobRepositoryFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MapJobRepositoryFactoryBeanTests.java
index 5247c9218..9baa95624 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MapJobRepositoryFactoryBeanTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/MapJobRepositoryFactoryBeanTests.java
@@ -1,11 +1,13 @@
package org.springframework.batch.core.repository.support;
+import static org.junit.Assert.fail;
+
import org.junit.Test;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.job.JobSupport;
+import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;
import org.springframework.batch.core.repository.JobRepository;
-import org.springframework.batch.core.repository.JobRestartException;
/**
* Tests for {@link MapJobRepositoryFactoryBean}.
@@ -24,12 +26,13 @@ public class MapJobRepositoryFactoryBeanTests {
Job job = new JobSupport("jobName");
JobParameters jobParameters = new JobParameters();
- repository.createJobExecution(job, jobParameters);
+ repository.createJobExecution(job.getName(), jobParameters);
try {
- repository.createJobExecution(job, jobParameters);
+ repository.createJobExecution(job.getName(), jobParameters);
+ fail("Expected JobExecutionAlreadyRunningException");
}
- catch (JobRestartException e) {
+ catch (JobExecutionAlreadyRunningException e) {
// expected
}
}
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/SimpleJobRepositoryIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/SimpleJobRepositoryIntegrationTests.java
index d094efae7..0737aac09 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/SimpleJobRepositoryIntegrationTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/SimpleJobRepositoryIntegrationTests.java
@@ -1,9 +1,13 @@
package org.springframework.batch.core.repository.support;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
import java.util.Date;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import org.springframework.batch.core.BatchStatus;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParameters;
@@ -12,15 +16,12 @@ import org.springframework.batch.core.Step;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.job.JobSupport;
import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;
-import org.springframework.batch.core.repository.JobRestartException;
import org.springframework.batch.core.step.StepSupport;
import org.springframework.batch.item.ExecutionContext;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.ContextConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
-import org.junit.runner.RunWith;
-import org.junit.Test;
/**
* Repository tests using JDBC DAOs (rather than mocks).
@@ -55,7 +56,7 @@ public class SimpleJobRepositoryIntegrationTests {
builder.addString("stringKey", "stringValue").addLong("longKey", 1L).addDouble("doubleKey", 1.1).addDate("dateKey", new Date(1L));
JobParameters jobParams = builder.toJobParameters();
- JobExecution firstExecution = jobRepository.createJobExecution(job, jobParams);
+ JobExecution firstExecution = jobRepository.createJobExecution(job.getName(), jobParams);
firstExecution.setStartTime(new Date());
assertNotNull(firstExecution.getLastUpdated());
@@ -64,7 +65,7 @@ public class SimpleJobRepositoryIntegrationTests {
jobRepository.update(firstExecution);
firstExecution.setEndTime(new Date());
jobRepository.update(firstExecution);
- JobExecution secondExecution = jobRepository.createJobExecution(job, jobParams);
+ JobExecution secondExecution = jobRepository.createJobExecution(job.getName(), jobParams);
assertEquals(firstExecution.getJobInstance(), secondExecution.getJobInstance());
assertEquals(job.getName(), secondExecution.getJobInstance().getJobName());
@@ -78,36 +79,16 @@ public class SimpleJobRepositoryIntegrationTests {
public void testCreateAndFindWithNoStartDate() throws Exception {
job.setRestartable(true);
- JobExecution firstExecution = jobRepository.createJobExecution(job, jobParameters);
+ JobExecution firstExecution = jobRepository.createJobExecution(job.getName(), jobParameters);
firstExecution.setStartTime(new Date(0));
firstExecution.setEndTime(new Date(1));
jobRepository.update(firstExecution);
- JobExecution secondExecution = jobRepository.createJobExecution(job, jobParameters);
+ JobExecution secondExecution = jobRepository.createJobExecution(job.getName(), jobParameters);
assertEquals(firstExecution.getJobInstance(), secondExecution.getJobInstance());
assertEquals(job.getName(), secondExecution.getJobInstance().getJobName());
}
- /*
- * Non-restartable JobInstance can be run only once - attempt to run
- * existing non-restartable JobInstance causes error.
- */
- @Transactional @Test
- public void testRunNonRestartableJobInstanceTwice() throws Exception {
- job.setRestartable(false);
-
- JobExecution firstExecution = jobRepository.createJobExecution(job, jobParameters);
- jobRepository.update(firstExecution);
-
- try {
- jobRepository.createJobExecution(job, jobParameters);
- fail();
- }
- catch (JobRestartException e) {
- // expected
- }
- }
-
/*
* Save multiple StepExecutions for the same step and check the returned
* count and last execution are correct.
@@ -118,7 +99,7 @@ public class SimpleJobRepositoryIntegrationTests {
StepSupport step = new StepSupport("restartedStep");
// first execution
- JobExecution firstJobExec = jobRepository.createJobExecution(job, jobParameters);
+ JobExecution firstJobExec = jobRepository.createJobExecution(job.getName(), jobParameters);
StepExecution firstStepExec = new StepExecution(step.getName(), firstJobExec);
jobRepository.update(firstJobExec);
jobRepository.add(firstStepExec);
@@ -137,7 +118,7 @@ public class SimpleJobRepositoryIntegrationTests {
jobRepository.update(firstJobExec);
// second execution
- JobExecution secondJobExec = jobRepository.createJobExecution(job, jobParameters);
+ JobExecution secondJobExec = jobRepository.createJobExecution(job.getName(), jobParameters);
StepExecution secondStepExec = new StepExecution(step.getName(), secondJobExec);
jobRepository.update(secondJobExec);
jobRepository.add(secondStepExec);
@@ -156,7 +137,7 @@ public class SimpleJobRepositoryIntegrationTests {
putLong("crashedPosition", 7);
}
};
- JobExecution jobExec = jobRepository.createJobExecution(job, jobParameters);
+ JobExecution jobExec = jobRepository.createJobExecution(job.getName(), jobParameters);
jobExec.setStartTime(new Date(0));
jobExec.setExecutionContext(ctx);
Step step = new StepSupport("step1");
@@ -182,10 +163,10 @@ public class SimpleJobRepositoryIntegrationTests {
@Transactional @Test
public void testOnlyOneJobExecutionAllowedRunning() throws Exception {
job.setRestartable(true);
- jobRepository.createJobExecution(job, jobParameters);
+ jobRepository.createJobExecution(job.getName(), jobParameters);
try {
- jobRepository.createJobExecution(job, jobParameters);
+ jobRepository.createJobExecution(job.getName(), jobParameters);
fail();
}
catch (JobExecutionAlreadyRunningException e) {
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/JobRepositorySupport.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/JobRepositorySupport.java
index dfe43ffed..78a3ec790 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/JobRepositorySupport.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/JobRepositorySupport.java
@@ -15,7 +15,6 @@
*/
package org.springframework.batch.core.step;
-import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobInstance;
import org.springframework.batch.core.JobParameters;
@@ -31,7 +30,7 @@ public class JobRepositorySupport implements JobRepository {
/* (non-Javadoc)
* @see org.springframework.batch.container.common.repository.JobRepository#findOrCreateJob(org.springframework.batch.container.common.domain.JobConfiguration)
*/
- public JobExecution createJobExecution(Job jobConfiguration, JobParameters jobParameters) {
+ public JobExecution createJobExecution(String jobName, JobParameters jobParameters) {
return null;
}
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SimpleStepFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SimpleStepFactoryBeanTests.java
index 231b218bb..3da6e237a 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SimpleStepFactoryBeanTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SimpleStepFactoryBeanTests.java
@@ -96,7 +96,7 @@ public class SimpleStepFactoryBeanTests {
step.setName("step2");
job.addStep(step);
- JobExecution jobExecution = repository.createJobExecution(job, new JobParameters());
+ JobExecution jobExecution = repository.createJobExecution(job.getName(), new JobParameters());
job.execute(jobExecution);
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
@@ -116,7 +116,7 @@ public class SimpleStepFactoryBeanTests {
step.setName("step1");
job.addStep(step);
- JobExecution jobExecution = repository.createJobExecution(job, new JobParameters());
+ JobExecution jobExecution = repository.createJobExecution(job.getName(), new JobParameters());
job.execute(jobExecution);
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
@@ -150,7 +150,7 @@ public class SimpleStepFactoryBeanTests {
job.setSteps(Collections.singletonList(step));
- JobExecution jobExecution = repository.createJobExecution(job, new JobParameters());
+ JobExecution jobExecution = repository.createJobExecution(job.getName(), new JobParameters());
try {
job.execute(jobExecution);
fail("Expected RuntimeException");
@@ -179,7 +179,7 @@ public class SimpleStepFactoryBeanTests {
AbstractStep step = (AbstractStep) factory.getObject();
job.setSteps(Collections.singletonList((Step) step));
- JobExecution jobExecution = repository.createJobExecution(job, new JobParameters());
+ JobExecution jobExecution = repository.createJobExecution(job.getName(), new JobParameters());
try {
job.execute(jobExecution);
fail("Expected RuntimeException");
@@ -210,7 +210,7 @@ public class SimpleStepFactoryBeanTests {
AbstractStep step = (AbstractStep) factory.getObject();
job.setSteps(Collections.singletonList((Step) step));
- JobExecution jobExecution = repository.createJobExecution(job, new JobParameters());
+ JobExecution jobExecution = repository.createJobExecution(job.getName(), new JobParameters());
job.execute(jobExecution);
@@ -244,7 +244,7 @@ public class SimpleStepFactoryBeanTests {
job.setSteps(Collections.singletonList((Step) step));
- JobExecution jobExecution = repository.createJobExecution(job, new JobParameters());
+ JobExecution jobExecution = repository.createJobExecution(job.getName(), new JobParameters());
job.execute(jobExecution);
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/StatefulRetryStepFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/StatefulRetryStepFactoryBeanTests.java
index b8aebd2bf..089a423ff 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/StatefulRetryStepFactoryBeanTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/StatefulRetryStepFactoryBeanTests.java
@@ -116,7 +116,7 @@ public class StatefulRetryStepFactoryBeanTests {
job.setRestartable(true);
JobParameters jobParameters = new JobParametersBuilder().addString("statefulTest", "make_this_unique")
.toJobParameters();
- jobExecution = repository.createJobExecution(job, jobParameters);
+ jobExecution = repository.createJobExecution(job.getName(), jobParameters);
jobExecution.setEndTime(new Date());
}
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/ChunkOrientedStepIntegrationTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/ChunkOrientedStepIntegrationTests.java
index e2b9ff32c..b4047a9b6 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/ChunkOrientedStepIntegrationTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/ChunkOrientedStepIntegrationTests.java
@@ -124,7 +124,7 @@ public class ChunkOrientedStepIntegrationTests {
}
}, chunkOperations));
- JobExecution jobExecution = jobRepository.createJobExecution(job, new JobParameters());
+ JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), new JobParameters());
StepExecution stepExecution = new StepExecution(step.getName(), jobExecution);
stepExecution.setExecutionContext(new ExecutionContext() {
diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/StepExecutorInterruptionTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/StepExecutorInterruptionTests.java
index 5296c0d4f..a00227ad5 100644
--- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/StepExecutorInterruptionTests.java
+++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/tasklet/StepExecutorInterruptionTests.java
@@ -58,11 +58,11 @@ public class StepExecutorInterruptionTests extends TestCase {
JobRepository jobRepository = new SimpleJobRepository(new MapJobInstanceDao(), new MapJobExecutionDao(),
new MapStepExecutionDao(), new MapExecutionContextDao());
- JobSupport jobConfiguration = new JobSupport();
+ JobSupport job = new JobSupport();
step = new TaskletStep("interruptedStep");
- jobConfiguration.addStep(step);
- jobConfiguration.setBeanName("testJob");
- jobExecution = jobRepository.createJobExecution(jobConfiguration, new JobParameters());
+ job.addStep(step);
+ job.setBeanName("testJob");
+ jobExecution = jobRepository.createJobExecution(job.getName(), new JobParameters());
step.setJobRepository(jobRepository);
step.setTransactionManager(new ResourcelessTransactionManager());
itemWriter = new ItemWriter