Add explicit call to afterPropertiesSet to a Flow when using Java config
When using java config, the call to SimpleFlow#afterPropertiesSet is not called in all cases as noted in BATCH-2291. This commit updates the builder to explicitly make the call, and updates the SimpleFlow to be idempotent for calls to afterPropertiesSet.
This commit is contained in:
@@ -18,6 +18,7 @@ package org.springframework.batch.core.job.builder;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.job.flow.Flow;
|
||||
import org.springframework.batch.core.job.flow.JobExecutionDecider;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
|
||||
/**
|
||||
* @author Dave Syer
|
||||
@@ -59,6 +60,16 @@ public class JobFlowBuilder extends FlowBuilder<FlowJobBuilder> {
|
||||
@Override
|
||||
public FlowJobBuilder build() {
|
||||
Flow flow = flow();
|
||||
|
||||
if(flow instanceof InitializingBean) {
|
||||
try {
|
||||
((InitializingBean) flow).afterPropertiesSet();
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw new FlowBuilderException(e);
|
||||
}
|
||||
}
|
||||
|
||||
parent.flow(flow);
|
||||
return parent;
|
||||
}
|
||||
|
||||
@@ -15,18 +15,6 @@
|
||||
*/
|
||||
package org.springframework.batch.core.job.flow.support;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.StepExecution;
|
||||
import org.springframework.batch.core.job.flow.Flow;
|
||||
import org.springframework.batch.core.job.flow.FlowExecution;
|
||||
import org.springframework.batch.core.job.flow.FlowExecutionException;
|
||||
import org.springframework.batch.core.job.flow.FlowExecutionStatus;
|
||||
import org.springframework.batch.core.job.flow.FlowExecutor;
|
||||
import org.springframework.batch.core.job.flow.State;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
@@ -38,6 +26,19 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.StepExecution;
|
||||
import org.springframework.batch.core.job.flow.Flow;
|
||||
import org.springframework.batch.core.job.flow.FlowExecution;
|
||||
import org.springframework.batch.core.job.flow.FlowExecutionException;
|
||||
import org.springframework.batch.core.job.flow.FlowExecutionStatus;
|
||||
import org.springframework.batch.core.job.flow.FlowExecutor;
|
||||
import org.springframework.batch.core.job.flow.State;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
|
||||
/**
|
||||
* A {@link Flow} that branches conditionally depending on the exit status of
|
||||
* the last {@link State}. The input parameters are the state transitions (in no
|
||||
@@ -125,7 +126,9 @@ public class SimpleFlow implements Flow, InitializingBean {
|
||||
*/
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
initializeTransitions();
|
||||
if (startState == null) {
|
||||
initializeTransitions();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user