Upgrade spring-javaformat maven plugin to version 0.0.39

This commit is contained in:
Mahmoud Ben Hassine
2023-06-05 11:11:48 +02:00
parent bb5598e569
commit c25cd55901
264 changed files with 2551 additions and 1397 deletions

View File

@@ -152,7 +152,7 @@
<maven-site-plugin.version>3.12.1</maven-site-plugin.version>
<maven-project-info-reports-plugin.version>3.4.3</maven-project-info-reports-plugin.version>
<maven-jar-plugin.version>3.3.0</maven-jar-plugin.version>
<spring-javaformat-maven-plugin.version>0.0.34</spring-javaformat-maven-plugin.version>
<spring-javaformat-maven-plugin.version>0.0.39</spring-javaformat-maven-plugin.version>
</properties>
<build>

View File

@@ -98,15 +98,15 @@ public class CoreRuntimeHints implements RuntimeHintsRegistrar {
// proxy hints
hints.proxies()
.registerJdkProxy(builder -> builder
.proxiedInterfaces(TypeReference.of("org.springframework.batch.core.repository.JobRepository"))
.proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class))
.registerJdkProxy(builder -> builder
.proxiedInterfaces(TypeReference.of("org.springframework.batch.core.explore.JobExplorer"))
.proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class))
.registerJdkProxy(builder -> builder
.proxiedInterfaces(TypeReference.of("org.springframework.batch.core.launch.JobOperator"))
.proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class));
.registerJdkProxy(builder -> builder
.proxiedInterfaces(TypeReference.of("org.springframework.batch.core.repository.JobRepository"))
.proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class))
.registerJdkProxy(builder -> builder
.proxiedInterfaces(TypeReference.of("org.springframework.batch.core.explore.JobExplorer"))
.proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class))
.registerJdkProxy(builder -> builder
.proxiedInterfaces(TypeReference.of("org.springframework.batch.core.launch.JobOperator"))
.proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class));
// reflection hints
hints.reflection().registerType(Types.class, MemberCategory.DECLARED_FIELDS);
@@ -122,8 +122,9 @@ public class CoreRuntimeHints implements RuntimeHintsRegistrar {
hints.reflection().registerType(Entity.class, MemberCategory.values());
hints.reflection().registerType(ExecutionContext.class, MemberCategory.values());
hints.reflection().registerType(Chunk.class, MemberCategory.values());
jdkTypes.stream().map(TypeReference::of)
.forEach(type -> hints.reflection().registerType(type, MemberCategory.values()));
jdkTypes.stream()
.map(TypeReference::of)
.forEach(type -> hints.reflection().registerType(type, MemberCategory.values()));
// serialization hints
SerializationHints serializationHints = hints.serialization();
@@ -135,7 +136,7 @@ public class CoreRuntimeHints implements RuntimeHintsRegistrar {
Period.class, HashMap.class, Hashtable.class, ArrayList.class, JobParameter.class, JobParameters.class,
ExitStatus.class, JobInstance.class, JobExecution.class, StepExecution.class, StepContribution.class,
Entity.class, ExecutionContext.class, Chunk.class, Properties.class, Exception.class, UUID.class)
.forEach(serializationHints::registerType);
.forEach(serializationHints::registerType);
jdkTypes.stream().map(TypeReference::of).forEach(serializationHints::registerType);
}

View File

@@ -46,7 +46,7 @@ class AutomaticJobRegistrarBeanPostProcessor implements BeanFactoryPostProcessor
AutomaticJobRegistrar automaticJobRegistrar = (AutomaticJobRegistrar) bean;
automaticJobRegistrar.setJobLoader(new DefaultJobLoader(this.beanFactory.getBean(JobRegistry.class)));
for (ApplicationContextFactory factory : this.beanFactory.getBeansOfType(ApplicationContextFactory.class)
.values()) {
.values()) {
automaticJobRegistrar.addApplicationContextFactory(factory);
}
return automaticJobRegistrar;

View File

@@ -54,8 +54,9 @@ class BatchRegistrar implements ImportBeanDefinitionRegistrar {
StopWatch watch = new StopWatch();
watch.start();
validateState(importingClassMetadata);
EnableBatchProcessing batchAnnotation = importingClassMetadata.getAnnotations().get(EnableBatchProcessing.class)
.synthesize();
EnableBatchProcessing batchAnnotation = importingClassMetadata.getAnnotations()
.get(EnableBatchProcessing.class)
.synthesize();
registerJobRepository(registry, batchAnnotation);
registerJobExplorer(registry, batchAnnotation);
registerJobLauncher(registry, batchAnnotation);
@@ -82,7 +83,7 @@ class BatchRegistrar implements ImportBeanDefinitionRegistrar {
return;
}
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder
.genericBeanDefinition(JobRepositoryFactoryBean.class);
.genericBeanDefinition(JobRepositoryFactoryBean.class);
// set mandatory properties
String dataSourceRef = batchAnnotation.dataSourceRef();
@@ -139,7 +140,7 @@ class BatchRegistrar implements ImportBeanDefinitionRegistrar {
return;
}
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder
.genericBeanDefinition(JobExplorerFactoryBean.class);
.genericBeanDefinition(JobExplorerFactoryBean.class);
// set mandatory properties
String dataSourceRef = batchAnnotation.dataSourceRef();
@@ -183,7 +184,7 @@ class BatchRegistrar implements ImportBeanDefinitionRegistrar {
return;
}
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder
.genericBeanDefinition(TaskExecutorJobLauncher.class);
.genericBeanDefinition(TaskExecutorJobLauncher.class);
// set mandatory properties
beanDefinitionBuilder.addPropertyReference("jobRepository", "jobRepository");
@@ -202,7 +203,7 @@ class BatchRegistrar implements ImportBeanDefinitionRegistrar {
return;
}
BeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(MapJobRegistry.class)
.getBeanDefinition();
.getBeanDefinition();
registry.registerBeanDefinition("jobRegistry", beanDefinition);
}
@@ -213,7 +214,7 @@ class BatchRegistrar implements ImportBeanDefinitionRegistrar {
return;
}
BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder
.genericBeanDefinition(JobOperatorFactoryBean.class);
.genericBeanDefinition(JobOperatorFactoryBean.class);
// set mandatory properties
String transactionManagerRef = batchAnnotation.transactionManagerRef();
beanDefinitionBuilder.addPropertyReference("transactionManager", transactionManagerRef);
@@ -236,11 +237,13 @@ class BatchRegistrar implements ImportBeanDefinitionRegistrar {
return;
}
BeanDefinition jobLoaderBeanDefinition = BeanDefinitionBuilder.genericBeanDefinition(DefaultJobLoader.class)
.addPropertyReference("jobRegistry", "jobRegistry").getBeanDefinition();
.addPropertyReference("jobRegistry", "jobRegistry")
.getBeanDefinition();
registry.registerBeanDefinition("jobLoader", jobLoaderBeanDefinition);
BeanDefinition jobRegistrarBeanDefinition = BeanDefinitionBuilder
.genericBeanDefinition(AutomaticJobRegistrar.class).addPropertyReference("jobLoader", "jobLoader")
.getBeanDefinition();
.genericBeanDefinition(AutomaticJobRegistrar.class)
.addPropertyReference("jobLoader", "jobLoader")
.getBeanDefinition();
registry.registerBeanDefinition("jobRegistrar", jobRegistrarBeanDefinition);
}

View File

@@ -47,7 +47,6 @@ import java.lang.annotation.RetentionPolicy;
*
* @author Michael Minella
* @author Taeik Lim
*
* @since 3.0.1
*
*/

View File

@@ -47,7 +47,6 @@ import java.lang.annotation.RetentionPolicy;
*
* @author Dave Syer
* @author Taeik Lim
*
* @since 2.2
*
*/

View File

