From 04b1de2d1dc82f976d6be82a86be34b3ac58515f Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Mon, 10 Aug 2015 14:32:50 +0200 Subject: [PATCH] Add package-name option for spring init For some reason, we forgot to add an attribute to customize the package name when using spring init. This is now the case. Closes gh-3716 --- .../boot/cli/command/init/InitCommand.java | 16 ++++++--- .../init/ProjectGenerationRequest.java | 35 ++++++++++++++----- .../cli/command/init/InitCommandTests.java | 7 ++-- .../init/ProjectGenerationRequestTests.java | 13 +++++-- 4 files changed, 51 insertions(+), 20 deletions(-) diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/InitCommand.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/InitCommand.java index 334bb5e6b0..ce18338a43 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/InitCommand.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/InitCommand.java @@ -89,10 +89,12 @@ public class InitCommand extends OptionParsingCommand { private OptionSpec description; - private OptionSpec packaging; + private OptionSpec packageName; private OptionSpec type; + private OptionSpec packaging; + private OptionSpec build; private OptionSpec format; @@ -140,13 +142,14 @@ public class InitCommand extends OptionParsingCommand { "Project name; infer application name").withRequiredArg(); this.description = option("description", "Project description") .withRequiredArg(); - this.packaging = option(Arrays.asList("packaging", "p"), - "Project packaging (for example 'jar')").withRequiredArg(); + this.packageName = option("package-name", "Package name").withRequiredArg(); this.type = option( Arrays.asList("type", "t"), "Project type. Not normally needed if you use --build " + "and/or --format. Check the capabilities of the service " + "(--list) for more details").withRequiredArg(); + this.packaging = option(Arrays.asList("packaging", "p"), + "Project packaging (for example 'jar')").withRequiredArg(); this.build = option("build", "Build system to use (for example 'maven' or 'gradle')") .withRequiredArg().defaultsTo("maven"); @@ -226,8 +229,8 @@ public class InitCommand extends OptionParsingCommand { if (options.has(this.javaVersion)) { request.setJavaVersion(options.valueOf(this.javaVersion)); } - if (options.has(this.packaging)) { - request.setPackaging(options.valueOf(this.packaging)); + if (options.has(this.packageName)) { + request.setPackageName(options.valueOf(this.packageName)); } request.setBuild(options.valueOf(this.build)); request.setFormat(options.valueOf(this.format)); @@ -235,6 +238,9 @@ public class InitCommand extends OptionParsingCommand { if (options.has(this.type)) { request.setType(options.valueOf(this.type)); } + if (options.has(this.packaging)) { + request.setPackaging(options.valueOf(this.packaging)); + } if (options.has(this.language)) { request.setLanguage(options.valueOf(this.language)); } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/ProjectGenerationRequest.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/ProjectGenerationRequest.java index 535c974acf..2ce8b6328e 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/ProjectGenerationRequest.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/command/init/ProjectGenerationRequest.java @@ -54,10 +54,12 @@ class ProjectGenerationRequest { private String description; - private String packaging; + private String packageName; private String type; + private String packaging; + private String build; private String format; @@ -178,15 +180,15 @@ class ProjectGenerationRequest { } /** - * The packaging type or {@code null} if it should not be customized. - * @return the packaging type or {@code null} + * Return the package name or {@code null} if it should not be customized. + * @return the package name or {@code null} */ - public String getPackaging() { - return this.packaging; + public String getPackageName() { + return packageName; } - public void setPackaging(String packaging) { - this.packaging = packaging; + public void setPackageName(String packageName) { + this.packageName = packageName; } /** @@ -202,6 +204,18 @@ class ProjectGenerationRequest { this.type = type; } + /** + * The packaging type or {@code null} if it should not be customized. + * @return the packaging type or {@code null} + */ + public String getPackaging() { + return this.packaging; + } + + public void setPackaging(String packaging) { + this.packaging = packaging; + } + /** * The build type to use. Ignored if a type is set. Can be used alongside the * {@link #getFormat() format} to identify the type to use. @@ -322,12 +336,15 @@ class ProjectGenerationRequest { if (this.description != null) { builder.setParameter("description", this.description); } - if (this.packaging != null) { - builder.setParameter("packaging", this.packaging); + if (this.packageName != null) { + builder.setParameter("packageName", this.packageName); } if (this.type != null) { builder.setParameter("type", projectType.getId()); } + if (this.packaging != null) { + builder.setParameter("packaging", this.packaging); + } if (this.javaVersion != null) { builder.setParameter("javaVersion", this.javaVersion); } diff --git a/spring-boot-cli/src/test/java/org/springframework/boot/cli/command/init/InitCommandTests.java b/spring-boot-cli/src/test/java/org/springframework/boot/cli/command/init/InitCommandTests.java index dc1f4a374d..41417a754c 100644 --- a/spring-boot-cli/src/test/java/org/springframework/boot/cli/command/init/InitCommandTests.java +++ b/spring-boot-cli/src/test/java/org/springframework/boot/cli/command/init/InitCommandTests.java @@ -266,18 +266,19 @@ public class InitCommandTests extends AbstractHttpClientMockTests { public void parseProjectOptions() throws Exception { this.handler.disableProjectGeneration(); this.command.run("-g=org.demo", "-a=acme", "-v=1.2.3-SNAPSHOT", "-n=acme-sample", - "--description=Acme sample project", "-p=war", "-t=ant-project", - "--build=grunt", "--format=web", "-j=1.9", "-l=groovy", + "--description=Acme sample project", "--package-name=demo.foo", "-t=ant-project", + "--build=grunt", "--format=web", "-p=war", "-j=1.9", "-l=groovy", "-b=1.2.0.RELEASE", "-d=web,data-jpa"); assertEquals("org.demo", this.handler.lastRequest.getGroupId()); assertEquals("acme", this.handler.lastRequest.getArtifactId()); assertEquals("1.2.3-SNAPSHOT", this.handler.lastRequest.getVersion()); assertEquals("acme-sample", this.handler.lastRequest.getName()); assertEquals("Acme sample project", this.handler.lastRequest.getDescription()); - assertEquals("war", this.handler.lastRequest.getPackaging()); + assertEquals("demo.foo", this.handler.lastRequest.getPackageName()); assertEquals("ant-project", this.handler.lastRequest.getType()); assertEquals("grunt", this.handler.lastRequest.getBuild()); assertEquals("web", this.handler.lastRequest.getFormat()); + assertEquals("war", this.handler.lastRequest.getPackaging()); assertEquals("1.9", this.handler.lastRequest.getJavaVersion()); assertEquals("groovy", this.handler.lastRequest.getLanguage()); assertEquals("1.2.0.RELEASE", this.handler.lastRequest.getBootVersion()); diff --git a/spring-boot-cli/src/test/java/org/springframework/boot/cli/command/init/ProjectGenerationRequestTests.java b/spring-boot-cli/src/test/java/org/springframework/boot/cli/command/init/ProjectGenerationRequestTests.java index ef8230ca34..9374b990aa 100644 --- a/spring-boot-cli/src/test/java/org/springframework/boot/cli/command/init/ProjectGenerationRequestTests.java +++ b/spring-boot-cli/src/test/java/org/springframework/boot/cli/command/init/ProjectGenerationRequestTests.java @@ -95,9 +95,9 @@ public class ProjectGenerationRequestTests { } @Test - public void customPackaging() { - this.request.setPackaging("war"); - assertEquals(createDefaultUrl("?packaging=war&type=test-type"), + public void customPackageName() { + this.request.setPackageName("demo.foo"); + assertEquals(createDefaultUrl("?packageName=demo.foo&type=test-type"), this.request.generateUrl(createDefaultMetadata())); } @@ -113,6 +113,13 @@ public class ProjectGenerationRequestTests { this.request.generateUrl(metadata)); } + @Test + public void customPackaging() { + this.request.setPackaging("war"); + assertEquals(createDefaultUrl("?type=test-type&packaging=war"), + this.request.generateUrl(createDefaultMetadata())); + } + @Test public void customLanguage() { this.request.setLanguage("groovy");