diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/launch/JsrJobOperator.java b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/launch/JsrJobOperator.java index 81b383054..7e4b5251d 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/launch/JsrJobOperator.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/jsr/launch/JsrJobOperator.java @@ -493,10 +493,6 @@ public class JsrJobOperator implements JobOperator { protected Properties getJobRestartProperties(Properties params, org.springframework.batch.core.JobExecution previousJobExecution) { Properties jobRestartProperties = new Properties(); - if (params != null && !params.isEmpty()) { - jobRestartProperties.putAll(params); - } - if (previousJobExecution != null) { JobParameters previousJobParameters = previousJobExecution.getJobParameters(); @@ -505,6 +501,10 @@ public class JsrJobOperator implements JobOperator { } } + if (params != null && !params.isEmpty()) { + jobRestartProperties.putAll(params); + } + return jobRestartProperties; } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/launch/JsrJobOperatorTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/launch/JsrJobOperatorTests.java index f02ac6430..dfdb05962 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/launch/JsrJobOperatorTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/jsr/launch/JsrJobOperatorTests.java @@ -411,4 +411,26 @@ public class JsrJobOperatorTests { assertTrue(properties.getProperty("prevKey1").equals("prevVal1")); assertTrue(properties.getProperty("userKey1").equals("userVal1")); } + + @Test + public void testNewJobParametersOverridePreviousRestartParameters() { + JsrJobOperator jobOperator = (JsrJobOperator) jsrJobOperator; + + JobExecution jobExecution = new JobExecution(1L, + new JobParametersBuilder() + .addString("prevKey1", "prevVal1") + .addString("overrideTest", "jobExecution") + .toJobParameters()); + + Properties userProperties = new Properties(); + userProperties.put("userKey1", "userVal1"); + userProperties.put("overrideTest", "userProperties"); + + Properties properties = jobOperator.getJobRestartProperties(userProperties, jobExecution); + + assertTrue(properties.size() == 3); + assertTrue(properties.getProperty("prevKey1").equals("prevVal1")); + assertTrue(properties.getProperty("userKey1").equals("userVal1")); + assertTrue(properties.getProperty("overrideTest").equals("userProperties")); + } }