From fb5d4b6573c21cfd59fda5486113702113578b13 Mon Sep 17 00:00:00 2001 From: Glenn Renfro Date: Wed, 15 Sep 2021 11:35:25 -0400 Subject: [PATCH] SingleStepBatch Job can be used with spring-cloud-task-stream resolves #799 Added config to reduce testcontainer logging Updated to use task starter --- docs/src/main/asciidoc/README.adoc | 2 +- .../pom.xml | 4 ++-- .../src/test/resources/logback-test.xml | 6 +++++ spring-cloud-task-integration-tests/pom.xml | 4 ++-- .../batch-events/pom.xml | 4 ++-- .../src/main/resources/logback-test.xml | 6 +++++ .../single-step-batch-job/pom.xml | 3 ++- .../listener/BatchEventAutoConfiguration.java | 4 +++- .../listener/TaskEventAutoConfiguration.java | 5 +++- .../listener/JobExecutionEventTests.java | 24 ++++++++++++++++++- 10 files changed, 51 insertions(+), 11 deletions(-) create mode 100644 spring-cloud-starter-single-step-batch-job/src/test/resources/logback-test.xml create mode 100644 spring-cloud-task-samples/batch-events/src/main/resources/logback-test.xml diff --git a/docs/src/main/asciidoc/README.adoc b/docs/src/main/asciidoc/README.adoc index 6e2a3379..5a980bef 100644 --- a/docs/src/main/asciidoc/README.adoc +++ b/docs/src/main/asciidoc/README.adoc @@ -1,4 +1,4 @@ -= Spring Cloud Task image:https://build.spring.io/plugins/servlet/wittified/build-status/SCT-STASK[Build Status, link=https://build.spring.io/browse/SCT-STASK] += Spring Cloud Task Is a project centered around the idea of processing on demand. A user is able to develop a “task” that can be deployed, executed and removed on demand, yet the result of the diff --git a/spring-cloud-starter-single-step-batch-job/pom.xml b/spring-cloud-starter-single-step-batch-job/pom.xml index 553b65a1..22c9473e 100644 --- a/spring-cloud-starter-single-step-batch-job/pom.xml +++ b/spring-cloud-starter-single-step-batch-job/pom.xml @@ -10,8 +10,8 @@ spring-cloud-starter-single-step-batch-job - 1.16.0 - 1.16.0 + 1.16.1 + 1.16.1 1.0.8 diff --git a/spring-cloud-starter-single-step-batch-job/src/test/resources/logback-test.xml b/spring-cloud-starter-single-step-batch-job/src/test/resources/logback-test.xml new file mode 100644 index 00000000..9374ec7a --- /dev/null +++ b/spring-cloud-starter-single-step-batch-job/src/test/resources/logback-test.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/spring-cloud-task-integration-tests/pom.xml b/spring-cloud-task-integration-tests/pom.xml index e4a776a0..a3cb8ca4 100644 --- a/spring-cloud-task-integration-tests/pom.xml +++ b/spring-cloud-task-integration-tests/pom.xml @@ -13,8 +13,8 @@ spring-cloud-task-integration-tests - 1.16.0 - 1.16.0 + 1.16.1 + 1.16.1 1.0.8 diff --git a/spring-cloud-task-samples/batch-events/pom.xml b/spring-cloud-task-samples/batch-events/pom.xml index eba5077f..971b2e51 100644 --- a/spring-cloud-task-samples/batch-events/pom.xml +++ b/spring-cloud-task-samples/batch-events/pom.xml @@ -20,8 +20,8 @@ UTF-8 1.8 - 1.16.0 - 1.16.0 + 1.16.1 + 1.16.1 1.0.8 3.2.0-SNAPSHOT diff --git a/spring-cloud-task-samples/batch-events/src/main/resources/logback-test.xml b/spring-cloud-task-samples/batch-events/src/main/resources/logback-test.xml new file mode 100644 index 00000000..9374ec7a --- /dev/null +++ b/spring-cloud-task-samples/batch-events/src/main/resources/logback-test.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/spring-cloud-task-samples/single-step-batch-job/pom.xml b/spring-cloud-task-samples/single-step-batch-job/pom.xml index 9d050621..dd4c85a3 100644 --- a/spring-cloud-task-samples/single-step-batch-job/pom.xml +++ b/spring-cloud-task-samples/single-step-batch-job/pom.xml @@ -41,7 +41,8 @@ org.springframework.cloud - spring-cloud-task-core + spring-cloud-starter-task + ${project.version} org.springframework.boot diff --git a/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/BatchEventAutoConfiguration.java b/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/BatchEventAutoConfiguration.java index ed2430a3..5981bc62 100644 --- a/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/BatchEventAutoConfiguration.java +++ b/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/BatchEventAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 the original author or authors. + * Copyright 2016-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -182,6 +183,7 @@ public class BatchEventAutoConfiguration { @EnableBinding(BatchEventsChannels.class) @EnableConfigurationProperties(TaskEventProperties.class) @ConditionalOnMissingBean(name = JOB_EXECUTION_EVENTS_LISTENER) + @ConditionalOnExpression("T(org.springframework.util.StringUtils).isEmpty('${spring.batch.job.jobName:}')") public static class JobExecutionListenerConfiguration { @Autowired diff --git a/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/listener/TaskEventAutoConfiguration.java b/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/listener/TaskEventAutoConfiguration.java index f1f011f7..f6d7526c 100644 --- a/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/listener/TaskEventAutoConfiguration.java +++ b/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/listener/TaskEventAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 the original author or authors. + * Copyright 2016-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cloud.stream.annotation.EnableBinding; import org.springframework.cloud.stream.annotation.Output; @@ -33,10 +34,12 @@ import org.springframework.messaging.MessageChannel; /** * @author Michael Minella + * @author Glenn Renfro */ @Configuration(proxyBeanMethods = false) @ConditionalOnClass(EnableBinding.class) @ConditionalOnBean(TaskLifecycleListener.class) +@ConditionalOnExpression("T(org.springframework.util.StringUtils).isEmpty('${spring.batch.job.jobName:}')") // @checkstyle:off @ConditionalOnProperty(prefix = "spring.cloud.task.events", name = "enabled", havingValue = "true", matchIfMissing = true) diff --git a/spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobExecutionEventTests.java b/spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobExecutionEventTests.java index 143446d7..48933910 100644 --- a/spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobExecutionEventTests.java +++ b/spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobExecutionEventTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2019 the original author or authors. + * Copyright 2016-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -339,6 +340,27 @@ public class JobExecutionEventTests { }); } + @Test + public void singleStepBatchJobSkip() { + ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of( + EventJobExecutionConfiguration.class, + PropertyPlaceholderAutoConfiguration.class, + TestSupportBinderAutoConfiguration.class, + SimpleTaskAutoConfiguration.class, SingleTaskConfiguration.class)) + .withUserConfiguration( + BatchEventAutoConfiguration.JobExecutionListenerConfiguration.class) + .withPropertyValues("--spring.cloud.task.closecontext_enabled=false", + "--spring.main.web-environment=false", "spring.batch.job.jobName=FOO"); + applicationContextRunner.run((context) -> { + NoSuchBeanDefinitionException exception = Assertions.assertThrows(NoSuchBeanDefinitionException.class, () -> { + context.getBean("jobExecutionEventsListener"); + }); + assertThat(exception.getMessage()).contains( + String.format("No bean named 'jobExecutionEventsListener' available")); + }); + } + private void testDisabledConfiguration(String property, String disabledListener) { String disabledPropertyArg = (property != null) ? "--" + property + "=false" : ""; ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()