Skip to content

Commit 96c7966

Browse files
authored
Merge pull request #682 from cescoffier/features/fix-maven-generation-regressions
Fix a few maven generation regressions.
2 parents 8fad594 + 93262c4 commit 96c7966

File tree

7 files changed

+291
-107
lines changed

7 files changed

+291
-107
lines changed

cli/common/src/main/java/org/jboss/shamrock/BasicRest.java

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
public class BasicRest extends ShamrockTemplate {
2222
private Map<String, Object> context;
23-
private String className = "ShamrockResource";
23+
private String className;
2424
private String path = "/hello";
2525
private File projectRoot;
2626
private File srcMain;
@@ -39,37 +39,43 @@ public void generate(final File projectRoot, Map<String, Object> parameters) thr
3939
initProject();
4040
setupContext();
4141

42-
createClasses();
42+
if (className != null) {
43+
createClasses();
44+
}
4345
createIndexPage();
4446
createDockerFile();
4547
createMicroProfileConfig();
4648
}
4749

4850
private void setupContext() {
4951
MojoUtils.getAllProperties().forEach((k, v) -> context.put(k.replace("-", "_"), v));
50-
String packageName = (String) context.get(PACKAGE_NAME);
51-
if (className.endsWith(MojoUtils.JAVA_EXTENSION)) {
52-
className = className.substring(0, className.length() - MojoUtils.JAVA_EXTENSION.length());
53-
}
5452

55-
if (className.contains(".")) {
56-
int idx = className.lastIndexOf('.');
57-
packageName = className.substring(0, idx);
58-
className = className.substring(idx + 1);
59-
}
53+
if (className != null) {
54+
String packageName = (String) context.get(PACKAGE_NAME);
6055

61-
if (packageName != null) {
62-
File packageDir = new File(srcMain, packageName.replace('.', '/'));
63-
File testPackageDir = new File(testMain, packageName.replace('.', '/'));
64-
srcMain = mkdirs(packageDir);
65-
testMain = mkdirs(testPackageDir);
66-
}
56+
if (className.endsWith(MojoUtils.JAVA_EXTENSION)) {
57+
className = className.substring(0, className.length() - MojoUtils.JAVA_EXTENSION.length());
58+
}
6759

68-
context.put(CLASS_NAME, className);
69-
context.put(RESOURCE_PATH, path);
60+
if (className.contains(".")) {
61+
int idx = className.lastIndexOf('.');
62+
packageName = className.substring(0, idx);
63+
className = className.substring(idx + 1);
64+
}
65+
66+
if (packageName != null) {
67+
File packageDir = new File(srcMain, packageName.replace('.', '/'));
68+
File testPackageDir = new File(testMain, packageName.replace('.', '/'));
69+
srcMain = mkdirs(packageDir);
70+
testMain = mkdirs(testPackageDir);
71+
}
7072

71-
if (packageName != null) {
72-
context.put(PACKAGE_NAME, packageName);
73+
context.put(CLASS_NAME, className);
74+
context.put(RESOURCE_PATH, path);
75+
76+
if (packageName != null) {
77+
context.put(PACKAGE_NAME, packageName);
78+
}
7379
}
7480
}
7581

@@ -96,9 +102,8 @@ private boolean initProject() throws IOException {
96102
context.put(PROJECT_ARTIFACT_ID, model.getArtifactId());
97103
}
98104

99-
className = get("className",
100-
format("%s.%s.%s", context.get(PROJECT_GROUP_ID), context.get(PROJECT_ARTIFACT_ID),
101-
"MyResource"));
105+
// If className is null we disable the generation of the Jax-RS resource.
106+
className = get("className", null);
102107
path = get(RESOURCE_PATH, path);
103108

104109
srcMain = mkdirs(new File(projectRoot, "src/main/java"));
@@ -115,7 +120,9 @@ private void generate(final String templateName, final Map<String, Object> conte
115120
final BufferedReader stream = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(path)))) {
116121
String template = stream.lines().collect(Collectors.joining("\n"));
117122
for (Entry<String, Object> e : context.entrySet()) {
118-
template = template.replace(format("${%s}", e.getKey()), e.getValue().toString());
123+
if (e.getValue() != null) { // Exclude null values (classname and path can be null)
124+
template = template.replace(format("${%s}", e.getKey()), e.getValue().toString());
125+
}
119126
}
120127
out.write(template);
121128
}