@@ -203,7 +203,7 @@ public abstract class AbstractFlowParser extends AbstractSingleBeanDefinitionPar
String flowName = (String) builder.getRawBeanDefinition().getAttribute("flowName");
if (!stepExists && !StringUtils.hasText(element.getAttribute("parent"))) {
parserContext.getReaderContext()
.error("The flow [" + flowName + "] must contain at least one step, flow or split", element);
.error("The flow [" + flowName + "] must contain at least one step, flow or split", element);
}
// Ensure that all elements are reachable
@@ -326,8 +326,9 @@ public abstract class AbstractFlowParser extends AbstractSingleBeanDefinitionPar
}
}
else if (hasNextAttribute) {
parserContext.getReaderContext().error("The <" + element.getNodeName() + "/> may not contain a '"
+ NEXT_ATTR + "' attribute and a transition element", element);
parserContext.getReaderContext()
.error("The <" + element.getNodeName() + "/> may not contain a '" + NEXT_ATTR
+ "' attribute and a transition element", element);
}
return list;
@@ -345,8 +346,8 @@ public abstract class AbstractFlowParser extends AbstractSingleBeanDefinitionPar
ParserContext parserContext) {
String onAttribute = transitionElement.getAttribute(ON_ATTR);
if (patterns.contains(onAttribute)) {
parserContext.getReaderContext().error("Duplicate transition pattern found for '" + onAttribute + "'",
element);
parserContext.getReaderContext()
.error("Duplicate transition pattern found for '" + onAttribute + "'", element);
}
patterns.add(onAttribute);
}
@@ -398,7 +399,7 @@ public abstract class AbstractFlowParser extends AbstractSingleBeanDefinitionPar
if (status.isEnd()) {
BeanDefinitionBuilder endBuilder = BeanDefinitionBuilder
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.EndState");
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.EndState");
boolean exitCodeExists = StringUtils.hasText(exitCode);
@@ -477,7 +478,7 @@ public abstract class AbstractFlowParser extends AbstractSingleBeanDefinitionPar
BeanDefinition stateDefinition, String on, String next) {
BeanDefinitionBuilder nextBuilder = BeanDefinitionBuilder
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.StateTransition");
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.StateTransition");
nextBuilder.addConstructorArgValue(stateDefinition);
if (StringUtils.hasText(on)) {

View File

@@ -82,7 +82,7 @@ public abstract class AbstractListenerParser {
else if (beanElements.size() == 1) {
Element beanElement = beanElements.get(0);
BeanDefinitionHolder beanDefinitionHolder = parserContext.getDelegate()
.parseBeanDefinitionElement(beanElement, enclosing);
.parseBeanDefinitionElement(beanElement, enclosing);
parserContext.getDelegate().decorateBeanDefinitionIfRequired(beanElement, beanDefinitionHolder);
return beanDefinitionHolder;
}
@@ -120,9 +120,9 @@ public abstract class AbstractListenerParser {
String id = element.getAttribute(ID_ATTR);
parserContext.getReaderContext()
.error("The <" + element.getTagName() + (StringUtils.hasText(id) ? " id=\"" + id + "\"" : "")
+ "/> element must have exactly one of: '" + REF_ATTR + "' attribute, <" + BEAN_ELE
+ "/> attribute, or <" + REF_ELE + "/> element. Found: " + found + ".", element);
.error("The <" + element.getTagName() + (StringUtils.hasText(id) ? " id=\"" + id + "\"" : "")
+ "/> element must have exactly one of: '" + REF_ATTR + "' attribute, <" + BEAN_ELE
+ "/> attribute, or <" + REF_ELE + "/> element. Found: " + found + ".", element);
}
}

View File

@@ -143,7 +143,7 @@ public abstract class AbstractStepParser {
if ((ns == null && name.equals(BeanDefinitionParserDelegate.BEAN_ELEMENT))
|| ns.equals(BeanDefinitionParserDelegate.BEANS_NAMESPACE_URI)) {
BeanDefinitionHolder holder = parserContext.getDelegate()
.parseBeanDefinitionElement(nestedElement);
.parseBeanDefinitionElement(nestedElement);
value = parserContext.getDelegate().decorateBeanDefinitionIfRequired(nestedElement, holder);
}
// Spring Batch transitions

View File

@@ -94,7 +94,7 @@ public class ChunkElementParser {
if (commitInterval.startsWith("#")) {
// It's a late binding expression, so we need step scope...
BeanDefinitionBuilder completionPolicy = BeanDefinitionBuilder
.genericBeanDefinition(SimpleCompletionPolicy.class);
.genericBeanDefinition(SimpleCompletionPolicy.class);
completionPolicy.addConstructorArgValue(commitInterval);
completionPolicy.setScope("step");
propertyValues.addPropertyValue("chunkCompletionPolicy", completionPolicy.getBeanDefinition());
@@ -114,16 +114,13 @@ public class ChunkElementParser {
&& propertyValues.contains("commitInterval") == propertyValues.contains("chunkCompletionPolicy")) {
if (propertyValues.contains("commitInterval")) {
parserContext.getReaderContext()
.error("The <" + element.getNodeName() + "/> element must contain either '"
+ COMMIT_INTERVAL_ATTR + "' " + "or '" + CHUNK_COMPLETION_POLICY_ATTR
+ "', but not both.", element);
.error("The <" + element.getNodeName() + "/> element must contain either '" + COMMIT_INTERVAL_ATTR
+ "' " + "or '" + CHUNK_COMPLETION_POLICY_ATTR + "', but not both.", element);
}
else {
parserContext
.getReaderContext().error(
"The <" + element.getNodeName() + "/> element must contain either '"
+ COMMIT_INTERVAL_ATTR + "' " + "or '" + CHUNK_COMPLETION_POLICY_ATTR + "'.",
element);
parserContext.getReaderContext()
.error("The <" + element.getNodeName() + "/> element must contain either '" + COMMIT_INTERVAL_ATTR
+ "' " + "or '" + CHUNK_COMPLETION_POLICY_ATTR + "'.", element);
}
}
@@ -214,23 +211,24 @@ public class ChunkElementParser {
if (children.size() == 1) {
if (StringUtils.hasText(refName)) {
parserContext.getReaderContext()
.error("The <" + element.getNodeName() + "/> element may not have both a '" + handlerName
+ "' attribute and a <" + handlerName + "/> element.", element);
.error("The <" + element.getNodeName() + "/> element may not have both a '" + handlerName
+ "' attribute and a <" + handlerName + "/> element.", element);
}
handleItemHandlerElement(enclosing, propertyName, adapterClassName, propertyValues, children.get(0),
parserContext);
}
else if (children.size() > 1) {
parserContext.getReaderContext().error("The <" + handlerName
+ "/> element may not appear more than once in a single <" + element.getNodeName() + "/>.",
element);
parserContext.getReaderContext()
.error("The <" + handlerName + "/> element may not appear more than once in a single <"
+ element.getNodeName() + "/>.", element);
}
else if (StringUtils.hasText(refName)) {
propertyValues.addPropertyValue(propertyName, new RuntimeBeanReference(refName));
}
else if (required && !underspecified) {
parserContext.getReaderContext().error("The <" + element.getNodeName() + "/> element has neither a '"
+ handlerName + "' attribute nor a <" + handlerName + "/> element.", element);
parserContext.getReaderContext()
.error("The <" + element.getNodeName() + "/> element has neither a '" + handlerName
+ "' attribute nor a <" + handlerName + "/> element.", element);
}
}
@@ -245,13 +243,13 @@ public class ChunkElementParser {
List<Element> refElements = DomUtils.getChildElementsByTagName(element, REF_ELE);
if (beanElements.size() + refElements.size() != 1) {
parserContext.getReaderContext()
.error("The <" + element.getNodeName() + "/> must have exactly one of either a <" + BEAN_ELE
+ "/> element or a <" + REF_ELE + "/> element.", element);
.error("The <" + element.getNodeName() + "/> must have exactly one of either a <" + BEAN_ELE
+ "/> element or a <" + REF_ELE + "/> element.", element);
}
else if (beanElements.size() == 1) {
Element beanElement = beanElements.get(0);
BeanDefinitionHolder beanDefinitionHolder = parserContext.getDelegate()
.parseBeanDefinitionElement(beanElement, enclosing);
.parseBeanDefinitionElement(beanElement, enclosing);
parserContext.getDelegate().decorateBeanDefinitionIfRequired(beanElement, beanDefinitionHolder);
propertyValues.addPropertyValue(propertyName, beanDefinitionHolder);
@@ -330,8 +328,9 @@ public class ChunkElementParser {
streamBeans.add(new RuntimeBeanReference(streamRef));
}
else {
parserContext.getReaderContext().error(
REF_ATTR + " not specified for <" + streamElement.getTagName() + "> element", element);
parserContext.getReaderContext()
.error(REF_ATTR + " not specified for <" + streamElement.getTagName() + "> element",
element);
}
}
}

View File

@@ -108,7 +108,8 @@ public class CoreNamespaceUtils {
BeanDefinitionRegistry registry = parserContext.getRegistry();
if (!stateTransitionComparatorAlreadyDefined(registry)) {
AbstractBeanDefinition defaultStateTransitionComparator = BeanDefinitionBuilder
.genericBeanDefinition(DefaultStateTransitionComparator.class).getBeanDefinition();
.genericBeanDefinition(DefaultStateTransitionComparator.class)
.getBeanDefinition();
registry.registerBeanDefinition(DefaultStateTransitionComparator.STATE_TRANSITION_COMPARATOR,
defaultStateTransitionComparator);
}
@@ -126,7 +127,8 @@ public class CoreNamespaceUtils {
BeanDefinitionRegistry registry = parserContext.getRegistry();
if (!rangeArrayEditorAlreadyDefined(registry)) {
AbstractBeanDefinition customEditorConfigurer = BeanDefinitionBuilder
.genericBeanDefinition(CUSTOM_EDITOR_CONFIGURER_CLASS_NAME).getBeanDefinition();
.genericBeanDefinition(CUSTOM_EDITOR_CONFIGURER_CLASS_NAME)
.getBeanDefinition();
customEditorConfigurer.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
ManagedMap<String, String> editors = new ManagedMap<>();
editors.put(RANGE_ARRAY_CLASS_NAME, RANGE_ARRAY_EDITOR_CLASS_NAME);
@@ -167,7 +169,8 @@ public class CoreNamespaceUtils {
BeanDefinitionRegistry registry = parserContext.getRegistry();
if (!coreNamespaceBeanPostProcessorAlreadyDefined(registry)) {
AbstractBeanDefinition postProcessorBeanDef = BeanDefinitionBuilder
.genericBeanDefinition(CORE_NAMESPACE_POST_PROCESSOR_CLASS_NAME).getBeanDefinition();
.genericBeanDefinition(CORE_NAMESPACE_POST_PROCESSOR_CLASS_NAME)
.getBeanDefinition();
postProcessorBeanDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
registry.registerBeanDefinition(CORE_NAMESPACE_POST_PROCESSOR_CLASS_NAME, postProcessorBeanDef);
}

View File

@@ -50,7 +50,7 @@ public class DecisionParser {
String idAttribute = element.getAttribute("id");
BeanDefinitionBuilder stateBuilder = BeanDefinitionBuilder
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.DecisionState");
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.DecisionState");
stateBuilder.addConstructorArgValue(new RuntimeBeanReference(refAttribute));
stateBuilder.addConstructorArgValue(idAttribute);
return InlineFlowParser.getNextElements(parserContext, stateBuilder.getBeanDefinition(), element);

View File

@@ -38,9 +38,9 @@ public class ExceptionElementParser {
return map;
}
else if (children.size() > 1) {
parserContext.getReaderContext().error("The <" + exceptionListName
+ "/> element may not appear more than once in a single <" + element.getNodeName() + "/>.",
element);
parserContext.getReaderContext()
.error("The <" + exceptionListName + "/> element may not appear more than once in a single <"
+ element.getNodeName() + "/>.", element);
}
return null;
}

View File

@@ -52,7 +52,7 @@ public class FlowElementParser {
String idAttribute = element.getAttribute(ID_ATTR);
BeanDefinitionBuilder stateBuilder = BeanDefinitionBuilder
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.FlowState");
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.FlowState");
AbstractBeanDefinition flowDefinition = new GenericBeanDefinition();
flowDefinition.setParentName(refAttribute);

View File

@@ -67,11 +67,10 @@ public class JobParser extends AbstractSingleBeanDefinitionParser {
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
if (!CoreNamespaceUtils.namespaceMatchesVersion(element)) {
parserContext.getReaderContext().error(
"You are using a version of the spring-batch XSD that is not compatible with Spring Batch 3.0."
+ " Please upgrade your schema declarations (or use the spring-batch.xsd alias if you are "
+ "feeling lucky).",
element);
parserContext.getReaderContext()
.error("You are using a version of the spring-batch XSD that is not compatible with Spring Batch 3.0."
+ " Please upgrade your schema declarations (or use the spring-batch.xsd alias if you are "
+ "feeling lucky).", element);
return;
}
@@ -111,9 +110,9 @@ public class JobParser extends AbstractSingleBeanDefinitionParser {
if (isAbstract) {
for (String tagName : Arrays.asList("step", "decision", "split")) {
if (!DomUtils.getChildElementsByTagName(element, tagName).isEmpty()) {
parserContext.getReaderContext().error("The <" + tagName
+ "/> element may not appear on a <job/> with abstract=\"true\" [" + jobName + "]",
element);
parserContext.getReaderContext()
.error("The <" + tagName + "/> element may not appear on a <job/> with abstract=\"true\" ["
+ jobName + "]", element);
}
}
}
@@ -146,7 +145,7 @@ public class JobParser extends AbstractSingleBeanDefinitionParser {
}
else if (listenersElements.size() > 1) {
parserContext.getReaderContext()
.error("The '<listeners/>' element may not appear more than once in a single <job/>.", element);
.error("The '<listeners/>' element may not appear more than once in a single <job/>.", element);
}
}
@@ -167,7 +166,7 @@ public class JobParser extends AbstractSingleBeanDefinitionParser {
}
else if (beanElement != null) {
BeanDefinitionHolder beanDefinitionHolder = parserContext.getDelegate()
.parseBeanDefinitionElement(beanElement);
.parseBeanDefinitionElement(beanElement);
parserContext.getDelegate().decorateBeanDefinitionIfRequired(beanElement, beanDefinitionHolder);
return beanDefinitionHolder;
}
@@ -176,7 +175,7 @@ public class JobParser extends AbstractSingleBeanDefinitionParser {
}
parserContext.getReaderContext()
.error("One of ref attribute or a nested bean definition or ref element must be specified", element);
.error("One of ref attribute or a nested bean definition or ref element must be specified", element);
return null;
}

View File

@@ -70,7 +70,7 @@ public class SplitParser {
String idAttribute = element.getAttribute("id");
BeanDefinitionBuilder stateBuilder = BeanDefinitionBuilder
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.SplitState");
.genericBeanDefinition("org.springframework.batch.core.job.flow.support.state.SplitState");
String taskExecutorBeanId = element.getAttribute("task-executor");
if (StringUtils.hasText(taskExecutorBeanId)) {
@@ -91,8 +91,8 @@ public class SplitParser {
String ref = nextElement.getAttribute(PARENT_ATTR);
if (StringUtils.hasText(ref)) {
if (nextElement.getElementsByTagName("*").getLength() > 0) {
parserContext.getReaderContext().error(
"A <flow/> in a <split/> must have ref= or nested <flow/>, but not both.", nextElement);
parserContext.getReaderContext()
.error("A <flow/> in a <split/> must have ref= or nested <flow/>, but not both.", nextElement);
}
AbstractBeanDefinition flowDefinition = new GenericBeanDefinition();
flowDefinition.setParentName(ref);

View File

@@ -290,7 +290,8 @@ public class StepParserStepFactoryBean<I, O> implements FactoryBean<Step>, BeanN
PartitionStepBuilder builder;
if (partitioner != null) {
builder = new StepBuilder(name, jobRepository)
.partitioner(step != null ? step.getName() : name, partitioner).step(step);
.partitioner(step != null ? step.getName() : name, partitioner)
.step(step);
}
else {
builder = new StepBuilder(name, jobRepository).partitioner(step);

View File

@@ -90,13 +90,13 @@ public class TaskletParser {
else if (beanElements.size() == 1) {
Element beanElement = beanElements.get(0);
BeanDefinitionHolder beanDefinitionHolder = parserContext.getDelegate()
.parseBeanDefinitionElement(beanElement, bd);
.parseBeanDefinitionElement(beanElement, bd);
parserContext.getDelegate().decorateBeanDefinitionIfRequired(beanElement, beanDefinitionHolder);
bme = beanDefinitionHolder;
}
else if (refElements.size() == 1) {
bme = (BeanMetadataElement) parserContext.getDelegate().parsePropertySubElement(refElements.get(0),
null);
bme = (BeanMetadataElement) parserContext.getDelegate()
.parsePropertySubElement(refElements.get(0), null);
}
if (StringUtils.hasText(taskletMethod)) {
@@ -168,9 +168,9 @@ public class TaskletParser {
if (error != null) {
parserContext.getReaderContext()
.error("The <" + taskletElement.getTagName() + "/> element " + error + " one of: '"
+ TASKLET_REF_ATTR + "' attribute, <" + CHUNK_ELE + "/> element, <" + BEAN_ELE
+ "/> attribute, or <" + REF_ELE + "/> element. Found: " + found + ".", taskletElement);
.error("The <" + taskletElement.getTagName() + "/> element " + error + " one of: '" + TASKLET_REF_ATTR
+ "' attribute, <" + CHUNK_ELE + "/> element, <" + BEAN_ELE + "/> attribute, or <" + REF_ELE
+ "/> element. Found: " + found + ".", taskletElement);
}
}
@@ -216,9 +216,9 @@ public class TaskletParser {
propertyValues.addPropertyValue(propertyName, list);
}
else if (children.size() > 1) {
parserContext.getReaderContext().error("The <" + exceptionListName
+ "/> element may not appear more than once in a single <" + element.getNodeName() + "/>.",
element);
parserContext.getReaderContext()
.error("The <" + exceptionListName + "/> element may not appear more than once in a single <"
+ element.getNodeName() + "/>.", element);
}
}

View File

@@ -125,7 +125,7 @@ public abstract class AbstractJobExplorerFactoryBean implements FactoryBean<JobE
transactionAttributes.setProperty("find*", transactionProperties);
this.transactionAttributeSource = new NameMatchTransactionAttributeSource();
((NameMatchTransactionAttributeSource) this.transactionAttributeSource)
.setProperties(transactionAttributes);
.setProperties(transactionAttributes);
}
}

View File

@@ -297,10 +297,11 @@ public abstract class AbstractJob implements Job, StepLocator, BeanNameAware, In
execution.getJobInstance().getJobName()));
LongTaskTimer.Sample longTaskTimerSample = longTaskTimer.start();
Observation observation = BatchMetrics
.createObservation(BatchJobObservation.BATCH_JOB_OBSERVATION.getName(), new BatchJobContext(execution),
this.observationRegistry)
.contextualName(execution.getJobInstance().getJobName())
.observationConvention(this.observationConvention).start();
.createObservation(BatchJobObservation.BATCH_JOB_OBSERVATION.getName(), new BatchJobContext(execution),
this.observationRegistry)
.contextualName(execution.getJobInstance().getJobName())
.observationConvention(this.observationConvention)
.start();
try (Observation.Scope scope = observation.openScope()) {
jobParametersValidator.validate(execution.getJobParameters());
@@ -358,7 +359,7 @@ public abstract class AbstractJob implements Job, StepLocator, BeanNameAware, In
&& execution.getStepExecutions().isEmpty()) {
ExitStatus exitStatus = execution.getExitStatus();
ExitStatus newExitStatus = ExitStatus.NOOP
.addExitDescription("All steps already completed or no steps configured for this job.");
.addExitDescription("All steps already completed or no steps configured for this job.");
execution.setExitStatus(exitStatus.and(newExitStatus));
}
stopObservation(execution, observation);

View File

@@ -193,7 +193,7 @@ public class CommandLineJobRunner {
private JobRepository jobRepository;
private final static List<String> VALID_OPTS = Arrays
.asList(new String[] { "-restart", "-next", "-stop", "-abandon" });
.asList(new String[] { "-restart", "-next", "-stop", "-abandon" });
/**
* Injection setter for the {@link JobLauncher}.
@@ -297,8 +297,8 @@ public class CommandLineJobRunner {
context = new ClassPathXmlApplicationContext(jobPath);
}
context.getAutowireCapableBeanFactory().autowireBeanProperties(this,
AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false);
context.getAutowireCapableBeanFactory()
.autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false);
Assert.state(launcher != null, "A JobLauncher must be provided. Please add one to the configuration.");
if (opts.contains("-restart") || opts.contains("-next")) {
@@ -309,7 +309,7 @@ public class CommandLineJobRunner {
String jobName = jobIdentifier;
JobParameters jobParameters = jobParametersConverter
.getJobParameters(StringUtils.splitArrayElementsIntoProperties(parameters, "="));
.getJobParameters(StringUtils.splitArrayElementsIntoProperties(parameters, "="));
Assert.isTrue(parameters == null || parameters.length == 0 || !jobParameters.isEmpty(),
"Invalid JobParameters " + Arrays.asList(parameters)
+ ". If parameters are provided they should be in the form name=value (no whitespace).");
@@ -362,7 +362,7 @@ public class CommandLineJobRunner {
if (opts.contains("-next")) {
jobParameters = new JobParametersBuilder(jobParameters, jobExplorer).getNextJobParameters(job)
.toJobParameters();
.toJobParameters();
}
JobExecution jobExecution = launcher.run(job, jobParameters);

View File

@@ -52,7 +52,8 @@ public class DataFieldMaxValueJobParametersIncrementer implements JobParametersI
@Override
public JobParameters getNext(JobParameters jobParameters) {
return new JobParametersBuilder(jobParameters == null ? new JobParameters() : jobParameters)
.addLong(this.key, this.dataFieldMaxValueIncrementer.nextLongValue()).toJobParameters();
.addLong(this.key, this.dataFieldMaxValueIncrementer.nextLongValue())
.toJobParameters();
}
/**

View File

@@ -262,8 +262,8 @@ public class JobRegistryBackgroundJobRunner {
private void run() {
final ApplicationContext parent = new ClassPathXmlApplicationContext(parentContextPath);
parent.getAutowireCapableBeanFactory().autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE,
false);
parent.getAutowireCapableBeanFactory()
.autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false);
parent.getAutowireCapableBeanFactory().initializeBean(this, getClass().getSimpleName());
this.parentContext = parent;
}

View File

@@ -339,8 +339,8 @@ public class SimpleJobOperator implements JobOperator, InitializingBean {
Job job = jobRegistry.getJob(jobName);
if (logger.isInfoEnabled()) {
logger.info(
String.format("Attempting to launch job with name=%s and parameters={%s}", jobName, parameters));
logger
.info(String.format("Attempting to launch job with name=%s and parameters={%s}", jobName, parameters));
}
try {
return jobLauncher.run(job, jobParameters).getId();

View File

@@ -68,8 +68,10 @@ public final class BatchMetrics {
* @return a new timer instance
*/
public static Timer createTimer(MeterRegistry meterRegistry, String name, String description, Tag... tags) {
return Timer.builder(METRICS_PREFIX + name).description(description).tags(Arrays.asList(tags))
.register(meterRegistry);
return Timer.builder(METRICS_PREFIX + name)
.description(description)
.tags(Arrays.asList(tags))
.register(meterRegistry);
}
/**
@@ -82,8 +84,10 @@ public final class BatchMetrics {
* @return a new timer instance
*/
public static Counter createCounter(MeterRegistry meterRegistry, String name, String description, Tag... tags) {
return Counter.builder(METRICS_PREFIX + name).description(description).tags(Arrays.asList(tags))
.register(meterRegistry);
return Counter.builder(METRICS_PREFIX + name)
.description(description)
.tags(Arrays.asList(tags))
.register(meterRegistry);
}
/**
@@ -140,8 +144,10 @@ public final class BatchMetrics {
*/
public static LongTaskTimer createLongTaskTimer(MeterRegistry meterRegistry, String name, String description,
Tag... tags) {
return LongTaskTimer.builder(METRICS_PREFIX + name).description(description).tags(Arrays.asList(tags))
.register(meterRegistry);
return LongTaskTimer.builder(METRICS_PREFIX + name)
.description(description)
.tags(Arrays.asList(tags))
.register(meterRegistry);
}
/**

View File

@@ -34,7 +34,7 @@ public class DefaultBatchJobObservationConvention implements BatchJobObservation
return KeyValues.of(
BatchJobObservation.JobLowCardinalityTags.JOB_NAME.withValue(execution.getJobInstance().getJobName()),
BatchJobObservation.JobLowCardinalityTags.JOB_STATUS
.withValue(execution.getExitStatus().getExitCode()));
.withValue(execution.getExitStatus().getExitCode()));
}
@Override
@@ -42,9 +42,9 @@ public class DefaultBatchJobObservationConvention implements BatchJobObservation
JobExecution execution = context.getJobExecution();
return KeyValues.of(
BatchJobObservation.JobHighCardinalityTags.JOB_INSTANCE_ID
.withValue(String.valueOf(execution.getJobInstance().getInstanceId())),
.withValue(String.valueOf(execution.getJobInstance().getInstanceId())),
BatchJobObservation.JobHighCardinalityTags.JOB_EXECUTION_ID
.withValue(String.valueOf(execution.getId())));
.withValue(String.valueOf(execution.getId())));
}
}

View File

@@ -33,16 +33,16 @@ public class DefaultBatchStepObservationConvention implements BatchStepObservati
StepExecution execution = context.getStepExecution();
return KeyValues.of(BatchStepObservation.StepLowCardinalityTags.STEP_NAME.withValue(execution.getStepName()),
BatchStepObservation.StepLowCardinalityTags.JOB_NAME
.withValue(execution.getJobExecution().getJobInstance().getJobName()),
.withValue(execution.getJobExecution().getJobInstance().getJobName()),
BatchStepObservation.StepLowCardinalityTags.STEP_STATUS
.withValue(execution.getExitStatus().getExitCode()));
.withValue(execution.getExitStatus().getExitCode()));
}
@Override
public KeyValues getHighCardinalityKeyValues(BatchStepContext context) {
StepExecution execution = context.getStepExecution();
return KeyValues.of(BatchStepObservation.StepHighCardinalityTags.STEP_EXECUTION_ID
.withValue(String.valueOf(execution.getId())));
.withValue(String.valueOf(execution.getId())));
}
}

View File

@@ -99,8 +99,10 @@ public class RemoteStepExecutionAggregator implements StepExecutionAggregator, I
JobExecution jobExecution = jobExplorer.getJobExecution(result.getJobExecutionId());
Assert.state(jobExecution != null,
"Could not load JobExecution from JobRepository for id " + result.getJobExecutionId());
List<StepExecution> updates = jobExecution.getStepExecutions().stream()
.filter(stepExecution -> stepExecutionIds.contains(stepExecution.getId())).collect(Collectors.toList());
List<StepExecution> updates = jobExecution.getStepExecutions()
.stream()
.filter(stepExecution -> stepExecutionIds.contains(stepExecution.getId()))
.collect(Collectors.toList());
delegate.aggregate(result, updates);
}

View File

@@ -103,7 +103,7 @@ public class TaskExecutorPartitionHandler extends AbstractPartitionHandler imple
catch (TaskRejectedException e) {
// couldn't execute one of the tasks
ExitStatus exitStatus = ExitStatus.FAILED
.addExitDescription("TaskExecutor rejected the task for this step.");
.addExitDescription("TaskExecutor rejected the task for this step.");
/*
* Set the status in case the caller is tracking it through the
* JobExecution.

View File

@@ -125,11 +125,13 @@ public class Jackson2ExecutionContextStringSerializer implements ExecutionContex
* of trusted classes.
*/
public Jackson2ExecutionContextStringSerializer(String... trustedClassNames) {
this.objectMapper = JsonMapper.builder().configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true)
.configure(MapperFeature.BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES, true)
.setDefaultTyping(createTrustedDefaultTyping(trustedClassNames)).addModule(new JobParametersModule())
.build();
this.objectMapper = JsonMapper.builder()
.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true)
.configure(MapperFeature.BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES, true)
.setDefaultTyping(createTrustedDefaultTyping(trustedClassNames))
.addModule(new JobParametersModule())
.build();
}
public void setObjectMapper(ObjectMapper objectMapper) {
@@ -282,21 +284,22 @@ public class Jackson2ExecutionContextStringSerializer implements ExecutionContex
*/
static class TrustedTypeIdResolver implements TypeIdResolver {
private static final Set<String> TRUSTED_CLASS_NAMES = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
"javax.xml.namespace.QName", "java.util.UUID", "java.util.ArrayList", "java.util.Arrays$ArrayList",
"java.util.LinkedList", "java.util.Collections$EmptyList", "java.util.Collections$EmptyMap",
"java.util.Collections$EmptySet", "java.util.Collections$UnmodifiableRandomAccessList",
"java.util.Collections$UnmodifiableList", "java.util.Collections$UnmodifiableMap",
"java.util.Collections$UnmodifiableSet", "java.util.Collections$SingletonList",
"java.util.Collections$SingletonMap", "java.util.Collections$SingletonSet", "java.util.Date",
"java.time.Instant", "java.time.Duration", "java.time.LocalDate", "java.time.LocalTime",
"java.time.LocalDateTime", "java.sql.Timestamp", "java.net.URL", "java.util.TreeMap",
"java.util.HashMap", "java.util.LinkedHashMap", "java.util.TreeSet", "java.util.HashSet",
"java.util.LinkedHashSet", "java.lang.Boolean", "java.lang.Byte", "java.lang.Short",
"java.lang.Integer", "java.lang.Long", "java.lang.Double", "java.lang.Float", "java.math.BigDecimal",
"java.math.BigInteger", "java.lang.String", "java.lang.Character", "java.lang.CharSequence",
"java.util.Properties", "[Ljava.util.Properties;", "org.springframework.batch.core.JobParameter",
"org.springframework.batch.core.JobParameters")));
private static final Set<String> TRUSTED_CLASS_NAMES = Collections
.unmodifiableSet(new HashSet<>(Arrays.asList("javax.xml.namespace.QName", "java.util.UUID",
"java.util.ArrayList", "java.util.Arrays$ArrayList", "java.util.LinkedList",
"java.util.Collections$EmptyList", "java.util.Collections$EmptyMap",
"java.util.Collections$EmptySet", "java.util.Collections$UnmodifiableRandomAccessList",
"java.util.Collections$UnmodifiableList", "java.util.Collections$UnmodifiableMap",
"java.util.Collections$UnmodifiableSet", "java.util.Collections$SingletonList",
"java.util.Collections$SingletonMap", "java.util.Collections$SingletonSet", "java.util.Date",
"java.time.Instant", "java.time.Duration", "java.time.LocalDate", "java.time.LocalTime",
"java.time.LocalDateTime", "java.sql.Timestamp", "java.net.URL", "java.util.TreeMap",
"java.util.HashMap", "java.util.LinkedHashMap", "java.util.TreeSet", "java.util.HashSet",
"java.util.LinkedHashSet", "java.lang.Boolean", "java.lang.Byte", "java.lang.Short",
"java.lang.Integer", "java.lang.Long", "java.lang.Double", "java.lang.Float",
"java.math.BigDecimal", "java.math.BigInteger", "java.lang.String", "java.lang.Character",
"java.lang.CharSequence", "java.util.Properties", "[Ljava.util.Properties;",
"org.springframework.batch.core.JobParameter", "org.springframework.batch.core.JobParameters")));
private final Set<String> trustedClassNames = new LinkedHashSet<>(TRUSTED_CLASS_NAMES);

View File

@@ -188,7 +188,7 @@ public abstract class AbstractJobRepositoryFactoryBean implements FactoryBean<Jo
transactionAttributes.setProperty("*", "PROPAGATION_REQUIRED");
this.transactionAttributeSource = new NameMatchTransactionAttributeSource();
((NameMatchTransactionAttributeSource) this.transactionAttributeSource)
.setProperties(transactionAttributes);
.setProperties(transactionAttributes);
}
}

View File

@@ -152,8 +152,9 @@ public class SimpleJobRepository implements JobRepository {
+ "so it may be dangerous to proceed. Manual intervention is probably necessary.");
}
Collection<JobParameter<?>> allJobParameters = execution.getJobParameters().getParameters().values();
long identifyingJobParametersCount = allJobParameters.stream().filter(JobParameter::isIdentifying)
.count();
long identifyingJobParametersCount = allJobParameters.stream()
.filter(JobParameter::isIdentifying)
.count();
if (identifyingJobParametersCount > 0
&& (status == BatchStatus.COMPLETED || status == BatchStatus.ABANDONED)) {
throw new JobInstanceAlreadyCompleteException(

View File

@@ -209,9 +209,11 @@ public abstract class AbstractStep implements Step, InitializingBean, BeanNameAw
stepExecution.setStartTime(LocalDateTime.now());
stepExecution.setStatus(BatchStatus.STARTED);
Observation observation = BatchMetrics
.createObservation(BatchStepObservation.BATCH_STEP_OBSERVATION.getName(),
new BatchStepContext(stepExecution), this.observationRegistry)
.contextualName(stepExecution.getStepName()).observationConvention(this.observationConvention).start();
.createObservation(BatchStepObservation.BATCH_STEP_OBSERVATION.getName(),
new BatchStepContext(stepExecution), this.observationRegistry)
.contextualName(stepExecution.getStepName())
.observationConvention(this.observationConvention)
.start();
getJobRepository().update(stepExecution);
// Start with a default value that will be trumped by anything

View File

@@ -475,7 +475,7 @@ public class SimpleStepFactoryBean<T, S> implements FactoryBean<Step>, BeanNameA
builder.listener(listener);
}
for (ItemProcessListener<T, S> listener : BatchListenerFactoryHelper
.<ItemProcessListener<T, S>>getListeners(listeners, ItemProcessListener.class)) {
.<ItemProcessListener<T, S>>getListeners(listeners, ItemProcessListener.class)) {
builder.listener(listener);
}
builder.transactionManager(transactionManager);

View File

@@ -119,7 +119,7 @@ public class SystemCommandTasklet implements StepExecutionListener, StoppableTas
if (stoppable) {
JobExecution jobExecution = jobExplorer
.getJobExecution(chunkContext.getStepContext().getStepExecution().getJobExecutionId());
.getJobExecution(chunkContext.getStepContext().getStepExecution().getJobExecutionId());
if (jobExecution.isStopping()) {
stopped = true;

View File

@@ -253,7 +253,7 @@ public class TaskletStep extends AbstractStep {
RepeatStatus result;
try {
result = new TransactionTemplate(transactionManager, transactionAttribute)
.execute(new ChunkTransactionCallback(chunkContext, semaphore));
.execute(new ChunkTransactionCallback(chunkContext, semaphore));
}
catch (UncheckedTransactionException e) {
// Allow checked exceptions to be thrown inside callback

View File

@@ -31,10 +31,13 @@ class DefaultJobKeyGeneratorTests {
@Test
void testMixedParameters() {
JobParameters jobParameters1 = new JobParametersBuilder().addString("foo", "bar").addString("bar", "foo")
.toJobParameters();
JobParameters jobParameters1 = new JobParametersBuilder().addString("foo", "bar")
.addString("bar", "foo")
.toJobParameters();
JobParameters jobParameters2 = new JobParametersBuilder().addString("foo", "bar", true)
.addString("bar", "foo", true).addString("ignoreMe", "irrelevant", false).toJobParameters();
.addString("bar", "foo", true)
.addString("ignoreMe", "irrelevant", false)
.toJobParameters();
String key1 = jobKeyGenerator.generateKey(jobParameters1);
String key2 = jobKeyGenerator.generateKey(jobParameters2);
assertEquals(key1, key2);
@@ -42,19 +45,22 @@ class DefaultJobKeyGeneratorTests {
@Test
void testCreateJobKey() {
JobParameters jobParameters = new JobParametersBuilder().addString("foo", "bar").addString("bar", "foo")
.toJobParameters();
JobParameters jobParameters = new JobParametersBuilder().addString("foo", "bar")
.addString("bar", "foo")
.toJobParameters();
String key = jobKeyGenerator.generateKey(jobParameters);
assertEquals(32, key.length());
}
@Test
void testCreateJobKeyOrdering() {
JobParameters jobParameters1 = new JobParametersBuilder().addString("foo", "bar").addString("bar", "foo")
.toJobParameters();
JobParameters jobParameters1 = new JobParametersBuilder().addString("foo", "bar")
.addString("bar", "foo")
.toJobParameters();
String key1 = jobKeyGenerator.generateKey(jobParameters1);
JobParameters jobParameters2 = new JobParametersBuilder().addString("bar", "foo").addString("foo", "bar")
.toJobParameters();
JobParameters jobParameters2 = new JobParametersBuilder().addString("bar", "foo")
.addString("foo", "bar")
.toJobParameters();
String key2 = jobKeyGenerator.generateKey(jobParameters2);
assertEquals(key1, key2);
}

View File

@@ -69,13 +69,16 @@ class JobParametersBuilderTests {
@Test
void testAddingExistingJobParameters() {
JobParameters params1 = new JobParametersBuilder().addString("foo", "bar").addString("bar", "baz")
.toJobParameters();
JobParameters params1 = new JobParametersBuilder().addString("foo", "bar")
.addString("bar", "baz")
.toJobParameters();
JobParameters params2 = new JobParametersBuilder().addString("foo", "baz").toJobParameters();
JobParameters finalParams = new JobParametersBuilder().addString("baz", "quix").addJobParameters(params1)
.addJobParameters(params2).toJobParameters();
JobParameters finalParams = new JobParametersBuilder().addString("baz", "quix")
.addJobParameters(params1)
.addJobParameters(params2)
.toJobParameters();
assertEquals(finalParams.getString("foo"), "baz");
assertEquals(finalParams.getString("bar"), "baz");

View File

@@ -64,8 +64,11 @@ public class SpringBatchVersionTests {
assertNotNull(jobExecution);
assertEquals(ExitStatus.COMPLETED, jobExecution.getExitStatus());
assertTrue(jobExecution.getExecutionContext().containsKey(SpringBatchVersion.BATCH_VERSION_KEY));
assertTrue(jobExecution.getStepExecutions().iterator().next().getExecutionContext()
.containsKey(SpringBatchVersion.BATCH_VERSION_KEY));
assertTrue(jobExecution.getStepExecutions()
.iterator()
.next()
.getExecutionContext()
.containsKey(SpringBatchVersion.BATCH_VERSION_KEY));
}
@Configuration
@@ -75,7 +78,9 @@ public class SpringBatchVersionTests {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL)
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean
@@ -86,9 +91,10 @@ public class SpringBatchVersionTests {
@Bean
public Job job(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new JobBuilder("job", jobRepository)
.start(new StepBuilder("step", jobRepository)
.tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED, transactionManager).build())
.build();
.start(new StepBuilder("step", jobRepository)
.tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED, transactionManager)
.build())
.build();
}
}

View File

@@ -112,7 +112,7 @@ class BatchRegistrarTests {
Assertions.assertEquals(context.getBean(DataSource.class), dataSource);
JdbcExecutionContextDao executionContextDao = (JdbcExecutionContextDao) ReflectionTestUtils
.getField(jobRepository, "ecDao");
.getField(jobRepository, "ecDao");
jdbcTemplate = (JdbcTemplate) ReflectionTestUtils.getField(executionContextDao, "jdbcTemplate");
dataSource = (DataSource) ReflectionTestUtils.getField(jdbcTemplate, "dataSource");
Assertions.assertEquals(context.getBean(DataSource.class), dataSource);
@@ -147,7 +147,7 @@ class BatchRegistrarTests {
Assertions.assertEquals(context.getBean(DataSource.class), dataSource);
JdbcExecutionContextDao executionContextDao = (JdbcExecutionContextDao) ReflectionTestUtils
.getField(jobRepository, "ecDao");
.getField(jobRepository, "ecDao");
jdbcTemplate = (JdbcTemplate) ReflectionTestUtils.getField(executionContextDao, "jdbcTemplate");
dataSource = (DataSource) ReflectionTestUtils.getField(jdbcTemplate, "dataSource");
Assertions.assertEquals(context.getBean(DataSource.class), dataSource);
@@ -231,7 +231,9 @@ class BatchRegistrarTests {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL)
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean
@@ -248,7 +250,9 @@ class BatchRegistrarTests {
@Bean
public DataSource batchDataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL)
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -29,8 +29,10 @@ public class DataSourceConfiguration {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL)
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -61,17 +61,20 @@ class InlineDataSourceDefinitionTests {
@Bean
public Job job(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new JobBuilder("job", jobRepository)
.start(new StepBuilder("step", jobRepository).tasklet((contribution, chunkContext) -> {
System.out.println("hello world");
return RepeatStatus.FINISHED;
}, transactionManager).build()).build();
.start(new StepBuilder("step", jobRepository).tasklet((contribution, chunkContext) -> {
System.out.println("hello world");
return RepeatStatus.FINISHED;
}, transactionManager).build())
.build();
}
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
.addScript("/org/springframework/batch/core/schema-drop-h2.sql")
.addScript("/org/springframework/batch/core/schema-h2.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-drop-h2.sql")
.addScript("/org/springframework/batch/core/schema-h2.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -87,8 +87,9 @@ public class JobBuilderConfigurationTests {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(configs);
Job job = jobName == null ? context.getBean(Job.class) : context.getBean(jobName, Job.class);
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
JobExecution execution = jobLauncher.run(job, new JobParametersBuilder()
.addLong("run.id", (long) (Math.random() * Long.MAX_VALUE)).toJobParameters());
JobExecution execution = jobLauncher.run(job,
new JobParametersBuilder().addLong("run.id", (long) (Math.random() * Long.MAX_VALUE))
.toJobParameters());
assertEquals(status, execution.getStatus());
assertEquals(stepExecutionCount, execution.getStepExecutions().size());
context.close();
@@ -196,7 +197,9 @@ public class JobBuilderConfigurationTests {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -74,8 +74,9 @@ class JobLoaderConfigurationTests {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(configs);
Job job = jobName == null ? context.getBean(Job.class) : context.getBean(JobLocator.class).getJob(jobName);
JobLauncher jobLauncher = context.getBean(JobLauncher.class);
JobExecution execution = jobLauncher.run(job, new JobParametersBuilder()
.addLong("run.id", (long) (Math.random() * Long.MAX_VALUE)).toJobParameters());
JobExecution execution = jobLauncher.run(job,
new JobParametersBuilder().addLong("run.id", (long) (Math.random() * Long.MAX_VALUE))
.toJobParameters());
assertEquals(status, execution.getStatus());
assertEquals(stepExecutionCount, execution.getStepExecutions().size());
JobExplorer jobExplorer = context.getBean(JobExplorer.class);
@@ -128,20 +129,20 @@ class JobLoaderConfigurationTests {
@Bean
public Job testJob(JobRepository jobRepository) throws Exception {
SimpleJobBuilder builder = new JobBuilder("test", jobRepository).start(step1(jobRepository))
.next(step2(jobRepository));
.next(step2(jobRepository));
return builder.build();
}
@Bean
protected Step step1(JobRepository jobRepository) throws Exception {
return new StepBuilder("step1", jobRepository).tasklet(tasklet(), new ResourcelessTransactionManager())
.build();
.build();
}
@Bean
protected Step step2(JobRepository jobRepository) throws Exception {
return new StepBuilder("step2", jobRepository).tasklet(tasklet(), new ResourcelessTransactionManager())
.build();
.build();
}
@Bean

View File

@@ -61,8 +61,9 @@ abstract class TransactionManagerConfigurationTests {
static DataSource createDataSource() {
return new EmbeddedDatabaseBuilder().generateUniqueName(true)
.addScript("classpath:org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("classpath:org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("classpath:org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("classpath:org/springframework/batch/core/schema-hsqldb.sql")
.build();
}
}

View File

@@ -146,7 +146,9 @@ class DefaultBatchConfigurationTests {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL)
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -172,7 +172,7 @@ class GenericApplicationContextFactoryTests {
assertNotNull(context.getBean("concrete-job", JobSupport.class).getStep("step32"));
boolean autowiredFound = false;
for (BeanPostProcessor postProcessor : ((AbstractBeanFactory) context.getBeanFactory())
.getBeanPostProcessors()) {
.getBeanPostProcessors()) {
if (postProcessor instanceof AutowiredAnnotationBeanPostProcessor) {
autowiredFound = true;
}

View File

@@ -32,7 +32,7 @@ class DuplicateTransitionJobParserTests {
@Test
void testNextAttributeWithNestedElement() {
assertThrows(BeanDefinitionStoreException.class, () -> new ClassPathXmlApplicationContext(ClassUtils
.addResourcePathToPackagePath(getClass(), "NextAttributeMultipleFinalJobParserTests-context.xml")));
.addResourcePathToPackagePath(getClass(), "NextAttributeMultipleFinalJobParserTests-context.xml")));
}
@Test

View File

@@ -104,7 +104,7 @@ class StepListenerInStepParserTests {
try {
compositeListener = ReflectionTestUtils.getField(
ReflectionTestUtils.getField(ReflectionTestUtils
.getField(ReflectionTestUtils.getField(step, "tasklet"), "chunkProvider"), "listener"),
.getField(ReflectionTestUtils.getField(step, "tasklet"), "chunkProvider"), "listener"),
"itemReadListener");
composite = ReflectionTestUtils.getField(compositeListener, "listeners");
proxiedListeners = (List<StepListener>) ReflectionTestUtils.getField(composite, "list");

View File

@@ -55,7 +55,7 @@ class StepListenerMethodAttributeParserTests {
Object compositeListener = ReflectionTestUtils.getField(step, "stepExecutionListener");
Object composite = ReflectionTestUtils.getField(compositeListener, "list");
List<StepExecutionListener> proxiedListeners = (List<StepExecutionListener>) ReflectionTestUtils
.getField(composite, "list");
.getField(composite, "list");
List<Object> r = new ArrayList<>();
for (Object listener : proxiedListeners) {
while (listener instanceof Advised) {

View File

@@ -144,7 +144,7 @@ class StepListenerParserTests {
try {
compositeListener = ReflectionTestUtils.getField(
ReflectionTestUtils.getField(ReflectionTestUtils
.getField(ReflectionTestUtils.getField(step, "tasklet"), "chunkProvider"), "listener"),
.getField(ReflectionTestUtils.getField(step, "tasklet"), "chunkProvider"), "listener"),
"itemReadListener");
composite = ReflectionTestUtils.getField(compositeListener, "listeners");
proxiedListeners = (List<StepListener>) ReflectionTestUtils.getField(composite, "list");

View File

@@ -499,7 +499,7 @@ public class StepParserTests {
ApplicationContext ctx = stepParserParentAttributeTestsCtx;
StepParserStepFactoryBean<?, ?> fb = (StepParserStepFactoryBean<?, ?>) ctx
.getBean("&stepWithListsOverrideWithEmpty");
.getBean("&stepWithListsOverrideWithEmpty");
assertEquals(1, getExceptionMap(fb, "skippableExceptionClasses").size());
assertEquals(1, getExceptionMap(fb, "retryableExceptionClasses").size());

View File

@@ -191,8 +191,11 @@ class DefaultJobParametersConverterTests {
void testGetProperties() throws Exception {
LocalDate date = LocalDate.of(2008, 1, 23);
JobParameters parameters = new JobParametersBuilder()
.addJobParameter("schedule.date", date, LocalDate.class, true).addString("job.key", "myKey")
.addLong("vendor.id", 33243243L).addDouble("double.key", 1.23).toJobParameters();
.addJobParameter("schedule.date", date, LocalDate.class, true)
.addString("job.key", "myKey")
.addLong("vendor.id", 33243243L)
.addDouble("double.key", 1.23)
.toJobParameters();
Properties props = factory.getProperties(parameters);
assertNotNull(props);

View File

@@ -115,7 +115,7 @@ class SimpleJobExplorerIntegrationTests {
List<StateTransition> transitions = new ArrayList<>();
transitions.add(StateTransition.createStateTransition(new StepState(dummyStep()), "end0"));
transitions
.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0")));
.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0")));
simpleFlow.setStateTransitions(transitions);
return simpleFlow;
}
@@ -219,7 +219,9 @@ class SimpleJobExplorerIntegrationTests {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
.addScript("/org/springframework/batch/core/schema-h2.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-h2.sql")
.generateUniqueName(true)
.build();
}
@Bean
@@ -237,10 +239,12 @@ class SimpleJobExplorerIntegrationTests {
JobExplorer jobExplorer = context.getBean(JobExplorer.class);
Job job = context.getBean(Job.class);
long id = 1L;
JobParameters jobParameters1 = new JobParametersBuilder().addLong("id", id).addString("name", "foo", false)
.toJobParameters();
JobParameters jobParameters2 = new JobParametersBuilder().addLong("id", id).addString("name", "bar", false)
.toJobParameters();
JobParameters jobParameters1 = new JobParametersBuilder().addLong("id", id)
.addString("name", "foo", false)
.toJobParameters();
JobParameters jobParameters2 = new JobParametersBuilder().addLong("id", id)
.addString("name", "bar", false)
.toJobParameters();
// when
JobExecution jobExecution1 = jobLauncher.run(job, jobParameters1);

View File

@@ -40,7 +40,7 @@ class DefaultJobParametersValidatorTests {
void testValidateRequiredValues() throws Exception {
validator.setRequiredKeys(new String[] { "name", "value" });
validator
.validate(new JobParametersBuilder().addString("name", "foo").addLong("value", 111L).toJobParameters());
.validate(new JobParametersBuilder().addString("name", "foo").addLong("value", 111L).toJobParameters());
}
@Test

View File

@@ -57,8 +57,9 @@ class ExtendedAbstractJobTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
factory.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));

View File

@@ -52,8 +52,9 @@ class SimpleJobFailureTests {
@BeforeEach
void init() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
factory.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));

View File

@@ -98,8 +98,10 @@ class SimpleJobTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
JdbcTransactionManager transactionManager = new JdbcTransactionManager(embeddedDatabase);
JobRepositoryFactoryBean repositoryFactoryBean = new JobRepositoryFactoryBean();
repositoryFactoryBean.setDataSource(embeddedDatabase);
@@ -116,7 +118,7 @@ class SimpleJobTests {
ObservationRegistry observationRegistry = ObservationRegistry.create();
observationRegistry.observationConfig()
.observationHandler(new DefaultMeterObservationHandler(Metrics.globalRegistry));
.observationHandler(new DefaultMeterObservationHandler(Metrics.globalRegistry));
job.setObservationRegistry(observationRegistry);
step1 = new StubStep("TestStep1", jobRepository);
@@ -226,9 +228,10 @@ class SimpleJobTests {
assertFalse(step2.passedInJobContext.isEmpty());
// Observability
MeterRegistryAssert.assertThat(Metrics.globalRegistry).hasTimerWithNameAndTags(
BatchJobObservation.BATCH_JOB_OBSERVATION.getName(), Tags.of(Tag.of("error", "none"),
Tag.of("spring.batch.job.name", "testJob"), Tag.of("spring.batch.job.status", "COMPLETED")));
MeterRegistryAssert.assertThat(Metrics.globalRegistry)
.hasTimerWithNameAndTags(BatchJobObservation.BATCH_JOB_OBSERVATION.getName(),
Tags.of(Tag.of("error", "none"), Tag.of("spring.batch.job.name", "testJob"),
Tag.of("spring.batch.job.status", "COMPLETED")));
}
@AfterEach
@@ -500,7 +503,7 @@ class SimpleJobTests {
job.setSteps(Arrays.asList(new Step[] { failStep }));
JobParameters firstJobParameters = new JobParametersBuilder().addString("JobExecutionParameter", "first", false)
.toJobParameters();
.toJobParameters();
JobExecution jobexecution = jobRepository.createJobExecution(job.getName(), firstJobParameters);
job.execute(jobexecution);
@@ -510,7 +513,8 @@ class SimpleJobTests {
assertEquals(jobExecutionList.get(0).getJobParameters().getString("JobExecutionParameter"), "first");
JobParameters secondJobParameters = new JobParametersBuilder()
.addString("JobExecutionParameter", "second", false).toJobParameters();
.addString("JobExecutionParameter", "second", false)
.toJobParameters();
jobexecution = jobRepository.createJobExecution(job.getName(), secondJobParameters);
job.execute(jobexecution);

View File

@@ -50,8 +50,9 @@ class SimpleStepHandlerTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
factory.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));

View File

@@ -84,8 +84,14 @@ class FlowBuilderTests {
}
};
FlowExecution flowExecution = builder.start(stepA).on("*").to(stepB).from(stepA).on("FAILED").to(stepC).end()
.start(new JobFlowExecutor(jobRepository, new SimpleStepHandler(jobRepository), execution));
FlowExecution flowExecution = builder.start(stepA)
.on("*")
.to(stepB)
.from(stepA)
.on("FAILED")
.to(stepC)
.end()
.start(new JobFlowExecutor(jobRepository, new SimpleStepHandler(jobRepository), execution));
Iterator<StepExecution> stepExecutions = execution.getStepExecutions().iterator();
StepExecution stepExecutionA = stepExecutions.next();

View File

@@ -110,8 +110,9 @@ class FlowJobBuilderTests {
@BeforeEach
void init() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
factory.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));
@@ -122,8 +123,11 @@ class FlowJobBuilderTests {
@Test
void testBuildOnOneLine() {
FlowJobBuilder builder = new JobBuilder("flow", jobRepository).start(step1).on("COMPLETED").to(step2).end()
.preventRestart();
FlowJobBuilder builder = new JobBuilder("flow", jobRepository).start(step1)
.on("COMPLETED")
.to(step2)
.end()
.preventRestart();
builder.build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
assertEquals(2, execution.getStepExecutions().size());
@@ -171,8 +175,10 @@ class FlowJobBuilderTests {
void testBuildSplitUsingStartAndAdd_BATCH_2346() {
Flow subflow1 = new FlowBuilder<Flow>("subflow1").from(step2).end();
Flow subflow2 = new FlowBuilder<Flow>("subflow2").from(step3).end();
Flow splitflow = new FlowBuilder<Flow>("splitflow").start(subflow1).split(new SimpleAsyncTaskExecutor())
.add(subflow2).build();
Flow splitflow = new FlowBuilder<Flow>("splitflow").start(subflow1)
.split(new SimpleAsyncTaskExecutor())
.add(subflow2)
.build();
FlowJobBuilder builder = new JobBuilder("flow", jobRepository).start(splitflow).end();
builder.preventRestart().build().execute(execution);
@@ -184,8 +190,9 @@ class FlowJobBuilderTests {
void testBuildSplit_BATCH_2282() {
Flow flow1 = new FlowBuilder<Flow>("subflow1").from(step1).end();
Flow flow2 = new FlowBuilder<Flow>("subflow2").from(step2).end();
Flow splitFlow = new FlowBuilder<Flow>("splitflow").split(new SimpleAsyncTaskExecutor()).add(flow1, flow2)
.build();
Flow splitFlow = new FlowBuilder<Flow>("splitflow").split(new SimpleAsyncTaskExecutor())
.add(flow1, flow2)
.build();
FlowJobBuilder builder = new JobBuilder("flow", jobRepository).start(splitFlow).end();
builder.preventRestart().build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
@@ -291,8 +298,10 @@ class FlowJobBuilderTests {
public Step step(JobRepository jobRepository, PlatformTransactionManager transactionManager,
@Value("#{jobParameters['chunkSize']}") Integer chunkSize) {
return new StepBuilder("step", jobRepository).<Integer, Integer>chunk(chunkSize, transactionManager)
.reader(new ListItemReader<>(Arrays.asList(1, 2, 3, 4))).writer(items -> {
}).build();
.reader(new ListItemReader<>(Arrays.asList(1, 2, 3, 4)))
.writer(items -> {
})
.build();
}
@Bean
@@ -304,7 +313,9 @@ class FlowJobBuilderTests {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -72,16 +72,19 @@ class JobBuilderTests {
@Bean
public Job job(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new JobBuilder("job", jobRepository).listener(new InterfaceBasedJobExecutionListener())
.listener(new AnnotationBasedJobExecutionListener())
.start(new StepBuilder("step", jobRepository)
.tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED, transactionManager).build())
.build();
.listener(new AnnotationBasedJobExecutionListener())
.start(new StepBuilder("step", jobRepository)
.tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED, transactionManager)
.build())
.build();
}
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -57,8 +57,9 @@ class FlowJobFailureTests {
@BeforeEach
void init() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
factory.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));

View File

@@ -74,8 +74,9 @@ public class FlowJobTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JdbcTransactionManager transactionManager = new JdbcTransactionManager(embeddedDatabase);
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
@@ -129,8 +130,8 @@ public class FlowJobTests {
void testFailedStep() throws Exception {
SimpleFlow flow = new SimpleFlow("job");
List<StateTransition> transitions = new ArrayList<>();
transitions.add(
StateTransition.createStateTransition(new StateSupport("step1", FlowExecutionStatus.FAILED), "step2"));
transitions
.add(StateTransition.createStateTransition(new StateSupport("step1", FlowExecutionStatus.FAILED), "step2"));
StepState step2 = new StepState(new StubStep("step2"));
transitions.add(StateTransition.createStateTransition(step2, ExitStatus.FAILED.getExitCode(), "end0"));
transitions.add(StateTransition.createStateTransition(step2, ExitStatus.COMPLETED.getExitCode(), "end1"));
@@ -192,7 +193,7 @@ public class FlowJobTests {
transitions.add(StateTransition.createStateTransition(state2, ExitStatus.FAILED.getExitCode(), "end0"));
transitions.add(StateTransition.createStateTransition(state2, ExitStatus.COMPLETED.getExitCode(), "end1"));
transitions
.add(StateTransition.createStateTransition(new EndState(FlowExecutionStatus.STOPPED, "end0"), "step3"));
.add(StateTransition.createStateTransition(new EndState(FlowExecutionStatus.STOPPED, "end0"), "step3"));
transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end1")));
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step3")), "end2"));
transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end2")));
@@ -280,7 +281,7 @@ public class FlowJobTests {
transitions = new ArrayList<>();
transitions.add(StateTransition
.createStateTransition(new SplitState(Arrays.<Flow>asList(flow1, flow2), "split"), "end0"));
.createStateTransition(new SplitState(Arrays.<Flow>asList(flow1, flow2), "split"), "end0"));
transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0")));
flow.setStateTransitions(transitions);
flow.afterPropertiesSet();
@@ -341,7 +342,7 @@ public class FlowJobTests {
transitions = new ArrayList<>();
transitions.add(StateTransition
.createStateTransition(new SplitState(Arrays.<Flow>asList(flow1, flow2), "split"), "end0"));
.createStateTransition(new SplitState(Arrays.<Flow>asList(flow1, flow2), "split"), "end0"));
transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end0")));
flow.setStateTransitions(transitions);
flow.afterPropertiesSet();
@@ -361,7 +362,7 @@ public class FlowJobTests {
List<StateTransition> transitions = new ArrayList<>();
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "end"));
transitions
.add(StateTransition.createStateTransition(new EndState(FlowExecutionStatus.STOPPED, "end"), "step2"));
.add(StateTransition.createStateTransition(new EndState(FlowExecutionStatus.STOPPED, "end"), "step2"));
StepState step2 = new StepState(new StubStep("step2"));
transitions.add(StateTransition.createStateTransition(step2, ExitStatus.FAILED.getExitCode(), "end0"));
transitions.add(StateTransition.createStateTransition(step2, ExitStatus.COMPLETED.getExitCode(), "end1"));
@@ -380,7 +381,7 @@ public class FlowJobTests {
List<StateTransition> transitions = new ArrayList<>();
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "end"));
transitions
.add(StateTransition.createStateTransition(new EndState(FlowExecutionStatus.FAILED, "end"), "step2"));
.add(StateTransition.createStateTransition(new EndState(FlowExecutionStatus.FAILED, "end"), "step2"));
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")),
ExitStatus.FAILED.getExitCode(), "end0"));
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step2")),
@@ -401,7 +402,7 @@ public class FlowJobTests {
List<StateTransition> transitions = new ArrayList<>();
transitions.add(StateTransition.createStateTransition(new StepState(new StubStep("step1")), "end"));
transitions
.add(StateTransition.createStateTransition(new EndState(FlowExecutionStatus.STOPPED, "end"), "step2"));
.add(StateTransition.createStateTransition(new EndState(FlowExecutionStatus.STOPPED, "end"), "step2"));
StepState step2 = new StepState(new StubStep("step2"));
transitions.add(StateTransition.createStateTransition(step2, ExitStatus.COMPLETED.getExitCode(), "end0"));
transitions.add(StateTransition.createStateTransition(step2, ExitStatus.FAILED.getExitCode(), "end1"));
@@ -675,7 +676,7 @@ public class FlowJobTests {
transitions = new ArrayList<>();
transitions.add(StateTransition
.createStateTransition(new SplitState(Arrays.<Flow>asList(flow1, flow2), "split"), "end2"));
.createStateTransition(new SplitState(Arrays.<Flow>asList(flow1, flow2), "split"), "end2"));
transitions.add(StateTransition.createEndStateTransition(new EndState(FlowExecutionStatus.COMPLETED, "end2")));
flow.setStateTransitions(transitions);
flow.afterPropertiesSet();

View File

@@ -55,8 +55,9 @@ class FlowStepTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean jobRepositoryFactoryBean = new JobRepositoryFactoryBean();
jobRepositoryFactoryBean.setDataSource(embeddedDatabase);
jobRepositoryFactoryBean.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));

View File

@@ -112,9 +112,9 @@ class TaskExecutorJobLauncherTests {
testRun();
when(jobRepository.getLastJobExecution(job.getName(), jobParameters))
.thenReturn(new JobExecution(new JobInstance(1L, job.getName()), jobParameters));
.thenReturn(new JobExecution(new JobInstance(1L, job.getName()), jobParameters));
when(jobRepository.createJobExecution(job.getName(), jobParameters))
.thenReturn(new JobExecution(new JobInstance(1L, job.getName()), jobParameters));
.thenReturn(new JobExecution(new JobInstance(1L, job.getName()), jobParameters));
jobLauncher.run(job, jobParameters);
}
@@ -139,7 +139,7 @@ class TaskExecutorJobLauncherTests {
testRun();
when(jobRepository.getLastJobExecution(job.getName(), jobParameters))
.thenReturn(new JobExecution(new JobInstance(1L, job.getName()), jobParameters));
.thenReturn(new JobExecution(new JobInstance(1L, job.getName()), jobParameters));
assertThrows(JobRestartException.class, () -> jobLauncher.run(job, jobParameters));
}
@@ -275,7 +275,7 @@ class TaskExecutorJobLauncherTests {
String jobName = "test_job";
JobRepository jobRepository = mock(JobRepository.class);
JobParameters parameters = new JobParametersBuilder().addLong("runtime", System.currentTimeMillis())
.toJobParameters();
.toJobParameters();
JobExecution jobExecution = mock(JobExecution.class);
Job job = mock(Job.class);
JobParametersValidator validator = mock(JobParametersValidator.class);

View File

@@ -350,8 +350,9 @@ class CommandLineJobRunnerTests {
@Test
void testNext() throws Throwable {
String[] args = new String[] { jobPath, "-next", jobName, "bar=foo" };
JobParameters jobParameters = new JobParametersBuilder().addString("foo", "bar").addString("bar", "foo")
.toJobParameters();
JobParameters jobParameters = new JobParametersBuilder().addString("foo", "bar")
.addString("bar", "foo")
.toJobParameters();
StubJobExplorer.jobInstances = Arrays.asList(new JobInstance(2L, jobName));
CommandLineJobRunner.main(args);
assertEquals(0, StubSystemExiter.status);

View File

@@ -161,7 +161,7 @@ class SimpleJobOperatorTests {
JobInstance jobInstance = new JobInstance(321L, "foo");
when(jobExplorer.getJobInstances("foo", 0, 1)).thenReturn(Collections.singletonList(jobInstance));
when(jobExplorer.getJobExecutions(jobInstance))
.thenReturn(Collections.singletonList(new JobExecution(jobInstance, new JobParameters())));
.thenReturn(Collections.singletonList(new JobExecution(jobInstance, new JobParameters())));
Long value = jobOperator.startNextInstance("foo");
assertEquals(999, value.longValue());
}
@@ -191,7 +191,7 @@ class SimpleJobOperatorTests {
void testResumeSunnyDay() throws Exception {
jobParameters = new JobParameters();
when(jobExplorer.getJobExecution(111L))
.thenReturn(new JobExecution(new JobInstance(123L, job.getName()), 111L, jobParameters));
.thenReturn(new JobExecution(new JobInstance(123L, job.getName()), 111L, jobParameters));
jobExplorer.getJobExecution(111L);
Long value = jobOperator.restart(111L);
assertEquals(999, value.longValue());
@@ -255,7 +255,7 @@ class SimpleJobOperatorTests {
void testGetJobParametersSunnyDay() throws Exception {
final JobParameters jobParameters = new JobParameters();
when(jobExplorer.getJobExecution(111L))
.thenReturn(new JobExecution(new JobInstance(123L, job.getName()), 111L, jobParameters));
.thenReturn(new JobExecution(new JobInstance(123L, job.getName()), 111L, jobParameters));
String value = jobOperator.getParameters(111L);
assertEquals("a=b", value);
}

View File

@@ -68,7 +68,7 @@ class CompositeItemProcessListenerTests {
@Test
void testSetListeners() {
compositeListener
.setListeners(Collections.<ItemProcessListener<? super Object, ? super Object>>singletonList(listener));
.setListeners(Collections.<ItemProcessListener<? super Object, ? super Object>>singletonList(listener));
listener.beforeProcess(null);
compositeListener.beforeProcess(null);
}

View File

@@ -142,14 +142,22 @@ class ItemListenerErrorTests {
ItemWriter<String> fakeItemWriter, ItemProcessListener<String, String> itemProcessListener) {
return new StepBuilder("testStep", jobRepository).<String, String>chunk(10, transactionManager)
.reader(fakeItemReader).processor(fakeProcessor).writer(fakeItemWriter)
.listener(itemProcessListener).faultTolerant().skipLimit(50).skip(RuntimeException.class).build();
.reader(fakeItemReader)
.processor(fakeProcessor)
.writer(fakeItemWriter)
.listener(itemProcessListener)
.faultTolerant()
.skipLimit(50)
.skip(RuntimeException.class)
.build();
}
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -64,8 +64,10 @@ class BatchMetricsTests {
@Test
void testCalculateDuration() {
LocalDateTime startTime = LocalDateTime.now();
LocalDateTime endTime = startTime.plus(2, ChronoUnit.HOURS).plus(31, ChronoUnit.MINUTES)
.plus(12, ChronoUnit.SECONDS).plus(42, ChronoUnit.MILLIS);
LocalDateTime endTime = startTime.plus(2, ChronoUnit.HOURS)
.plus(31, ChronoUnit.MINUTES)
.plus(12, ChronoUnit.SECONDS)
.plus(42, ChronoUnit.MILLIS);
Duration duration = BatchMetrics.calculateDuration(startTime, endTime);
Duration expectedDuration = Duration.ofMillis(42).plusSeconds(12).plusMinutes(31).plusHours(2);
@@ -152,67 +154,95 @@ class BatchMetricsTests {
"There should be a meter of type COUNTER named spring.batch.job.launch.count registered in the global registry");
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.job").tag("spring.batch.job.name", "job")
.tag("spring.batch.job.status", "COMPLETED").timer(),
() -> Metrics.globalRegistry.get("spring.batch.job")
.tag("spring.batch.job.name", "job")
.tag("spring.batch.job.status", "COMPLETED")
.timer(),
"There should be a meter of type TIMER named spring.batch.job registered in the global registry");
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.job.active").tag("spring.batch.job.active.name", "job")
.longTaskTimer(),
() -> Metrics.globalRegistry.get("spring.batch.job.active")
.tag("spring.batch.job.active.name", "job")
.longTaskTimer(),
"There should be a meter of type LONG_TASK_TIMER named spring.batch.job.active"
+ " registered in the global registry");
// Step 1 (tasklet) metrics
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.step").tag("spring.batch.step.name", "step1")
.tag("spring.batch.step.job.name", "job").tag("spring.batch.step.status", "COMPLETED").timer(),
() -> Metrics.globalRegistry.get("spring.batch.step")
.tag("spring.batch.step.name", "step1")
.tag("spring.batch.step.job.name", "job")
.tag("spring.batch.step.status", "COMPLETED")
.timer(),
"There should be a meter of type TIMER named spring.batch.step registered in the global registry");
// Step 2 (simple chunk-oriented) metrics
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.step").tag("spring.batch.step.name", "step2")
.tag("spring.batch.step.job.name", "job").tag("spring.batch.step.status", "COMPLETED").timer(),
() -> Metrics.globalRegistry.get("spring.batch.step")
.tag("spring.batch.step.name", "step2")
.tag("spring.batch.step.job.name", "job")
.tag("spring.batch.step.status", "COMPLETED")
.timer(),
"There should be a meter of type TIMER named spring.batch.step registered in the global registry");
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.item.read").tag("spring.batch.item.read.job.name", "job")
.tag("spring.batch.item.read.step.name", "step2")
.tag("spring.batch.item.read.status", "SUCCESS").timer(),
() -> Metrics.globalRegistry.get("spring.batch.item.read")
.tag("spring.batch.item.read.job.name", "job")
.tag("spring.batch.item.read.step.name", "step2")
.tag("spring.batch.item.read.status", "SUCCESS")
.timer(),
"There should be a meter of type TIMER named spring.batch.item.read registered in the global registry");
assertDoesNotThrow(() -> Metrics.globalRegistry.get("spring.batch.item.process")
.tag("spring.batch.item.process.job.name", "job").tag("spring.batch.item.process.step.name", "step2")
.tag("spring.batch.item.process.status", "SUCCESS").timer(),
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.item.process")
.tag("spring.batch.item.process.job.name", "job")
.tag("spring.batch.item.process.step.name", "step2")
.tag("spring.batch.item.process.status", "SUCCESS")
.timer(),
"There should be a meter of type TIMER named spring.batch.item.process registered in the global registry");
assertDoesNotThrow(() -> Metrics.globalRegistry.get("spring.batch.chunk.write")
.tag("spring.batch.chunk.write.job.name", "job").tag("spring.batch.chunk.write.step.name", "step2")
.tag("spring.batch.chunk.write.status", "SUCCESS").timer(),
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.chunk.write")
.tag("spring.batch.chunk.write.job.name", "job")
.tag("spring.batch.chunk.write.step.name", "step2")
.tag("spring.batch.chunk.write.status", "SUCCESS")
.timer(),
"There should be a meter of type TIMER named spring.batch.chunk.write registered in the global registry");
// Step 3 (fault-tolerant chunk-oriented) metrics
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.step").tag("spring.batch.step.name", "step3")
.tag("spring.batch.step.job.name", "job").tag("spring.batch.step.status", "COMPLETED").timer(),
() -> Metrics.globalRegistry.get("spring.batch.step")
.tag("spring.batch.step.name", "step3")
.tag("spring.batch.step.job.name", "job")
.tag("spring.batch.step.status", "COMPLETED")
.timer(),
"There should be a meter of type TIMER named spring.batch.step registered in the global registry");
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.item.read").tag("spring.batch.item.read.job.name", "job")
.tag("spring.batch.item.read.step.name", "step3")
.tag("spring.batch.item.read.status", "SUCCESS").timer(),
() -> Metrics.globalRegistry.get("spring.batch.item.read")
.tag("spring.batch.item.read.job.name", "job")
.tag("spring.batch.item.read.step.name", "step3")
.tag("spring.batch.item.read.status", "SUCCESS")
.timer(),
"There should be a meter of type TIMER named spring.batch.item.read registered in the global registry");
assertDoesNotThrow(() -> Metrics.globalRegistry.get("spring.batch.item.process")
.tag("spring.batch.item.process.job.name", "job").tag("spring.batch.item.process.step.name", "step3")
.tag("spring.batch.item.process.status", "SUCCESS").timer(),
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.item.process")
.tag("spring.batch.item.process.job.name", "job")
.tag("spring.batch.item.process.step.name", "step3")
.tag("spring.batch.item.process.status", "SUCCESS")
.timer(),
"There should be a meter of type TIMER named spring.batch.item.process registered in the global registry");
assertDoesNotThrow(() -> Metrics.globalRegistry.get("spring.batch.chunk.write")
.tag("spring.batch.chunk.write.job.name", "job").tag("spring.batch.chunk.write.step.name", "step3")
.tag("spring.batch.chunk.write.status", "SUCCESS").timer(),
assertDoesNotThrow(
() -> Metrics.globalRegistry.get("spring.batch.chunk.write")
.tag("spring.batch.chunk.write.job.name", "job")
.tag("spring.batch.chunk.write.step.name", "step3")
.tag("spring.batch.chunk.write.status", "SUCCESS")
.timer(),
"There should be a meter of type TIMER named spring.batch.chunk.write registered in the global registry");
}
@@ -223,43 +253,51 @@ class BatchMetricsTests {
@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("step1", jobRepository)
.tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED, transactionManager).build();
.tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED, transactionManager)
.build();
}
@Bean
public Step step2(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("step2", jobRepository).<Integer, Integer>chunk(2, transactionManager)
.reader(new ListItemReader<>(Arrays.asList(1, 2, 3, 4, 5)))
.writer(items -> items.forEach(System.out::println)).build();
.reader(new ListItemReader<>(Arrays.asList(1, 2, 3, 4, 5)))
.writer(items -> items.forEach(System.out::println))
.build();
}
@Bean
public Step step3(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("step3", jobRepository).<Integer, Integer>chunk(2, transactionManager)
.reader(new ListItemReader<>(Arrays.asList(6, 7, 8, 9, 10)))
.writer(items -> items.forEach(System.out::println)).faultTolerant().skip(Exception.class)
.skipLimit(3).build();
.reader(new ListItemReader<>(Arrays.asList(6, 7, 8, 9, 10)))
.writer(items -> items.forEach(System.out::println))
.faultTolerant()
.skip(Exception.class)
.skipLimit(3)
.build();
}
@Bean
public Job job(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new JobBuilder("job", jobRepository).start(step1(jobRepository, transactionManager))
.next(step2(jobRepository, transactionManager)).next(step3(jobRepository, transactionManager))
.build();
.next(step2(jobRepository, transactionManager))
.next(step3(jobRepository, transactionManager))
.build();
}
@Bean
public ObservationRegistry observationRegistry() {
ObservationRegistry observationRegistry = ObservationRegistry.create();
observationRegistry.observationConfig()
.observationHandler(new DefaultMeterObservationHandler(Metrics.globalRegistry));
.observationHandler(new DefaultMeterObservationHandler(Metrics.globalRegistry));
return observationRegistry;
}
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
}
@Bean

View File

@@ -53,8 +53,9 @@ class PartitionStepTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
factory.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));

View File

@@ -51,8 +51,9 @@ class RemoteStepExecutionAggregatorTests {
@BeforeEach
void init() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JdbcTransactionManager transactionManager = new JdbcTransactionManager(embeddedDatabase);
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);

View File

@@ -56,8 +56,9 @@ class SimpleStepExecutionSplitterTests {
void setUp() throws Exception {
step = new TaskletStep("step");
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
factory.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));

View File

@@ -52,7 +52,9 @@ public abstract class AbstractJobDaoTests {
protected JobExecutionDao jobExecutionDao;
protected JobParameters jobParameters = new JobParametersBuilder().addString("job.key", "jobKey")
.addLong("long", (long) 1).addDouble("double", 7.7).toJobParameters();
.addLong("long", (long) 1)
.addDouble("double", 7.7)
.toJobParameters();
protected JobInstance jobInstance;
@@ -211,7 +213,7 @@ public abstract class AbstractJobDaoTests {
jobInstance = jobInstanceDao.createJobInstance(testJob, jobParameters);
List<Map<String, Object>> jobs = jdbcTemplate
.queryForList("SELECT * FROM BATCH_JOB_INSTANCE where JOB_INSTANCE_ID=?", jobInstance.getId());
.queryForList("SELECT * FROM BATCH_JOB_INSTANCE where JOB_INSTANCE_ID=?", jobInstance.getId());
assertEquals(1, jobs.size());
assertEquals("test", jobs.get(0).get("JOB_NAME"));

View File

@@ -242,8 +242,10 @@ public abstract class AbstractJobExecutionDaoTests {
assertEquals(3, values.size());
Long jobExecutionId = exec.getId();
JobExecution value = values.stream().filter(jobExecution -> jobExecutionId.equals(jobExecution.getId()))
.findFirst().orElseThrow();
JobExecution value = values.stream()
.filter(jobExecution -> jobExecutionId.equals(jobExecution.getId()))
.findFirst()
.orElseThrow();
assertEquals(now.plus(3, ChronoUnit.SECONDS), value.getLastUpdated());
}

View File

@@ -41,8 +41,10 @@ public abstract class AbstractJobInstanceDaoTests {
private final String fooJob = "foo";
private final JobParameters fooParams = new JobParametersBuilder().addString("stringKey", "stringValue")
.addLong("longKey", Long.MAX_VALUE).addDouble("doubleKey", Double.MAX_VALUE)
.addDate("dateKey", new Date(DATE)).toJobParameters();
.addLong("longKey", Long.MAX_VALUE)
.addDouble("doubleKey", Double.MAX_VALUE)
.addDate("dateKey", new Date(DATE))
.toJobParameters();
protected abstract JobInstanceDao getJobInstanceDao();

View File

@@ -48,7 +48,7 @@ public class JdbcJobDaoTests extends AbstractJobDaoTests {
jobExecutionDao.updateJobExecution(jobExecution);
List<Map<String, Object>> executions = jdbcTemplate
.queryForList("SELECT * FROM BATCH_JOB_EXECUTION where JOB_INSTANCE_ID=?", jobInstance.getId());
.queryForList("SELECT * FROM BATCH_JOB_EXECUTION where JOB_INSTANCE_ID=?", jobInstance.getId());
assertEquals(1, executions.size());
assertEquals(LONG_STRING.substring(0, 250), executions.get(0).get("EXIT_MESSAGE"));
}

View File

@@ -119,9 +119,13 @@ public class JdbcJobExecutionDaoTests extends AbstractJobExecutionDaoTests {
long longParameter = 1L;
double doubleParameter = 2D;
JobParameters jobParameters = new JobParametersBuilder().addString("string", stringParameter)
.addLong("long", longParameter).addDouble("double", doubleParameter).addDate("date", dateParameter)
.addLocalDate("localDate", localDateParameter).addLocalTime("localTime", localTimeParameter)
.addLocalDateTime("localDateTime", localDateTimeParameter).toJobParameters();
.addLong("long", longParameter)
.addDouble("double", doubleParameter)
.addDate("date", dateParameter)
.addLocalDate("localDate", localDateParameter)
.addLocalTime("localTime", localTimeParameter)
.addLocalDateTime("localDateTime", localDateTimeParameter)
.toJobParameters();
JobExecution execution = new JobExecution(jobInstance, jobParameters);
// when

View File

@@ -64,14 +64,16 @@ class JdbcStepExecutionDaoTests extends AbstractStepExecutionDaoTests {
StepExecution retrievedAfterSave = dao.getStepExecution(jobExecution, stepExecution.getId());
assertTrue(retrievedAfterSave.getExitStatus().getExitDescription().length() < stepExecution.getExitStatus()
.getExitDescription().length(), "Exit description should be truncated");
.getExitDescription()
.length(), "Exit description should be truncated");
dao.updateStepExecution(stepExecution);
StepExecution retrievedAfterUpdate = dao.getStepExecution(jobExecution, stepExecution.getId());
assertTrue(retrievedAfterUpdate.getExitStatus().getExitDescription().length() < stepExecution.getExitStatus()
.getExitDescription().length(), "Exit description should be truncated");
.getExitDescription()
.length(), "Exit description should be truncated");
}
@Transactional

View File

@@ -101,9 +101,9 @@ class JobRepositoryFactoryBeanTests {
when(incrementerFactory.getSupportedIncrementerTypes()).thenReturn(new String[0]);
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_SEQ")).thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "STEP_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
factory.afterPropertiesSet();
factory.getObject();
@@ -119,9 +119,9 @@ class JobRepositoryFactoryBeanTests {
when(incrementerFactory.isSupportedIncrementerType("ORACLE")).thenReturn(true);
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_SEQ")).thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "STEP_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
factory.setIncrementerFactory(incrementerFactory);
factory.afterPropertiesSet();
@@ -139,9 +139,9 @@ class JobRepositoryFactoryBeanTests {
when(incrementerFactory.isSupportedIncrementerType("ORACLE")).thenReturn(true);
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_SEQ")).thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "STEP_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
factory.setIncrementerFactory(incrementerFactory);
LobHandler lobHandler = new DefaultLobHandler();
@@ -162,14 +162,14 @@ class JobRepositoryFactoryBeanTests {
when(incrementerFactory.isSupportedIncrementerType("ORACLE")).thenReturn(true);
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_SEQ")).thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "STEP_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
factory.setIncrementerFactory(incrementerFactory);
factory.afterPropertiesSet();
Serializer<Map<String, Object>> serializer = (Serializer<Map<String, Object>>) ReflectionTestUtils
.getField(factory, "serializer");
.getField(factory, "serializer");
assertTrue(serializer instanceof DefaultExecutionContextSerializer);
}
@@ -182,9 +182,9 @@ class JobRepositoryFactoryBeanTests {
when(incrementerFactory.isSupportedIncrementerType("ORACLE")).thenReturn(true);
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_SEQ")).thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "STEP_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
factory.setIncrementerFactory(incrementerFactory);
ExecutionContextSerializer customSerializer = new DefaultExecutionContextSerializer();
@@ -203,9 +203,9 @@ class JobRepositoryFactoryBeanTests {
when(incrementerFactory.isSupportedIncrementerType("ORACLE")).thenReturn(true);
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_SEQ")).thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "STEP_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
factory.setIncrementerFactory(incrementerFactory);
factory.afterPropertiesSet();
@@ -223,9 +223,9 @@ class JobRepositoryFactoryBeanTests {
when(incrementerFactory.isSupportedIncrementerType("ORACLE")).thenReturn(true);
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_SEQ")).thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "JOB_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer("ORACLE", tablePrefix + "STEP_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
factory.setIncrementerFactory(incrementerFactory);
JdbcOperations customJdbcOperations = mock(JdbcOperations.class);
@@ -281,11 +281,11 @@ class JobRepositoryFactoryBeanTests {
when(incrementerFactory.isSupportedIncrementerType("HSQL")).thenReturn(true);
when(incrementerFactory.getSupportedIncrementerTypes()).thenReturn(new String[0]);
when(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
when(incrementerFactory.getIncrementer(databaseType, tablePrefix + "STEP_EXECUTION_SEQ"))
.thenReturn(new StubIncrementer());
.thenReturn(new StubIncrementer());
factory.afterPropertiesSet();
factory.getObject();

View File

@@ -235,7 +235,7 @@ class SimpleJobRepositoryIntegrationTests {
@Test
public void testReExecuteWithSameJobParametersWhenRunning() throws Exception {
JobParameters jobParameters = new JobParametersBuilder().addString("stringKey", "stringValue")
.toJobParameters();
.toJobParameters();
// jobExecution with status STARTING
JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), jobParameters);

View File

@@ -373,7 +373,7 @@ class SimpleJobRepositoryTests {
JobExecution jobExecution2 = mock(JobExecution.class);
JobInstance jobInstance = mock(JobInstance.class);
when(this.jobExecutionDao.findJobExecutions(jobInstance))
.thenReturn(Arrays.asList(jobExecution1, jobExecution2));
.thenReturn(Arrays.asList(jobExecution1, jobExecution2));
// when
this.jobRepository.deleteJobInstance(jobInstance);

View File

@@ -37,7 +37,7 @@ class ChunkContextTests {
private final ChunkContext context = new ChunkContext(new StepContext(new JobExecution(new JobInstance(0L, "job"),
1L, new JobParameters(Collections.singletonMap("foo", new JobParameter("bar", String.class))))
.createStepExecution("foo")));
.createStepExecution("foo")));
@Test
void testGetStepContext() {

View File

@@ -195,7 +195,7 @@ class NonAbstractStepTests {
ObservationRegistry observationRegistry = ObservationRegistry.create();
observationRegistry.observationConfig()
.observationHandler(new DefaultMeterObservationHandler(Metrics.globalRegistry));
.observationHandler(new DefaultMeterObservationHandler(Metrics.globalRegistry));
tested.setObservationRegistry(observationRegistry);
tested.execute(execution);
@@ -218,11 +218,11 @@ class NonAbstractStepTests {
"Execution context modifications made by listener should be persisted");
// Observability
MeterRegistryAssert.assertThat(Metrics.globalRegistry).hasTimerWithNameAndTags(
BatchStepObservation.BATCH_STEP_OBSERVATION.getName(),
Tags.of(Tag.of("error", "none"), Tag.of("spring.batch.step.job.name", "jobName"),
Tag.of("spring.batch.step.name", "eventTrackingStep"),
Tag.of("spring.batch.step.status", "COMPLETED")));
MeterRegistryAssert.assertThat(Metrics.globalRegistry)
.hasTimerWithNameAndTags(BatchStepObservation.BATCH_STEP_OBSERVATION.getName(),
Tags.of(Tag.of("error", "none"), Tag.of("spring.batch.step.job.name", "jobName"),
Tag.of("spring.batch.step.name", "eventTrackingStep"),
Tag.of("spring.batch.step.status", "COMPLETED")));
}
@AfterEach

View File

@@ -39,9 +39,12 @@ class FaultTolerantStepBuilderTests {
void testAnnotationBasedStepExecutionListenerRegistration() {
// given
FaultTolerantStepBuilder<Object, Object> faultTolerantStepBuilder = new StepBuilder("myStep",
new DummyJobRepository()).<Object, Object>chunk(5, new ResourcelessTransactionManager())
.reader(new DummyItemReader()).writer(new DummyItemWriter()).faultTolerant()
.listener(new StepBuilderTests.AnnotationBasedStepExecutionListener());
new DummyJobRepository())
.<Object, Object>chunk(5, new ResourcelessTransactionManager())
.reader(new DummyItemReader())
.writer(new DummyItemWriter())
.faultTolerant()
.listener(new StepBuilderTests.AnnotationBasedStepExecutionListener());
// when
Step step = faultTolerantStepBuilder.build();

View File

@@ -121,8 +121,8 @@ class RegisterMultiListenerTests {
private void bootstrap(Class<?> configurationClass) {
context = new AnnotationConfigApplicationContext(configurationClass);
context.getAutowireCapableBeanFactory().autowireBeanProperties(this,
AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false);
context.getAutowireCapableBeanFactory()
.autowireBeanProperties(this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, false);
}
public static abstract class MultiListenerTestConfigurationSupport {
@@ -190,9 +190,11 @@ class RegisterMultiListenerTests {
@Bean
public DataSource dataSource() {
return new PooledEmbeddedDataSource(new EmbeddedDatabaseBuilder()
.addScript("classpath:org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("classpath:org/springframework/batch/core/schema-hsqldb.sql")
.setType(EmbeddedDatabaseType.HSQL).generateUniqueName(true).build());
.addScript("classpath:org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("classpath:org/springframework/batch/core/schema-hsqldb.sql")
.setType(EmbeddedDatabaseType.HSQL)
.generateUniqueName(true)
.build());
}
@Bean
@@ -204,10 +206,15 @@ class RegisterMultiListenerTests {
@Bean
public Step step(JobRepository jobRepository) {
return new StepBuilder("step", jobRepository).listener(listener())
.<String, String>chunk(2, transactionManager(dataSource())).reader(reader()).writer(writer())
.faultTolerant().skipLimit(1).skip(MySkippableException.class)
// ChunkListener registered twice for checking BATCH-2149
.listener((ChunkListener) listener()).build();
.<String, String>chunk(2, transactionManager(dataSource()))
.reader(reader())
.writer(writer())
.faultTolerant()
.skipLimit(1)
.skip(MySkippableException.class)
// ChunkListener registered twice for checking BATCH-2149
.listener((ChunkListener) listener())
.build();
}
}
@@ -219,9 +226,11 @@ class RegisterMultiListenerTests {
@Bean
public DataSource dataSource() {
return new PooledEmbeddedDataSource(new EmbeddedDatabaseBuilder()
.addScript("classpath:org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("classpath:org/springframework/batch/core/schema-hsqldb.sql")
.setType(EmbeddedDatabaseType.HSQL).generateUniqueName(true).build());
.addScript("classpath:org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("classpath:org/springframework/batch/core/schema-hsqldb.sql")
.setType(EmbeddedDatabaseType.HSQL)
.generateUniqueName(true)
.build());
}
@Bean
@@ -233,8 +242,10 @@ class RegisterMultiListenerTests {
@Bean
public Step step(JobRepository jobRepository) {
return new StepBuilder("step", jobRepository).listener(listener())
.<String, String>chunk(2, transactionManager(dataSource())).reader(reader()).writer(writer())
.build();
.<String, String>chunk(2, transactionManager(dataSource()))
.reader(reader())
.writer(writer())
.build();
}
}

View File

@@ -79,8 +79,9 @@ class StepBuilderTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JdbcTransactionManager transactionManager = new JdbcTransactionManager(embeddedDatabase);
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
@@ -95,7 +96,7 @@ class StepBuilderTests {
@Test
void test() throws Exception {
TaskletStepBuilder builder = new StepBuilder("step", jobRepository)
.tasklet((contribution, chunkContext) -> null, transactionManager);
.tasklet((contribution, chunkContext) -> null, transactionManager);
builder.build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
}
@@ -103,9 +104,9 @@ class StepBuilderTests {
@Test
void testListeners() throws Exception {
TaskletStepBuilder builder = new StepBuilder("step", jobRepository)
.listener(new InterfaceBasedStepExecutionListener())
.listener(new AnnotationBasedStepExecutionListener())
.tasklet((contribution, chunkContext) -> null, transactionManager);
.listener(new InterfaceBasedStepExecutionListener())
.listener(new AnnotationBasedStepExecutionListener())
.tasklet((contribution, chunkContext) -> null, transactionManager);
builder.build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
assertEquals(1, InterfaceBasedStepExecutionListener.beforeStepCount);
@@ -119,8 +120,8 @@ class StepBuilderTests {
@Test
void testAnnotationBasedChunkListenerForTaskletStep() throws Exception {
TaskletStepBuilder builder = new StepBuilder("step", jobRepository)
.tasklet((contribution, chunkContext) -> null, transactionManager)
.listener(new AnnotationBasedChunkListener());
.tasklet((contribution, chunkContext) -> null, transactionManager)
.listener(new AnnotationBasedChunkListener());
builder.build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
assertEquals(1, AnnotationBasedChunkListener.beforeChunkCount);
@@ -130,8 +131,9 @@ class StepBuilderTests {
@Test
void testAnnotationBasedChunkListenerForSimpleTaskletStep() throws Exception {
SimpleStepBuilder<Object, Object> builder = new StepBuilder("step", jobRepository).chunk(5, transactionManager)
.reader(new DummyItemReader()).writer(new DummyItemWriter())
.listener(new AnnotationBasedChunkListener());
.reader(new DummyItemReader())
.writer(new DummyItemWriter())
.listener(new AnnotationBasedChunkListener());
builder.build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
assertEquals(1, AnnotationBasedChunkListener.beforeChunkCount);
@@ -141,12 +143,14 @@ class StepBuilderTests {
@Test
void testAnnotationBasedChunkListenerForFaultTolerantTaskletStep() throws Exception {
SimpleStepBuilder<Object, Object> builder = new StepBuilder("step", jobRepository).chunk(5, transactionManager)
.reader(new DummyItemReader()).writer(new DummyItemWriter()).faultTolerant()
.listener(new AnnotationBasedChunkListener()); // TODO//
// should
// this
// return
// FaultTolerantStepBuilder?
.reader(new DummyItemReader())
.writer(new DummyItemWriter())
.faultTolerant()
.listener(new AnnotationBasedChunkListener()); // TODO//
// should
// this
// return
// FaultTolerantStepBuilder?
builder.build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
assertEquals(1, AnnotationBasedChunkListener.beforeChunkCount);
@@ -158,7 +162,7 @@ class StepBuilderTests {
SimpleJob job = new SimpleJob("job");
job.setJobRepository(jobRepository);
JobStepBuilder builder = new StepBuilder("step", jobRepository).job(job)
.listener(new AnnotationBasedChunkListener());
.listener(new AnnotationBasedChunkListener());
builder.build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
@@ -175,8 +179,11 @@ class StepBuilderTests {
ItemReader<String> reader = new ListItemReader<>(items);
SimpleStepBuilder<String, String> builder = new StepBuilder("step", jobRepository)
.<String, String>chunk(3, transactionManager).reader(reader).processor(new PassThroughItemProcessor<>())
.writer(new DummyItemWriter()).listener(new AnnotationBasedStepExecutionListener());
.<String, String>chunk(3, transactionManager)
.reader(reader)
.processor(new PassThroughItemProcessor<>())
.writer(new DummyItemWriter())
.listener(new AnnotationBasedStepExecutionListener());
builder.build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
@@ -209,8 +216,11 @@ class StepBuilderTests {
ListItemWriter<String> itemWriter = new ListItemWriter<>();
SimpleStepBuilder<Object, String> builder = new StepBuilder("step", jobRepository)
.<Object, String>chunk(3, transactionManager).reader(reader).processor(Object::toString)
.writer(itemWriter).listener(new AnnotationBasedStepExecutionListener());
.<Object, String>chunk(3, transactionManager)
.reader(reader)
.processor(Object::toString)
.writer(itemWriter)
.listener(new AnnotationBasedStepExecutionListener());
if (faultTolerantStep) {
builder = builder.faultTolerant();
@@ -291,7 +301,9 @@ class StepBuilderTests {
ItemReader<String> reader = new ListItemReader<>(items);
SimpleStepBuilder<String, String> builder = new StepBuilder("step", jobRepository)
.<String, String>chunk(3, transactionManager).reader(reader).writer(new DummyItemWriter());
.<String, String>chunk(3, transactionManager)
.reader(reader)
.writer(new DummyItemWriter());
configurer.apply(builder).listener(new InterfaceBasedItemReadListenerListener()).build().execute(execution);
assertEquals(BatchStatus.COMPLETED, execution.getStatus());

View File

@@ -61,7 +61,8 @@ class FaultTolerantChunkProcessorTests {
private FaultTolerantChunkProcessor<String, String> processor;
private final StepContribution contribution = new StepExecution("foo",
new JobExecution(new JobInstance(0L, "job"), new JobParameters())).createStepContribution();
new JobExecution(new JobInstance(0L, "job"), new JobParameters()))
.createStepContribution();
@BeforeEach
void setUp() {
@@ -266,8 +267,8 @@ class FaultTolerantChunkProcessorTests {
}
});
processor.setProcessSkipPolicy(new AlwaysSkipItemSkipPolicy());
processor.setRollbackClassifier(
new BinaryExceptionClassifier(Set.of(DataIntegrityViolationException.class), false));
processor
.setRollbackClassifier(new BinaryExceptionClassifier(Set.of(DataIntegrityViolationException.class), false));
Chunk<String> inputs = new Chunk<>(Arrays.asList("1", "2"));
processor.process(contribution, inputs);
assertEquals(1, list.size());

View File

@@ -102,8 +102,10 @@ class FaultTolerantStepFactoryBeanRetryTests {
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
JdbcTransactionManager transactionManager = new JdbcTransactionManager(embeddedDatabase);
JobRepositoryFactoryBean repositoryFactoryBean = new JobRepositoryFactoryBean();
repositoryFactoryBean.setDataSource(embeddedDatabase);
@@ -124,7 +126,7 @@ class FaultTolerantStepFactoryBeanRetryTests {
factory.setSkippableExceptionClasses(getExceptionMap(Exception.class));
JobParameters jobParameters = new JobParametersBuilder().addString("statefulTest", "make_this_unique")
.toJobParameters();
.toJobParameters();
jobExecution = repository.createJobExecution("job", jobParameters);
jobExecution.setEndTime(LocalDateTime.now());
@@ -145,7 +147,7 @@ class FaultTolerantStepFactoryBeanRetryTests {
void testProcessAllItemsWhenErrorInWriterTransformationWhenReaderTransactional() throws Exception {
final int RETRY_LIMIT = 3;
final List<String> ITEM_LIST = TransactionAwareProxyFactory
.createTransactionalList(Arrays.asList("1", "2", "3"));
.createTransactionalList(Arrays.asList("1", "2", "3"));
FaultTolerantStepFactoryBean<String, Integer> factory = new FaultTolerantStepFactoryBean<>();
factory.setBeanName("step");

View File

@@ -110,8 +110,9 @@ class FaultTolerantStepFactoryBeanRollbackTests {
factory.setSkippableExceptionClasses(getExceptionMap(Exception.class));
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean repositoryFactory = new JobRepositoryFactoryBean();
repositoryFactory.setDataSource(embeddedDatabase);
repositoryFactory.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));

View File

@@ -111,8 +111,9 @@ public class FaultTolerantStepFactoryBeanTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder().generateUniqueName(true)
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb-extended.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb-extended.sql")
.build();
JdbcTransactionManager transactionManager = new JdbcTransactionManager(embeddedDatabase);
factory = new FaultTolerantStepFactoryBean<>();
@@ -131,8 +132,8 @@ public class FaultTolerantStepFactoryBeanTests {
factory.setSkipLimit(2);
factory.setSkippableExceptionClasses(
getExceptionMap(SkippableException.class, SkippableRuntimeException.class));
factory
.setSkippableExceptionClasses(getExceptionMap(SkippableException.class, SkippableRuntimeException.class));
JobRepositoryFactoryBean repositoryFactoryBean = new JobRepositoryFactoryBean();
repositoryFactoryBean.setDataSource(embeddedDatabase);

View File

@@ -85,8 +85,10 @@ class SimpleStepFactoryBeanTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
JdbcTransactionManager transactionManager = new JdbcTransactionManager(embeddedDatabase);
JobRepositoryFactoryBean repositoryFactoryBean = new JobRepositoryFactoryBean();
repositoryFactoryBean.setDataSource(embeddedDatabase);

View File

@@ -56,8 +56,9 @@ class JobStepTests {
void setUp() throws Exception {
step.setName("step");
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(embeddedDatabase);
factory.setTransactionManager(new JdbcTransactionManager(embeddedDatabase));

View File

@@ -142,12 +142,12 @@ class AsyncChunkOrientedStepIntegrationTests {
// Need a transaction so one connection is enough to get job execution and its
// parameters
StepExecution lastStepExecution = new TransactionTemplate(transactionManager)
.execute(new TransactionCallback<StepExecution>() {
@Override
public StepExecution doInTransaction(TransactionStatus status) {
return jobRepository.getLastStepExecution(jobExecution.getJobInstance(), step.getName());
}
});
.execute(new TransactionCallback<StepExecution>() {
@Override
public StepExecution doInTransaction(TransactionStatus status) {
return jobRepository.getLastStepExecution(jobExecution.getJobInstance(), step.getName());
}
});
assertEquals(lastStepExecution, stepExecution);
assertNotSame(lastStepExecution, stepExecution);
}

View File

@@ -119,7 +119,7 @@ class AsyncTaskletStepTests {
void testStepExecutionUpdates() throws Exception {
items = new ArrayList<>(Arrays.asList(StringUtils
.commaDelimitedListToStringArray("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25")));
.commaDelimitedListToStringArray("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25")));
setUp();

View File

@@ -67,8 +67,10 @@ class StepExecutorInterruptionTests {
@BeforeEach
void setUp() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.generateUniqueName(true)
.build();
this.transactionManager = new JdbcTransactionManager(embeddedDatabase);
JobRepositoryFactoryBean repositoryFactoryBean = new JobRepositoryFactoryBean();
repositoryFactoryBean.setDataSource(embeddedDatabase);

View File

@@ -226,8 +226,9 @@ class TaskletStepTests {
@Test
void testRepository() throws Exception {
EmbeddedDatabase embeddedDatabase = new EmbeddedDatabaseBuilder()
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
.addScript("/org/springframework/batch/core/schema-drop-hsqldb.sql")
.addScript("/org/springframework/batch/core/schema-hsqldb.sql")
.build();
JdbcTransactionManager transactionManager = new JdbcTransactionManager(embeddedDatabase);
JobRepositoryFactoryBean repositoryFactoryBean = new JobRepositoryFactoryBean();
repositoryFactoryBean.setDataSource(embeddedDatabase);

View File

@@ -100,22 +100,23 @@ class ConcurrentTransactionTests {
@Bean
public Flow flow(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new FlowBuilder<Flow>("flow")
.start(new StepBuilder("flow.step1", jobRepository).tasklet(new Tasklet() {
@Nullable
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
throws Exception {
return RepeatStatus.FINISHED;
}
}, transactionManager).build())
.next(new StepBuilder("flow.step2", jobRepository).tasklet(new Tasklet() {
@Nullable
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
throws Exception {
return RepeatStatus.FINISHED;
}
}, transactionManager).build()).build();
.start(new StepBuilder("flow.step1", jobRepository).tasklet(new Tasklet() {
@Nullable
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
throws Exception {
return RepeatStatus.FINISHED;
}
}, transactionManager).build())
.next(new StepBuilder("flow.step2", jobRepository).tasklet(new Tasklet() {
@Nullable
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)
throws Exception {
return RepeatStatus.FINISHED;
}
}, transactionManager).build())
.build();
}
@Bean
@@ -146,15 +147,16 @@ class ConcurrentTransactionTests {
public Job concurrentJob(JobRepository jobRepository, PlatformTransactionManager transactionManager,
TaskExecutor taskExecutor) {
Flow splitFlow = new FlowBuilder<Flow>("splitflow").split(taskExecutor)
.add(flow(jobRepository, transactionManager), flow(jobRepository, transactionManager),
flow(jobRepository, transactionManager), flow(jobRepository, transactionManager),
flow(jobRepository, transactionManager), flow(jobRepository, transactionManager),
flow(jobRepository, transactionManager))
.build();
.add(flow(jobRepository, transactionManager), flow(jobRepository, transactionManager),
flow(jobRepository, transactionManager), flow(jobRepository, transactionManager),
flow(jobRepository, transactionManager), flow(jobRepository, transactionManager),
flow(jobRepository, transactionManager))
.build();
return new JobBuilder("concurrentJob", jobRepository).start(firstStep(jobRepository, transactionManager))
.next(new StepBuilder("splitFlowStep", jobRepository).flow(splitFlow).build())
.next(lastStep(jobRepository, transactionManager)).build();
.next(new StepBuilder("splitFlowStep", jobRepository).flow(splitFlow).build())
.next(lastStep(jobRepository, transactionManager))
.build();
}
@Bean
@@ -219,7 +221,7 @@ class ConcurrentTransactionTests {
ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
databasePopulator.addScript(defaultResourceLoader
.getResource("classpath:org/springframework/batch/core/schema-drop-hsqldb.sql"));
.getResource("classpath:org/springframework/batch/core/schema-drop-hsqldb.sql"));
databasePopulator.addScript(
defaultResourceLoader.getResource("classpath:org/springframework/batch/core/schema-hsqldb.sql"));
embeddedDatabaseFactory.setDatabasePopulator(databasePopulator);

View File

@@ -84,8 +84,10 @@ public class FootballJobSkipIntegrationTests extends AbstractIntegrationTests {
// They all skip on the second execution because of a primary key
// violation
long retryLimit = 2L;
execution = jobLauncher.run(job, new JobParametersBuilder().addLong("skip.limit", 100000L)
.addLong("retry.limit", retryLimit).toJobParameters());
execution = jobLauncher.run(job,
new JobParametersBuilder().addLong("skip.limit", 100000L)
.addLong("retry.limit", retryLimit)
.toJobParameters());
assertEquals(BatchStatus.COMPLETED, execution.getStatus());
for (StepExecution stepExecution : execution.getStepExecutions()) {
logger.info("Processed: " + stepExecution);

Some files were not shown because too many files have changed in this diff Show More