Polish "Derive package name from groupId and artifactId"

Closes gh-423
This commit is contained in:
Stephane Nicoll
2017-05-11 16:29:16 +02:00
parent bb578d6fdf
commit 767203b7d5
8 changed files with 139 additions and 78 deletions

View File

@@ -19,6 +19,8 @@ package io.spring.initializr.generator;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.springframework.util.StringUtils;
/** /**
* The base settings of a project request. Only these can be bound by user's * The base settings of a project request. Only these can be bound by user's
* input. * input.
@@ -142,8 +144,14 @@ public class BasicProjectRequest {
} }
public String getPackageName() { public String getPackageName() {
if (StringUtils.hasText(packageName)) {
return packageName; return packageName;
} }
if (StringUtils.hasText(groupId) && StringUtils.hasText(artifactId)) {
return getGroupId() + "." + getArtifactId();
}
return null;
}
public void setPackageName(String packageName) { public void setPackageName(String packageName) {
this.packageName = packageName; this.packageName = packageName;

View File

@@ -115,8 +115,12 @@ public class ProjectRequest extends BasicProjectRequest {
BeanWrapperImpl bean = new BeanWrapperImpl(this); BeanWrapperImpl bean = new BeanWrapperImpl(this);
metadata.defaults().forEach((key, value) -> { metadata.defaults().forEach((key, value) -> {
if (bean.isWritableProperty(key)) { if (bean.isWritableProperty(key)) {
// We want to be able to infer a package name if none has been
// explicitly set
if (!key.equals("packageName")) {
bean.setPropertyValue(key, value); bean.setPropertyValue(key, value);
} }
}
}); });
} }

View File

@@ -97,7 +97,7 @@ public class InitializrConfiguration {
if (!StringUtils.hasText(packageName)) { if (!StringUtils.hasText(packageName)) {
return defaultPackageName; return defaultPackageName;
} }
String candidate = String.join(".", packageName.trim().split("\\W+")); String candidate = cleanPackageName(packageName);
if (hasInvalidChar(candidate.replace(".", "")) if (hasInvalidChar(candidate.replace(".", ""))
|| env.invalidPackageNames.contains(candidate)) { || env.invalidPackageNames.contains(candidate)) {
return defaultPackageName; return defaultPackageName;
@@ -107,6 +107,11 @@ public class InitializrConfiguration {
} }
} }
static String cleanPackageName(String packageName) {
return String.join(".", packageName.trim().replaceAll("-", "").split("\\W+"))
.replaceAll("\\.[0-9]+", ".");
}
private static String unsplitWords(String text) { private static String unsplitWords(String text) {
return String return String
.join("", Arrays.stream(text .join("", Arrays.stream(text

View File

@@ -297,12 +297,10 @@ public class InitializrMetadata {
if (value != null) { if (value != null) {
return value; return value;
} }
else if(this.groupId.getContent() != null && this.artifactId.getContent() != null) { else if (this.groupId.getContent() != null
return this.groupId.getContent() && this.artifactId.getContent() != null) {
.concat(".") return InitializrConfiguration.cleanPackageName(
.concat(this.artifactId.getContent()) this.groupId.getContent() + "." + this.artifactId.getContent());
.replaceAll("-", "")
.replaceAll("\\.[0-9]+", ".");
} }
return null; return null;
} }

View File

@@ -197,6 +197,15 @@ public class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
"providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')"); "providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')");
} }
@Test
public void groupIdAndArtifactIdInferPackageName() {
ProjectRequest request = createProjectRequest("web");
request.setGroupId("org.acme");
request.setArtifactId("42foo");
generateProject(request)
.isJavaProject("org/acme/foo", "DemoApplication");
}
@Test @Test
public void springBoot11UseEnableAutoConfigurationJava() { public void springBoot11UseEnableAutoConfigurationJava() {
ProjectRequest request = createProjectRequest("web"); ProjectRequest request = createProjectRequest("web");

View File

@@ -28,6 +28,7 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.ExpectedException; import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
@@ -39,23 +40,22 @@ public class ProjectRequestTests {
@Rule @Rule
public final ExpectedException thrown = ExpectedException.none(); public final ExpectedException thrown = ExpectedException.none();
private InitializrMetadata metadata = InitializrMetadataTestBuilder
.withDefaults().build();
@Test @Test
public void initializeProjectRequest() { public void initializeGroupIdAndArtifactId() {
InitializrMetadata metadata = InitializrMetadataBuilder.create().build(); metadata = InitializrMetadataBuilder.create().build();
metadata.getGroupId().setContent("org.acme"); metadata.getGroupId().setContent("org.acme");
metadata.getArtifactId().setContent("my-project"); metadata.getArtifactId().setContent("my-project");
ProjectRequest request = new ProjectRequest(); ProjectRequest request = initProjectRequest();
request.initialize(metadata);
assertEquals("org.acme", request.getGroupId()); assertEquals("org.acme", request.getGroupId());
assertEquals("my-project", request.getArtifactId()); assertEquals("my-project", request.getArtifactId());
} }
@Test @Test
public void initializeProjectRequestWithDefaults() { public void initializeSetsMetadataDefaults() {
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() ProjectRequest request = initProjectRequest();
.build();
ProjectRequest request = new ProjectRequest();
request.initialize(metadata);
assertEquals(metadata.getName().getContent(), request.getName()); assertEquals(metadata.getName().getContent(), request.getName());
assertEquals(metadata.getTypes().getDefault().getId(), request.getType()); assertEquals(metadata.getTypes().getDefault().getId(), request.getType());
assertEquals(metadata.getDescription().getContent(), request.getDescription()); assertEquals(metadata.getDescription().getContent(), request.getDescription());
@@ -70,10 +70,9 @@ public class ProjectRequestTests {
@Test @Test
public void resolve() { public void resolve() {
ProjectRequest request = new ProjectRequest(); metadata = InitializrMetadataTestBuilder.withDefaults()
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", "web", "security", "spring-data").build(); .addDependencyGroup("code", "web", "security", "spring-data").build();
ProjectRequest request = initProjectRequest();
request.setType("maven-project"); request.setType("maven-project");
request.getStyle().addAll(Arrays.asList("web", "spring-data")); request.getStyle().addAll(Arrays.asList("web", "spring-data"));
request.resolve(metadata); request.resolve(metadata);
@@ -84,10 +83,9 @@ public class ProjectRequestTests {
@Test @Test
public void resolveWithDependencies() { public void resolveWithDependencies() {
ProjectRequest request = new ProjectRequest(); metadata = InitializrMetadataTestBuilder.withDefaults()
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", "web", "security", "spring-data").build(); .addDependencyGroup("code", "web", "security", "spring-data").build();
ProjectRequest request = initProjectRequest();
request.setType("maven-project"); request.setType("maven-project");
request.getDependencies().addAll(Arrays.asList("web", "spring-data")); request.getDependencies().addAll(Arrays.asList("web", "spring-data"));
request.resolve(metadata); request.resolve(metadata);
@@ -98,10 +96,10 @@ public class ProjectRequestTests {
@Test @Test
public void resolveFullMetadata() { public void resolveFullMetadata() {
ProjectRequest request = new ProjectRequest(); metadata = InitializrMetadataTestBuilder.withDefaults()
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", createDependency("org.foo", "acme", "1.2.0")) .addDependencyGroup("code", createDependency("org.foo", "acme", "1.2.0"))
.build(); .build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:acme"); request.getStyle().add("org.foo:acme");
request.resolve(metadata); request.resolve(metadata);
assertDependency(request.getResolvedDependencies().get(0), "org.foo", "acme", assertDependency(request.getResolvedDependencies().get(0), "org.foo", "acme",
@@ -110,10 +108,9 @@ public class ProjectRequestTests {
@Test @Test
public void resolveUnknownSimpleId() { public void resolveUnknownSimpleId() {
ProjectRequest request = new ProjectRequest(); metadata = InitializrMetadataTestBuilder.withDefaults()
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", "org.foo:bar").build(); .addDependencyGroup("code", "org.foo:bar").build();
ProjectRequest request = initProjectRequest();
request.getStyle().addAll(Arrays.asList("org.foo:bar", "foo-bar")); request.getStyle().addAll(Arrays.asList("org.foo:bar", "foo-bar"));
thrown.expect(InvalidProjectRequestException.class); thrown.expect(InvalidProjectRequestException.class);
@@ -124,10 +121,9 @@ public class ProjectRequestTests {
@Test @Test
public void resolveUnknownDependency() { public void resolveUnknownDependency() {
ProjectRequest request = new ProjectRequest(); metadata = InitializrMetadataTestBuilder.withDefaults()
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", "org.foo:bar").build(); .addDependencyGroup("code", "org.foo:bar").build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:acme"); // does not exist request.getStyle().add("org.foo:acme"); // does not exist
thrown.expect(InvalidProjectRequestException.class); thrown.expect(InvalidProjectRequestException.class);
@@ -138,12 +134,11 @@ public class ProjectRequestTests {
@Test @Test
public void resolveDependencyInRange() { public void resolveDependencyInRange() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = createDependency("org.foo", "bar", "1.2.0.RELEASE"); Dependency dependency = createDependency("org.foo", "bar", "1.2.0.RELEASE");
dependency.setVersionRange("[1.0.1.RELEASE, 1.2.0.RELEASE)"); dependency.setVersionRange("[1.0.1.RELEASE, 1.2.0.RELEASE)");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", dependency).build(); .addDependencyGroup("code", dependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:bar"); request.getStyle().add("org.foo:bar");
request.setBootVersion("1.1.2.RELEASE"); request.setBootVersion("1.1.2.RELEASE");
request.resolve(metadata); request.resolve(metadata);
@@ -151,12 +146,11 @@ public class ProjectRequestTests {
@Test @Test
public void resolveDependencyNotInRange() { public void resolveDependencyNotInRange() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = createDependency("org.foo", "bar", "1.2.0.RELEASE"); Dependency dependency = createDependency("org.foo", "bar", "1.2.0.RELEASE");
dependency.setVersionRange("[1.0.1.RELEASE, 1.2.0.RELEASE)"); dependency.setVersionRange("[1.0.1.RELEASE, 1.2.0.RELEASE)");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", dependency).build(); .addDependencyGroup("code", dependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:bar"); request.getStyle().add("org.foo:bar");
request.setBootVersion("0.9.9.RELEASE"); request.setBootVersion("0.9.9.RELEASE");
@@ -173,10 +167,10 @@ public class ProjectRequestTests {
"[1.0.0.RELEASE, 1.1.0.RELEASE)", null, null, "0.1.0.RELEASE")); "[1.0.0.RELEASE, 1.1.0.RELEASE)", null, null, "0.1.0.RELEASE"));
dependency.getMappings().add(Mapping.create( dependency.getMappings().add(Mapping.create(
"1.1.0.RELEASE", null, null, "0.2.0.RELEASE")); "1.1.0.RELEASE", null, null, "0.2.0.RELEASE"));
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", dependency).build(); .addDependencyGroup("code", dependency).build();
ProjectRequest request = new ProjectRequest(); ProjectRequest request = initProjectRequest();
request.setBootVersion("1.0.5.RELEASE"); request.setBootVersion("1.0.5.RELEASE");
request.getStyle().add("org.foo:bar"); request.getStyle().add("org.foo:bar");
request.resolve(metadata); request.resolve(metadata);
@@ -193,31 +187,25 @@ public class ProjectRequestTests {
@Test @Test
public void resolveBuild() { public void resolveBuild() {
ProjectRequest request = new ProjectRequest(); ProjectRequest request = initProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
request.setType("gradle-project"); request.setType("gradle-project");
request.resolve(metadata); request.resolve(metadata);
assertEquals("gradle", request.getBuild()); assertEquals("gradle", request.getBuild());
} }
@Test @Test
public void resolveBuildNoTag() { public void resolveBuildNoTag() {
ProjectRequest request = new ProjectRequest(); metadata = InitializrMetadataTestBuilder.withDefaults()
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addType("foo", false, "/foo.zip", null, null).build(); .addType("foo", false, "/foo.zip", null, null).build();
ProjectRequest request = initProjectRequest();
request.setType("foo"); request.setType("foo");
request.resolve(metadata); request.resolve(metadata);
assertNull(request.getBuild()); assertNull(request.getBuild());
} }
@Test @Test
public void resolveUnknownType() { public void resolveUnknownType() {
ProjectRequest request = new ProjectRequest(); ProjectRequest request = initProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
request.setType("foo-project"); request.setType("foo-project");
thrown.expect(InvalidProjectRequestException.class); thrown.expect(InvalidProjectRequestException.class);
@@ -227,10 +215,8 @@ public class ProjectRequestTests {
@Test @Test
public void resolveApplicationNameWithNoName() { public void resolveApplicationNameWithNoName() {
ProjectRequest request = new ProjectRequest(); ProjectRequest request = initProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() request.setName(null);
.build();
request.resolve(metadata); request.resolve(metadata);
assertEquals(metadata.getConfiguration().getEnv().getFallbackApplicationName(), assertEquals(metadata.getConfiguration().getEnv().getFallbackApplicationName(),
request.getApplicationName()); request.getApplicationName());
@@ -238,60 +224,96 @@ public class ProjectRequestTests {
@Test @Test
public void resolveApplicationName() { public void resolveApplicationName() {
ProjectRequest request = new ProjectRequest(); ProjectRequest request = initProjectRequest();
request.setName("Foo2"); request.setName("Foo2");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
request.resolve(metadata); request.resolve(metadata);
assertEquals("Foo2Application", request.getApplicationName()); assertEquals("Foo2Application", request.getApplicationName());
} }
@Test @Test
public void resolveApplicationNameWithApplicationNameSet() { public void resolveApplicationNameWithApplicationNameSet() {
ProjectRequest request = new ProjectRequest(); ProjectRequest request = initProjectRequest();
request.setName("Foo2"); request.setName("Foo2");
request.setApplicationName("MyApplicationName"); request.setApplicationName("MyApplicationName");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
request.resolve(metadata); request.resolve(metadata);
assertEquals("MyApplicationName", request.getApplicationName()); assertEquals("MyApplicationName", request.getApplicationName());
} }
@Test @Test
public void cleanPackageNameWithNoName() { public void packageNameInferredByGroupIdAndArtifactId() {
ProjectRequest request = initProjectRequest();
request.setGroupId("org.acme");
request.setArtifactId("foo");
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("org.acme.foo");
}
@Test
public void packageNameInferredByGroupIdAndCompositeArtifactId() {
ProjectRequest request = initProjectRequest();
request.setGroupId("org.acme");
request.setArtifactId("foo-bar");
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("org.acme.foobar");
}
@Test
public void packageNameUseFallbackIfGroupIdNotSet() {
ProjectRequest request = initProjectRequest();
request.setGroupId(null);
request.setArtifactId("foo");
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("com.example.demo");
}
@Test
public void packageNameUseFallbackIfArtifactIdNotSet() {
ProjectRequest request = initProjectRequest();
request.setGroupId("org.acme");
request.setArtifactId(null);
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("com.example.demo");
}
@Test
public void cleanPackageNameLeadingNumbers() {
ProjectRequest request = new ProjectRequest(); ProjectRequest request = new ProjectRequest();
request.setPackageName("org.foo.42bar");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build(); .build();
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("org.foo.bar");
}
@Test
public void cleanPackageNameWithNoName() {
ProjectRequest request = initProjectRequest();
request.resolve(metadata); request.resolve(metadata);
assertEquals(metadata.getPackageName().getContent(), request.getPackageName()); assertEquals(metadata.getPackageName().getContent(), request.getPackageName());
} }
@Test @Test
public void cleanPackageName() { public void cleanPackageName() {
ProjectRequest request = new ProjectRequest(); ProjectRequest request = initProjectRequest();
request.setPackageName("com:foo bar"); request.setPackageName("com:foo bar");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
request.resolve(metadata); request.resolve(metadata);
assertEquals("com.foo.bar", request.getPackageName()); assertEquals("com.foo.bar", request.getPackageName());
} }
@Test @Test
public void resolveAdditionalBoms() { public void resolveAdditionalBoms() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = Dependency.withId("foo"); Dependency dependency = Dependency.withId("foo");
dependency.setBom("foo-bom"); dependency.setBom("foo-bom");
BillOfMaterials bom = BillOfMaterials.create("com.example", "foo-bom", "1.0.0"); BillOfMaterials bom = BillOfMaterials.create("com.example", "foo-bom", "1.0.0");
bom.getAdditionalBoms().add("bar-bom"); bom.getAdditionalBoms().add("bar-bom");
BillOfMaterials additionalBom = BillOfMaterials.create("com.example", "bar-bom", BillOfMaterials additionalBom = BillOfMaterials.create("com.example", "bar-bom",
"1.1.0"); "1.1.0");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() metadata = InitializrMetadataTestBuilder.withDefaults()
.addBom("foo-bom", bom).addBom("bar-bom", additionalBom) .addBom("foo-bom", bom).addBom("bar-bom", additionalBom)
.addDependencyGroup("test", dependency).build(); .addDependencyGroup("test", dependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("foo"); request.getStyle().add("foo");
request.resolve(metadata); request.resolve(metadata);
assertEquals(1, (request.getResolvedDependencies().size())); assertEquals(1, (request.getResolvedDependencies().size()));
@@ -302,7 +324,6 @@ public class ProjectRequestTests {
@Test @Test
public void resolveAdditionalBomsDuplicates() { public void resolveAdditionalBomsDuplicates() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = Dependency.withId("foo"); Dependency dependency = Dependency.withId("foo");
dependency.setBom("foo-bom"); dependency.setBom("foo-bom");
Dependency anotherDependency = Dependency.withId("bar"); Dependency anotherDependency = Dependency.withId("bar");
@@ -311,9 +332,10 @@ public class ProjectRequestTests {
bom.getAdditionalBoms().add("bar-bom"); bom.getAdditionalBoms().add("bar-bom");
BillOfMaterials additionalBom = BillOfMaterials.create("com.example", "bar-bom", BillOfMaterials additionalBom = BillOfMaterials.create("com.example", "bar-bom",
"1.1.0"); "1.1.0");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() metadata = InitializrMetadataTestBuilder.withDefaults()
.addBom("foo-bom", bom).addBom("bar-bom", additionalBom) .addBom("foo-bom", bom).addBom("bar-bom", additionalBom)
.addDependencyGroup("test", dependency, anotherDependency).build(); .addDependencyGroup("test", dependency, anotherDependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().addAll(Arrays.asList("foo", "bar")); request.getStyle().addAll(Arrays.asList("foo", "bar"));
request.resolve(metadata); request.resolve(metadata);
assertEquals(2, request.getResolvedDependencies().size()); assertEquals(2, request.getResolvedDependencies().size());
@@ -324,17 +346,17 @@ public class ProjectRequestTests {
@Test @Test
public void resolveAdditionalRepositories() { public void resolveAdditionalRepositories() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = Dependency.withId("foo"); Dependency dependency = Dependency.withId("foo");
dependency.setBom("foo-bom"); dependency.setBom("foo-bom");
dependency.setRepository("foo-repo"); dependency.setRepository("foo-repo");
BillOfMaterials bom = BillOfMaterials.create("com.example", "foo-bom", "1.0.0"); BillOfMaterials bom = BillOfMaterials.create("com.example", "foo-bom", "1.0.0");
bom.getRepositories().add("bar-repo"); bom.getRepositories().add("bar-repo");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() metadata = InitializrMetadataTestBuilder.withDefaults()
.addBom("foo-bom", bom) .addBom("foo-bom", bom)
.addRepository("foo-repo", "foo-repo", "http://example.com/foo", false) .addRepository("foo-repo", "foo-repo", "http://example.com/foo", false)
.addRepository("bar-repo", "bar-repo", "http://example.com/bar", false) .addRepository("bar-repo", "bar-repo", "http://example.com/bar", false)
.addDependencyGroup("test", dependency).build(); .addDependencyGroup("test", dependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("foo"); request.getStyle().add("foo");
request.resolve(metadata); request.resolve(metadata);
assertEquals(1, request.getResolvedDependencies().size()); assertEquals(1, request.getResolvedDependencies().size());
@@ -350,7 +372,6 @@ public class ProjectRequestTests {
@Test @Test
public void resolveAdditionalRepositoriesDuplicates() { public void resolveAdditionalRepositoriesDuplicates() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = Dependency.withId("foo"); Dependency dependency = Dependency.withId("foo");
dependency.setBom("foo-bom"); dependency.setBom("foo-bom");
dependency.setRepository("foo-repo"); dependency.setRepository("foo-repo");
@@ -358,11 +379,12 @@ public class ProjectRequestTests {
bom.getRepositories().add("bar-repo"); bom.getRepositories().add("bar-repo");
Dependency anotherDependency = Dependency.withId("bar"); Dependency anotherDependency = Dependency.withId("bar");
anotherDependency.setRepository("bar-repo"); anotherDependency.setRepository("bar-repo");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() metadata = InitializrMetadataTestBuilder.withDefaults()
.addBom("foo-bom", bom) .addBom("foo-bom", bom)
.addRepository("foo-repo", "foo-repo", "http://example.com/foo", false) .addRepository("foo-repo", "foo-repo", "http://example.com/foo", false)
.addRepository("bar-repo", "bar-repo", "http://example.com/bar", false) .addRepository("bar-repo", "bar-repo", "http://example.com/bar", false)
.addDependencyGroup("test", dependency, anotherDependency).build(); .addDependencyGroup("test", dependency, anotherDependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().addAll(Arrays.asList("foo", "bar")); request.getStyle().addAll(Arrays.asList("foo", "bar"));
request.resolve(metadata); request.resolve(metadata);
assertEquals(2, request.getResolvedDependencies().size()); assertEquals(2, request.getResolvedDependencies().size());
@@ -376,6 +398,12 @@ public class ProjectRequestTests {
request.getRepositories().get("bar-repo")); request.getRepositories().get("bar-repo"));
} }
private ProjectRequest initProjectRequest() {
ProjectRequest request = new ProjectRequest();
request.initialize(this.metadata);
return request;
}
private static void assertBootStarter(Dependency actual, String name) { private static void assertBootStarter(Dependency actual, String name) {
Dependency expected = new Dependency(); Dependency expected = new Dependency();
expected.asSpringBootStarter(name); expected.asSpringBootStarter(name);

View File

@@ -124,7 +124,7 @@ public class InitializrConfigurationTests {
@Test @Test
public void generatePackageNameMultipleDashers() { public void generatePackageNameMultipleDashers() {
assertEquals("com.foo", this.properties.cleanPackageName("com--foo", "com.example")); assertEquals("com.foobar", this.properties.cleanPackageName("com.foo--bar", "com.example"));
} }
@Test @Test

View File

@@ -149,8 +149,8 @@ public class ProjectGenerationSmokeTests
HomePage page = toHome(); HomePage page = toHome();
page.groupId("org.foo"); page.groupId("org.foo");
page.submit(); page.submit();
zipProjectAssert(from("demo.zip")).hasBaseDir("demo").isJavaProject("org.foo", zipProjectAssert(from("demo.zip")).hasBaseDir("demo")
"DemoApplication"); .isJavaProject("org.foo.demo", "DemoApplication");
} }
@Test @Test
@@ -159,7 +159,16 @@ public class ProjectGenerationSmokeTests
page.artifactId("my-project"); page.artifactId("my-project");
page.submit(); page.submit();
zipProjectAssert(from("my-project.zip")).hasBaseDir("my-project") zipProjectAssert(from("my-project.zip")).hasBaseDir("my-project")
.isJavaProject("com.example", "MyProjectApplication"); .isJavaProject("com.example.myproject", "MyProjectApplication");
}
@Test
public void customArtifactIdWithInvalidPackageNameIsHandled() throws Exception {
HomePage page = toHome();
page.artifactId("42my-project");
page.submit();
zipProjectAssert(from("42my-project.zip")).hasBaseDir("42my-project")
.isJavaProject("com.example.myproject", "Application");
} }
@Test @Test
@@ -333,7 +342,7 @@ public class ProjectGenerationSmokeTests
page.submit(); page.submit();
ProjectAssert projectAssert = zipProjectAssert(from("my-project.zip")); ProjectAssert projectAssert = zipProjectAssert(from("my-project.zip"));
projectAssert.hasBaseDir("my-project").isMavenProject() projectAssert.hasBaseDir("my-project").isMavenProject()
.isJavaProject("com.example.acme", "MyProjectApplication") .isJavaProject("com.example.acme.myproject", "MyProjectApplication")
.hasStaticAndTemplatesResources(false).pomAssert() .hasStaticAndTemplatesResources(false).pomAssert()
.hasGroupId("com.example.acme").hasArtifactId("my-project") .hasGroupId("com.example.acme").hasArtifactId("my-project")
.hasDependenciesCount(2).hasSpringBootStarterRootDependency() .hasDependenciesCount(2).hasSpringBootStarterRootDependency()