cli/common/src/test/java/org/jboss/shamrock/cli/commands/CreateProjectTest.java

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public void create() throws IOException {
3131
}
3232

3333
@Test
34-
public void createOnTopPom() throws IOException {
34+
public void createOnTopPomWithoutResource() throws IOException {
3535
final File testDir = new File("target/existing");
3636
delete(testDir);
3737
testDir.mkdirs();
@@ -55,12 +55,60 @@ public void createOnTopPom() throws IOException {
5555
assertThat(new File(testDir, "src/test/java")).isDirectory();
5656

5757
assertThat(new File(testDir, "src/main/resources/META-INF/microprofile-config.properties")).exists();
58-
assertThat(new File(testDir, "src/main/resources/META-INF/resources/index.html")).exists();
58+
assertThat(new File(testDir, "src/main/resources/META-INF/resources/index.html")).isFile();
59+
assertThat(new File(testDir, "src/main/java")).isDirectory().matches(f -> {
60+
String[] list = f.list();
61+
return list != null && list.length == 0;
62+
});
63+
assertThat(new File(testDir, "src/test/java")).isDirectory().matches(f -> {
64+
String[] list = f.list();
65+
return list != null && list.length == 0;
66+
});
5967

6068
assertThat(FileUtils.readFileToString(new File(testDir, "pom.xml"), "UTF-8"))
6169
.containsIgnoringCase(getBomArtifactId());
6270

6371
}
72+
73+
74+
@Test
75+
public void createOnTopPomWithResource() throws IOException {
76+
final File testDir = new File("target/existing");
77+
delete(testDir);
78+
testDir.mkdirs();
79+
80+
Model model = new Model();
81+
model.setModelVersion("4.0.0");
82+
model.setGroupId("com.acme");
83+
model.setArtifactId("foobar");
84+
model.setVersion("10.1.2");
85+
final File pom = new File(testDir, "pom.xml");
86+
MojoUtils.write(model, pom);
87+
final CreateProject createProject = new CreateProject(testDir).groupId("something.is")
88+
.artifactId("wrong")
89+
.version("1.0.0-SNAPSHOT");
90+
91+
Map<String, Object> ctxt = new HashMap<>();
92+
ctxt.put("className", "org.foo.MyResource");
93+
Assertions.assertTrue(createProject.doCreateProject(ctxt));
94+
95+
assertThat(FileUtils.readFileToString(pom, "UTF-8"))
96+
.contains(getPluginArtifactId(), SHAMROCK_VERSION_PROPERTY, getPluginGroupId());
97+
assertThat(new File(testDir, "src/main/java")).isDirectory();
98+
assertThat(new File(testDir, "src/test/java")).isDirectory();
99+
100+
assertThat(new File(testDir, "src/main/resources/META-INF/microprofile-config.properties")).exists();
101+
assertThat(new File(testDir, "src/main/resources/META-INF/resources/index.html")).exists();
102+
assertThat(new File(testDir, "src/main/java")).isDirectory();
103+
assertThat(new File(testDir, "src/main/java/org/foo/MyResource.java")).isFile();
104+
assertThat(new File(testDir, "src/test/java")).isDirectory();
105+
assertThat(new File(testDir, "src/test/java/org/foo/MyResourceTest.java")).isFile();
106+
107+
assertThat(FileUtils.readFileToString(new File(testDir, "pom.xml"), "UTF-8"))
108+
.containsIgnoringCase(getBomArtifactId());
109+
110+
}
111+
64112
@Test
65113
public void createNewWithCustomizations() throws IOException {
66114
final File testDir = new File("target/existing");

0 commit comments

Comments
 (0)