Refactored to add a way to copy JobParameters into another via builder
In a previous commit, the JobParametersBuilder was updated to include some code from Spring Boot that handled the incrementing of JobParameters for a previous job. That commit brought over a private `merge` method that is actually useful for general consumption. This commit adds a `addJobParameters` method to the builder providing the same functionality the `merge` method did in a public method.
This commit is contained in:
@@ -222,6 +222,19 @@ public class JobParametersBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy job parameters into the current state.
|
||||
* @param jobParameters parameters to copy in
|
||||
* @return a reference to this object.
|
||||
*/
|
||||
public JobParametersBuilder addJobParameters(JobParameters jobParameters) {
|
||||
Assert.notNull(jobParameters, "jobParameters must not be null");
|
||||
|
||||
this.parameterMap.putAll(jobParameters.getParameters());
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the {@link JobParameters} based on the state of the {@link Job}. This
|
||||
* should be called after all parameters have been entered into the builder.
|
||||
@@ -267,7 +280,10 @@ public class JobParametersBuilder {
|
||||
nextParameters = incrementer.getNext(previousExecution.getJobParameters());
|
||||
}
|
||||
}
|
||||
this.parameterMap = merge(nextParameters, this.parameterMap);
|
||||
|
||||
this.parameterMap = addJobParameters(nextParameters)
|
||||
.toJobParameters()
|
||||
.getParameters();
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -280,14 +296,6 @@ public class JobParametersBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private LinkedHashMap<String, JobParameter> merge(JobParameters parameters,
|
||||
Map<String, JobParameter> additionals) {
|
||||
Map<String, JobParameter> merged = new HashMap<>();
|
||||
merged.putAll(parameters.getParameters());
|
||||
merged.putAll(additionals);
|
||||
return new LinkedHashMap<>(merged);
|
||||
}
|
||||
|
||||
private boolean isStoppedOrFailed(JobExecution execution) {
|
||||
BatchStatus status = execution.getStatus();
|
||||
return (status == BatchStatus.STOPPED || status == BatchStatus.FAILED);
|
||||
|
||||
@@ -64,6 +64,28 @@ public class JobParametersBuilderTests {
|
||||
this.parametersBuilder = new JobParametersBuilder(this.jobExplorer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddingExistingJobParameters() {
|
||||
JobParameters params1 = new JobParametersBuilder()
|
||||
.addString("foo", "bar")
|
||||
.addString("bar", "baz")
|
||||
.toJobParameters();
|
||||
|
||||
JobParameters params2 = new JobParametersBuilder()
|
||||
.addString("foo", "baz")
|
||||
.toJobParameters();
|
||||
|
||||
JobParameters finalParams = new JobParametersBuilder()
|
||||
.addString("baz", "quix")
|
||||
.addJobParameters(params1)
|
||||
.addJobParameters(params2)
|
||||
.toJobParameters();
|
||||
|
||||
assertEquals(finalParams.getString("foo"), "baz");
|
||||
assertEquals(finalParams.getString("bar"), "baz");
|
||||
assertEquals(finalParams.getString("baz"), "quix");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNonIdentifyingParameters() {
|
||||
this.parametersBuilder.addDate("SCHEDULE_DATE", date, false);
|
||||
|
||||
Reference in New Issue
Block a user