diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java index dba03496..e0cb74ef 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java @@ -434,8 +434,9 @@ public class ProjectGenerator { // New testing stuff model.put("newTestInfrastructure", isNewTestInfrastructureAvailable(request)); - // New Servlet Initializer location - model.put("newServletInitializer", isNewServletInitializerAvailable(request)); + // Servlet Initializer + model.put("servletInitializrImport", generateImport(getServletInitializrClass(request), + request.getLanguage())); // Java versions model.put("isJava6", isJavaVersion(request, "1.6")); @@ -512,6 +513,19 @@ public class ProjectGenerator { model.put("testAnnotations", testAnnotations); } + protected String getServletInitializrClass(ProjectRequest request) { + Version bootVersion = Version.safeParse(request.getBootVersion()); + if (VERSION_1_4_0_M3.compareTo(bootVersion) > 0) { + return "org.springframework.boot.context.web.SpringBootServletInitializer"; + } + else if (VERSION_2_0_0_M1.compareTo(bootVersion) > 0) { + return "org.springframework.boot.web.support.SpringBootServletInitializer"; + } + else { + return "org.springframework.boot.web.servlet.support.SpringBootServletInitializer"; + } + } + protected String generateImport(String type, String language) { String end = ("groovy".equals(language) || "kotlin".equals(language)) ? "" : ";"; return "import " + type + end; @@ -534,11 +548,6 @@ public class ProjectGenerator { .compareTo(Version.safeParse(request.getBootVersion())) <= 0; } - private static boolean isNewServletInitializerAvailable(ProjectRequest request) { - return VERSION_1_4_0_M3 - .compareTo(Version.safeParse(request.getBootVersion())) <= 0; - } - private static boolean isGradle3Available(Version bootVersion) { return VERSION_1_5_0_M1.compareTo(bootVersion) <= 0; } diff --git a/initializr-generator/src/main/resources/templates/ServletInitializer.groovy b/initializr-generator/src/main/resources/templates/ServletInitializer.groovy index 62c2dfa6..4d8ec35f 100644 --- a/initializr-generator/src/main/resources/templates/ServletInitializer.groovy +++ b/initializr-generator/src/main/resources/templates/ServletInitializer.groovy @@ -1,12 +1,7 @@ package {{packageName}} import org.springframework.boot.builder.SpringApplicationBuilder -{{#newServletInitializer}} -import org.springframework.boot.web.support.SpringBootServletInitializer -{{/newServletInitializer}} -{{^newServletInitializer}} -import org.springframework.boot.context.web.SpringBootServletInitializer -{{/newServletInitializer}} +{{servletInitializrImport}} class ServletInitializer extends SpringBootServletInitializer { diff --git a/initializr-generator/src/main/resources/templates/ServletInitializer.java b/initializr-generator/src/main/resources/templates/ServletInitializer.java index 7f705642..86d0e665 100644 --- a/initializr-generator/src/main/resources/templates/ServletInitializer.java +++ b/initializr-generator/src/main/resources/templates/ServletInitializer.java @@ -1,12 +1,7 @@ package {{packageName}}; import org.springframework.boot.builder.SpringApplicationBuilder; -{{#newServletInitializer}} -import org.springframework.boot.web.support.SpringBootServletInitializer; -{{/newServletInitializer}} -{{^newServletInitializer}} -import org.springframework.boot.context.web.SpringBootServletInitializer; -{{/newServletInitializer}} +{{servletInitializrImport}} public class ServletInitializer extends SpringBootServletInitializer { diff --git a/initializr-generator/src/main/resources/templates/ServletInitializer.kt b/initializr-generator/src/main/resources/templates/ServletInitializer.kt index b241240e..3faa5e61 100644 --- a/initializr-generator/src/main/resources/templates/ServletInitializer.kt +++ b/initializr-generator/src/main/resources/templates/ServletInitializer.kt @@ -1,12 +1,7 @@ package {{packageName}} import org.springframework.boot.builder.SpringApplicationBuilder -{{#newServletInitializer}} -import org.springframework.boot.web.support.SpringBootServletInitializer -{{/newServletInitializer}} -{{^newServletInitializer}} -import org.springframework.boot.context.web.SpringBootServletInitializer -{{/newServletInitializer}} +{{servletInitializrImport}} class ServletInitializer : SpringBootServletInitializer() { diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorLanguageTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorLanguageTests.java index 8d2f2a8f..84fd027b 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorLanguageTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/ProjectGeneratorLanguageTests.java @@ -120,6 +120,12 @@ public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests testServletInitializr("1.4.0.M3", "spring-boot-1.4"); } + @Test + public void springBoot2ServletInitializer() { + testServletInitializr("2.0.0.M3", "spring-boot-2.0"); + } + + private void testServletInitializr(String bootVersion, String expectedOutput) { ProjectRequest request = createProjectRequest(); request.setLanguage(language); diff --git a/initializr-generator/src/test/resources/project/groovy/spring-boot-2.0/ServletInitializer.groovy.gen b/initializr-generator/src/test/resources/project/groovy/spring-boot-2.0/ServletInitializer.groovy.gen new file mode 100644 index 00000000..b6eee448 --- /dev/null +++ b/initializr-generator/src/test/resources/project/groovy/spring-boot-2.0/ServletInitializer.groovy.gen @@ -0,0 +1,13 @@ +package com.example.demo + +import org.springframework.boot.builder.SpringApplicationBuilder +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer + +class ServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + application.sources(DemoApplication) + } + +} diff --git a/initializr-generator/src/test/resources/project/java/spring-boot-2.0/ServletInitializer.java.gen b/initializr-generator/src/test/resources/project/java/spring-boot-2.0/ServletInitializer.java.gen new file mode 100644 index 00000000..894117f9 --- /dev/null +++ b/initializr-generator/src/test/resources/project/java/spring-boot-2.0/ServletInitializer.java.gen @@ -0,0 +1,13 @@ +package com.example.demo; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +public class ServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(DemoApplication.class); + } + +} diff --git a/initializr-generator/src/test/resources/project/kotlin/spring-boot-2.0/ServletInitializer.kt.gen b/initializr-generator/src/test/resources/project/kotlin/spring-boot-2.0/ServletInitializer.kt.gen new file mode 100644 index 00000000..aa993203 --- /dev/null +++ b/initializr-generator/src/test/resources/project/kotlin/spring-boot-2.0/ServletInitializer.kt.gen @@ -0,0 +1,12 @@ +package com.example.demo + +import org.springframework.boot.builder.SpringApplicationBuilder +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer + +class ServletInitializer : SpringBootServletInitializer() { + + override fun configure(application: SpringApplicationBuilder) : SpringApplicationBuilder { + return application.sources(DemoApplication::class.java) + } + +}