Skip to content

Commit 8a6c7ac

Browse files
committed
Add utility method to get identifying job parameters
1 parent 889dee7 commit 8a6c7ac

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

spring-batch-core/src/main/java/org/springframework/batch/core/JobParameters.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,21 @@ public Map<String, JobParameter<?>> getParameters() {
329329
return Collections.unmodifiableMap(parameters);
330330
}
331331

332+
/**
333+
* Get a map of identifying parameters.
334+
* @since 5.1
335+
* @return an unmodifiable map containing identifying parameters.
336+
*/
337+
public Map<String, JobParameter<?>> getIdentifyingParameters() {
338+
Map<String, JobParameter<?>> identifyingParameters = new HashMap<>();
339+
for (Map.Entry<String, JobParameter<?>> entry : this.parameters.entrySet()) {
340+
if (entry.getValue().isIdentifying()) {
341+
identifyingParameters.put(entry.getKey(), entry.getValue());
342+
}
343+
}
344+
return Collections.unmodifiableMap(identifyingParameters);
345+
}
346+
332347
/**
333348
* @return {@code true} if the parameters object is empty or {@code false} otherwise.
334349
*/

spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/Jackson2ExecutionContextStringSerializer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@ private abstract class JobParametersMixIn {
176176
@JsonIgnore
177177
abstract boolean isEmpty();
178178

179+
@JsonIgnore
180+
abstract Map<String, JobParameter<?>> getIdentifyingParameters();
181+
179182
}
180183

181184
private class JobParameterSerializer extends StdSerializer<JobParameter> {

spring-batch-core/src/test/java/org/springframework/batch/core/JobParametersTests.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,25 @@ void testSerialization() {
187187
assertEquals(params, SerializationUtils.clone(params));
188188
}
189189

190+
@Test
191+
void testGetIdentifyingParameters() {
192+
// given
193+
Map<String, JobParameter<?>> parametersMap = new HashMap<>();
194+
JobParameter<String> jobParameter1 = new JobParameter<>("value1", String.class, true);
195+
JobParameter<String> jobParameter2 = new JobParameter<>("value2", String.class, false);
196+
parametersMap.put("key1", jobParameter1);
197+
parametersMap.put("key2", jobParameter2);
198+
JobParameters parameters = new JobParameters(parametersMap);
199+
200+
// when
201+
Map<String, JobParameter<?>> identifyingParameters = parameters.getIdentifyingParameters();
202+
203+
// then
204+
assertEquals(1, identifyingParameters.size());
205+
JobParameter<?> key1 = identifyingParameters.get("key1");
206+
assertEquals(jobParameter1, key1);
207+
}
208+
190209
@Test
191210
void testLongReturnsNullWhenKeyDoesntExit() {
192211
assertNull(new JobParameters().getLong("keythatdoesntexist"));

0 commit comments

Comments
 (0)