Skip to content

Commit 7a51296

Browse files
acktsapfmbenhassine
authored andcommitted
Add setter for ObservationConvention in Job/Step builders
Signed-off-by: Taeik Lim <[email protected]> Resolves #4401
1 parent 6fa4e45 commit 7a51296

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

spring-batch-core/src/main/java/org/springframework/batch/core/job/builder/JobBuilderHelper.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2006-2022 the original author or authors.
2+
* Copyright 2006-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -34,6 +34,8 @@
3434
import org.springframework.batch.core.annotation.BeforeJob;
3535
import org.springframework.batch.core.job.AbstractJob;
3636
import org.springframework.batch.core.listener.JobListenerFactoryBean;
37+
import org.springframework.batch.core.observability.BatchJobObservationConvention;
38+
import org.springframework.batch.core.observability.DefaultBatchJobObservationConvention;
3739
import org.springframework.batch.core.repository.JobRepository;
3840
import org.springframework.batch.support.ReflectionUtils;
3941

@@ -102,6 +104,18 @@ public B repository(JobRepository jobRepository) {
102104
return result;
103105
}
104106

107+
/**
108+
* Sets the job observation convention.
109+
* @param observationConvention the job observation convention (optional)
110+
* @return this to enable fluent chaining
111+
*/
112+
public B observationConvention(BatchJobObservationConvention observationConvention) {
113+
properties.observationConvention = observationConvention;
114+
@SuppressWarnings("unchecked")
115+
B result = (B) this;
116+
return result;
117+
}
118+
105119
/**
106120
* Sets the observation registry for the job.
107121
* @param observationRegistry the observation registry (optional)
@@ -193,6 +207,10 @@ protected void enhance(AbstractJob job) {
193207
if (jobParametersValidator != null) {
194208
job.setJobParametersValidator(jobParametersValidator);
195209
}
210+
BatchJobObservationConvention observationConvention = properties.getObservationConvention();
211+
if (observationConvention != null) {
212+
job.setObservationConvention(observationConvention);
213+
}
196214
ObservationRegistry observationRegistry = properties.getObservationRegistry();
197215
if (observationRegistry != null) {
198216
job.setObservationRegistry(observationRegistry);
@@ -221,6 +239,8 @@ public static class CommonJobProperties {
221239

222240
private JobRepository jobRepository;
223241

242+
private BatchJobObservationConvention observationConvention = new DefaultBatchJobObservationConvention();
243+
224244
private ObservationRegistry observationRegistry;
225245

226246
private MeterRegistry meterRegistry;
@@ -236,6 +256,7 @@ public CommonJobProperties(CommonJobProperties properties) {
236256
this.name = properties.name;
237257
this.restartable = properties.restartable;
238258
this.jobRepository = properties.jobRepository;
259+
this.observationConvention = properties.observationConvention;
239260
this.observationRegistry = properties.observationRegistry;
240261
this.meterRegistry = properties.meterRegistry;
241262
this.jobExecutionListeners = new LinkedHashSet<>(properties.jobExecutionListeners);
@@ -267,6 +288,14 @@ public void setJobRepository(JobRepository jobRepository) {
267288
this.jobRepository = jobRepository;
268289
}
269290

291+
public BatchJobObservationConvention getObservationConvention() {
292+
return observationConvention;
293+
}
294+
295+
public void setObservationConvention(BatchJobObservationConvention observationConvention) {
296+
this.observationConvention = observationConvention;
297+
}
298+
270299
public ObservationRegistry getObservationRegistry() {
271300
return observationRegistry;
272301
}

spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/StepBuilderHelper.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2006-2022 the original author or authors.
2+
* Copyright 2006-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -31,6 +31,8 @@
3131
import org.springframework.batch.core.annotation.AfterStep;
3232
import org.springframework.batch.core.annotation.BeforeStep;
3333
import org.springframework.batch.core.listener.StepListenerFactoryBean;
34+
import org.springframework.batch.core.observability.BatchStepObservationConvention;
35+
import org.springframework.batch.core.observability.DefaultBatchStepObservationConvention;
3436
import org.springframework.batch.core.repository.JobRepository;
3537
import org.springframework.batch.core.step.AbstractStep;
3638
import org.springframework.batch.support.ReflectionUtils;
@@ -70,6 +72,11 @@ public B repository(JobRepository jobRepository) {
7072
return self();
7173
}
7274

75+
public B observationConvention(BatchStepObservationConvention observationConvention) {
76+
properties.observationConvention = observationConvention;
77+
return self();
78+
}
79+
7380
public B observationRegistry(ObservationRegistry observationRegistry) {
7481
properties.observationRegistry = observationRegistry;
7582
return self();
@@ -131,6 +138,11 @@ protected boolean isAllowStartIfComplete() {
131138
protected void enhance(AbstractStep step) {
132139
step.setJobRepository(properties.getJobRepository());
133140

141+
BatchStepObservationConvention observationConvention = properties.getObservationConvention();
142+
if (observationConvention != null) {
143+
step.setObservationConvention(observationConvention);
144+
}
145+
134146
ObservationRegistry observationRegistry = properties.getObservationRegistry();
135147
if (observationRegistry != null) {
136148
step.setObservationRegistry(observationRegistry);
@@ -164,6 +176,8 @@ public static class CommonStepProperties {
164176

165177
private JobRepository jobRepository;
166178

179+
private BatchStepObservationConvention observationConvention = new DefaultBatchStepObservationConvention();
180+
167181
private ObservationRegistry observationRegistry = ObservationRegistry.NOOP;
168182

169183
private MeterRegistry meterRegistry = Metrics.globalRegistry;
@@ -176,6 +190,7 @@ public CommonStepProperties(CommonStepProperties properties) {
176190
this.startLimit = properties.startLimit;
177191
this.allowStartIfComplete = properties.allowStartIfComplete;
178192
this.jobRepository = properties.jobRepository;
193+
this.observationConvention = properties.observationConvention;
179194
this.observationRegistry = properties.observationRegistry;
180195
this.meterRegistry = properties.meterRegistry;
181196
this.stepExecutionListeners = new ArrayList<>(properties.stepExecutionListeners);
@@ -189,6 +204,14 @@ public void setJobRepository(JobRepository jobRepository) {
189204
this.jobRepository = jobRepository;
190205
}
191206

207+
public BatchStepObservationConvention getObservationConvention() {
208+
return observationConvention;
209+
}
210+
211+
public void setObservationConvention(BatchStepObservationConvention observationConvention) {
212+
this.observationConvention = observationConvention;
213+
}
214+
192215
public ObservationRegistry getObservationRegistry() {
193216
return observationRegistry;
194217
}

0 commit comments

Comments
 (0)