From 85807568575c24d8878ad605a344f2bc35bb2b13 Mon Sep 17 00:00:00 2001 From: Chris Schaefer Date: Thu, 5 Sep 2013 14:46:02 -0400 Subject: [PATCH] Update to allow restart parameters to override previous parameters in JsrJobOperator and add test case --- .../batch/core/jsr/launch/JsrJobOperator.java | 8 +++---- .../core/jsr/launch/JsrJobOperatorTests.java | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) 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")); + } }