Skip to content

Commit

Permalink
Move enhance method to AbstractJob
Browse files Browse the repository at this point in the history
  • Loading branch information
acktsap committed Nov 12, 2022
1 parent 4dda48d commit 3d19adf
Show file tree
Hide file tree
Showing 5 changed files with 183 additions and 155 deletions.
Expand Up @@ -71,6 +71,7 @@
* @author Lucas Ward
* @author Dave Syer
* @author Mahmoud Ben Hassine
* @author Taeik Lim
*/
public abstract class AbstractJob implements Job, StepLocator, BeanNameAware, InitializingBean {

Expand Down Expand Up @@ -382,6 +383,37 @@ public final void execute(JobExecution execution) {

}

public void enhance(CommonJobProperties properties) {
setJobRepository(properties.getJobRepository());

JobParametersIncrementer jobParametersIncrementer = properties.getJobParametersIncrementer();
if (jobParametersIncrementer != null) {
setJobParametersIncrementer(jobParametersIncrementer);
}
JobParametersValidator jobParametersValidator = properties.getJobParametersValidator();
if (jobParametersValidator != null) {
setJobParametersValidator(jobParametersValidator);
}
ObservationRegistry observationRegistry = properties.getObservationRegistry();
if (observationRegistry != null) {
setObservationRegistry(observationRegistry);
}
MeterRegistry meterRegistry = properties.getMeterRegistry();
if (meterRegistry != null) {
setMeterRegistry(meterRegistry);
}

Boolean restartable = properties.getRestartable();
if (restartable != null) {
setRestartable(restartable);
}

List<JobExecutionListener> listeners = properties.getJobExecutionListeners();
if (!listeners.isEmpty()) {
setJobExecutionListeners(listeners.toArray(new JobExecutionListener[0]));
}
}

private void stopObservation(JobExecution execution, Observation observation) {
List<Throwable> throwables = execution.getFailureExceptions();
if (!throwables.isEmpty()) {
Expand Down
@@ -0,0 +1,134 @@
/*
* Copyright 2006-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.springframework.batch.core.job;

import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.observation.ObservationRegistry;

import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecutionListener;
import org.springframework.batch.core.JobParametersIncrementer;
import org.springframework.batch.core.JobParametersValidator;
import org.springframework.batch.core.repository.JobRepository;

/**
* A common properties for {@link Job}.
*
* @author Taeik Lim
*/
public class CommonJobProperties {

private String name;

private boolean restartable = true;

private JobRepository jobRepository;

private ObservationRegistry observationRegistry;

private MeterRegistry meterRegistry;

private JobParametersIncrementer jobParametersIncrementer;

private JobParametersValidator jobParametersValidator;

private Set<JobExecutionListener> jobExecutionListeners = new LinkedHashSet<>();

public CommonJobProperties() {
}

public CommonJobProperties(CommonJobProperties properties) {
this.name = properties.name;
this.restartable = properties.restartable;
this.jobRepository = properties.jobRepository;
this.observationRegistry = properties.observationRegistry;
this.meterRegistry = properties.meterRegistry;
this.jobParametersIncrementer = properties.jobParametersIncrementer;
this.jobParametersValidator = properties.jobParametersValidator;
this.jobExecutionListeners = new LinkedHashSet<>(properties.jobExecutionListeners);
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public boolean getRestartable() {
return restartable;
}

public void setRestartable(boolean restartable) {
this.restartable = restartable;
}

public JobRepository getJobRepository() {
return jobRepository;
}

public void setJobRepository(JobRepository jobRepository) {
this.jobRepository = jobRepository;
}

public ObservationRegistry getObservationRegistry() {
return observationRegistry;
}

public void setObservationRegistry(ObservationRegistry observationRegistry) {
this.observationRegistry = observationRegistry;
}

public MeterRegistry getMeterRegistry() {
return meterRegistry;
}

public void setMeterRegistry(MeterRegistry meterRegistry) {
this.meterRegistry = meterRegistry;
}

public JobParametersIncrementer getJobParametersIncrementer() {
return jobParametersIncrementer;
}

public void setJobParametersIncrementer(JobParametersIncrementer jobParametersIncrementer) {
this.jobParametersIncrementer = jobParametersIncrementer;
}

public JobParametersValidator getJobParametersValidator() {
return jobParametersValidator;
}

public void setJobParametersValidator(JobParametersValidator jobParametersValidator) {
this.jobParametersValidator = jobParametersValidator;
}

public List<JobExecutionListener> getJobExecutionListeners() {
return new ArrayList<>(jobExecutionListeners);
}

public void addJobExecutionListener(JobExecutionListener jobExecutionListener) {
this.jobExecutionListeners.add(jobExecutionListener);
}

}
Expand Up @@ -26,6 +26,7 @@
* nested flow composed of steps and conditional transitions between steps.
*
* @author Dave Syer
* @author Taeik Lim
* @since 2.2
*/
public class FlowJobBuilder extends JobBuilderHelper<FlowJobBuilder> {
Expand Down Expand Up @@ -79,7 +80,7 @@ public Job build() {
FlowJob job = new FlowJob();
job.setName(getName());
job.setFlow(flow);
super.enhance(job);
job.enhance(properties);
try {
job.afterPropertiesSet();
}
Expand Down

0 comments on commit 3d19adf

Please sign in to comment.