diff --git a/initializr-service/src/main/java/io/spring/initializr/service/extension/AbstractProjectRequestPostProcessor.java b/initializr-service/src/main/java/io/spring/initializr/service/extension/AbstractProjectRequestPostProcessor.java index c28cd9cf..b1c543dd 100644 --- a/initializr-service/src/main/java/io/spring/initializr/service/extension/AbstractProjectRequestPostProcessor.java +++ b/initializr-service/src/main/java/io/spring/initializr/service/extension/AbstractProjectRequestPostProcessor.java @@ -83,4 +83,17 @@ public class AbstractProjectRequestPostProcessor implements ProjectRequestPostPr return version.compareTo(requestVersion) <= 0; } + /** + * Specify if the Spring Boot version of the {@link ProjectRequest request} is lower + * than the specified {@link Version}. + * @param request the request to handle + * @param version the maximum version + * @return {@code true} if the requested version is lower than the specified + * {@code version} + */ + protected boolean isSpringBootVersionBefore(ProjectRequest request, Version version) { + Version requestVersion = Version.safeParse(request.getBootVersion()); + return version.compareTo(requestVersion) > 0; + } + } diff --git a/initializr-service/src/main/java/io/spring/initializr/service/extension/SpringCloudFunctionRequestPostProcessor.java b/initializr-service/src/main/java/io/spring/initializr/service/extension/SpringCloudFunctionRequestPostProcessor.java index f62ca75c..a70c5cbe 100644 --- a/initializr-service/src/main/java/io/spring/initializr/service/extension/SpringCloudFunctionRequestPostProcessor.java +++ b/initializr-service/src/main/java/io/spring/initializr/service/extension/SpringCloudFunctionRequestPostProcessor.java @@ -31,6 +31,7 @@ import org.springframework.stereotype.Component; * and/or platform dependencies requested. * * @author Dave Syer + * @author Stephane Nicoll */ @Component class SpringCloudFunctionRequestPostProcessor @@ -50,8 +51,9 @@ class SpringCloudFunctionRequestPostProcessor Dependency cloudFunction = getDependency(request, "cloud-function"); if (cloudFunction != null) { List swap = new ArrayList<>(); - if (hasDependency(request, "cloud-stream") - || hasDependency(request, "reactive-cloud-stream")) { + if ((hasDependency(request, "cloud-stream") + || hasDependency(request, "reactive-cloud-stream")) + && isSpringBootVersionBefore(request, VERSION_2_1_0_M1)) { swap.add(SCS_ADAPTER); } if (hasDependency(request, "web")) { diff --git a/initializr-service/src/test/java/io/spring/initializr/service/extension/SpringCloudFunctionRequestPostProcessorTests.java b/initializr-service/src/test/java/io/spring/initializr/service/extension/SpringCloudFunctionRequestPostProcessorTests.java index 0fd00a39..ede5050b 100644 --- a/initializr-service/src/test/java/io/spring/initializr/service/extension/SpringCloudFunctionRequestPostProcessorTests.java +++ b/initializr-service/src/test/java/io/spring/initializr/service/extension/SpringCloudFunctionRequestPostProcessorTests.java @@ -23,6 +23,7 @@ import org.junit.Test; * Tests for {@link SpringCloudFunctionRequestPostProcessor}. * * @author Dave Syer + * @author Stephane Nicoll */ public class SpringCloudFunctionRequestPostProcessorTests extends AbstractRequestPostProcessorTests { @@ -38,6 +39,7 @@ public class SpringCloudFunctionRequestPostProcessorTests public void springCloudStreamWithRabbit() { ProjectRequest request = createProjectRequest("cloud-stream", "amqp", "cloud-function"); + request.setBootVersion("2.0.6.RELEASE"); generateMavenPom(request).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("amqp")) .hasDependency(SpringCloudFunctionRequestPostProcessor.SCS_ADAPTER) @@ -48,12 +50,30 @@ public class SpringCloudFunctionRequestPostProcessorTests public void reactiveSpringCloudStreamWithKafka() { ProjectRequest request = createProjectRequest("reactive-cloud-stream", "kafka", "cloud-function"); + request.setBootVersion("2.0.6.RELEASE"); generateMavenPom(request).hasDependency(getDependency("reactive-cloud-stream")) .hasDependency(getDependency("kafka")) .hasDependency(SpringCloudFunctionRequestPostProcessor.SCS_ADAPTER) .hasDependenciesCount(6); } + @Test + public void springCloudStreamWith21() { + ProjectRequest request = createProjectRequest("cloud-stream", "cloud-function"); + request.setBootVersion("2.1.0.RC1"); + generateMavenPom(request).hasDependency(getDependency("cloud-stream")) + .hasDependency(getDependency("cloud-function")).hasDependenciesCount(4); + } + + @Test + public void reactiveSpringCloudStreamWith21() { + ProjectRequest request = createProjectRequest("reactive-cloud-stream", + "cloud-function"); + request.setBootVersion("2.1.0.RELEASE"); + generateMavenPom(request).hasDependency(getDependency("reactive-cloud-stream")) + .hasDependency(getDependency("cloud-function")).hasDependenciesCount(4); + } + @Test public void web() { ProjectRequest request = createProjectRequest("web", "cloud-function");