Skip to content

Commit c1c3d11

Browse files
committed
Adds template openj9
1 parent 9fa9164 commit c1c3d11

File tree

12 files changed

+302
-3
lines changed

12 files changed

+302
-3
lines changed

generator-core/src/main/java/br/com/generator/core/Generator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ public File addDependency(GeneratorOptions generatorOptions) throws IOException
2121
return generator.addDependecies(generatorOptions);
2222
}
2323

24+
public File addMavenPlugin(GeneratorOptions generatorOptions) throws IOException {
25+
return generator.addMavenPlugin(generatorOptions);
26+
}
27+
2428
public File addProperties(GeneratorOptions generatorOptions) throws IOException {
2529
return generator.addProperties(generatorOptions);
2630
}

generator-core/src/main/java/br/com/generator/core/GeneratorExecutor.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,18 @@ public File addDependecies(GeneratorOptions options) throws IOException {
3939
return fileGenerated;
4040
}
4141

42+
public File addMavenPlugin(GeneratorOptions options) throws IOException {
43+
String contentTemplate = loadPom(options.getTemplatePath());
44+
String contentReplaced = templateEngine.replaceValues(contentTemplate, options.getKeyValue());
45+
String addPluginValues = templateEngine.replaceValues(contentReplaced, options.getPluginValues());
46+
47+
File fileGenerated = new File(options.getDestination());
48+
FileUtils.writeStringToFile(fileGenerated, addPluginValues);
49+
50+
System.out.println("Add maven plugin in ".concat(options.getName()));
51+
return fileGenerated;
52+
}
53+
4254
public File addProperties(GeneratorOptions options) throws IOException {
4355
File loadFiled = new File(options.getTemplatePath());
4456

generator-core/src/main/java/br/com/generator/core/GeneratorOptions.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class GeneratorOptions {
88
private String templatePath;
99
private String name;
1010
private String properties;
11+
private Map<String, String> pluginValues;
1112
private Map<String, String> keyValue;
1213

1314
public String getDestination() {
@@ -49,4 +50,12 @@ public String getProperties() {
4950
public void setProperties(String properties) {
5051
this.properties = properties;
5152
}
53+
54+
public Map<String, String> getPluginValues() {
55+
return pluginValues;
56+
}
57+
58+
public void setPluginValues(Map<String, String> pluginValues) {
59+
this.pluginValues = pluginValues;
60+
}
5261
}

spring-boot-generate/pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,11 @@
5656
<artifactId>scala-library</artifactId>
5757
<version>2.11.0</version>
5858
</dependency>
59-
</dependencies>
59+
<dependency>
60+
<groupId>br.com.netodevel</groupId>
61+
<artifactId>generator-core</artifactId>
62+
<version>0.0.2.BUILD-SNAPSHOT</version>
63+
<scope>compile</scope>
64+
</dependency>
65+
</dependencies>
6066
</project>

spring-boot-generate/src/main/java/br/com/generate/helpers/ScaffoldInfoHelper.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
package br.com.generate.helpers;
22

3+
import br.com.generator.core.GeneratorExecutor;
4+
import br.com.generator.core.TemplateEngine;
35
import org.apache.commons.lang.SystemUtils;
46

57
import java.io.*;
68
import java.net.URISyntaxException;
9+
import java.nio.file.Files;
10+
import java.nio.file.Path;
711
import java.nio.file.Paths;
12+
import java.util.stream.Collectors;
13+
import java.util.stream.Stream;
814

915

1016
/**
@@ -137,4 +143,29 @@ public String getApplicationPropertiesDest() throws URISyntaxException {
137143
return getUserDir().concat("/src/main/resources/application.properties");
138144
}
139145

146+
public String getPathMainClass() {
147+
try (Stream<Path> paths = Files.walk(Paths.get(this.getUserDir()))) {
148+
String mainClass = paths
149+
.filter(Files::isRegularFile)
150+
.map(this::findMainClass).collect(Collectors.joining());
151+
return this.getPackage().concat(".").concat(mainClass).replace(".java", "");
152+
} catch (IOException e) {
153+
System.out.println("ERROR: ".concat(e.getMessage()));
154+
return null;
155+
}
156+
}
157+
158+
private String findMainClass(Path s) {
159+
try {
160+
String x = new GeneratorExecutor(new TemplateEngine()).loadPom(s.toAbsolutePath().toString());
161+
if (x.contains("@SpringBootApplication")) {
162+
File file = new File(s.toAbsolutePath().toString());
163+
return file.getName();
164+
}
165+
} catch (IOException e) {
166+
System.out.println("ERROR: ".concat(e.getMessage()));
167+
}
168+
return "";
169+
}
170+
140171
}

spring-scaffold-cli/src/main/java/br/com/command/template/TemplateHandler.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import br.com.templates_java.ComposeTemplate;
66
import br.com.templates_java.config.jms_aws_sqs.*;
77
import br.com.templates_java.config.openj9.OpenJ9DockerfileGenerator;
8+
import br.com.templates_java.config.openj9.OpenJ9MavenPluginGenerator;
89
import joptsimple.OptionSet;
910
import joptsimple.OptionSpec;
1011
import org.springframework.boot.cli.command.options.OptionHandler;
@@ -14,6 +15,7 @@
1415
import java.net.URISyntaxException;
1516
import java.util.HashMap;
1617
import java.util.List;
18+
import java.util.Map;
1719

1820
import static java.util.Arrays.asList;
1921

@@ -65,7 +67,16 @@ private ExitStatus generateOpenJ9() {
6567
try {
6668
GeneratorOptions generatorOptions = new GeneratorOptions();
6769
generatorOptions.setDestination(scaffoldInfo.getUserDir().concat("/deploy"));
68-
ComposeTemplate.runAll(scaffoldInfo.getPathPackage(), asList(new OpenJ9DockerfileGenerator(generatorOptions)));
70+
71+
GeneratorOptions pomOptions = new GeneratorOptions();
72+
pomOptions.setTemplatePath(scaffoldInfo.getPomPath());
73+
pomOptions.setDestination(scaffoldInfo.getPomDest());
74+
75+
Map<String, String> keyValue = new HashMap<>();
76+
keyValue.put("${main_class}", scaffoldInfo.getPathMainClass());
77+
pomOptions.setPluginValues(keyValue);
78+
79+
ComposeTemplate.runAll(scaffoldInfo.getPathPackage(), asList(new OpenJ9DockerfileGenerator(generatorOptions), new OpenJ9MavenPluginGenerator(pomOptions)));
6980
} catch (Exception e) {
7081
System.out.println("ERROR: ".concat(e.getMessage()));
7182
return ExitStatus.ERROR;

spring-scaffold-cli/src/test/java/br/com/command/template/TemplateHandlerTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ public void givenArgumentList_shoudListTemplates() throws Exception {
6666
public void givenOpenJ9_shouldReturnOk() throws Exception {
6767
ScaffoldInfoHelper scaffoldInfoHelper = mock(ScaffoldInfoHelper.class);
6868
Mockito.when(scaffoldInfoHelper.getUserDir()).thenReturn(temporaryPath.getAbsolutePath());
69+
Mockito.when(scaffoldInfoHelper.getPathPackage()).thenReturn("br.com.example");
70+
Mockito.when(scaffoldInfoHelper.getPathMainClass()).thenReturn("br.com.example.DemoApplication");
71+
Mockito.when(scaffoldInfoHelper.getPomPath()).thenReturn(getClass().getResource("/templates/template-fake-pom.xml").toURI().getPath());
72+
Mockito.when(scaffoldInfoHelper.getPomDest()).thenReturn(temporaryPath.getAbsolutePath().concat("/pom.xml"));
6973

7074
TemplateHandler templateHandler = new TemplateHandler(scaffoldInfoHelper);
7175
ExitStatus exitStatus = templateHandler.run("-t", "openj9");
@@ -76,12 +80,16 @@ public void givenOpenJ9_shouldReturnOk() throws Exception {
7680
public void givenOpenJ9_shouldCreateDockerfile() throws Exception {
7781
ScaffoldInfoHelper scaffoldInfoHelper = mock(ScaffoldInfoHelper.class);
7882

83+
Mockito.when(scaffoldInfoHelper.getPathMainClass()).thenReturn("br.com.example.DemoApplication");
7984
Mockito.when(scaffoldInfoHelper.getUserDir()).thenReturn(temporaryPath.getAbsolutePath());
85+
Mockito.when(scaffoldInfoHelper.getPomPath()).thenReturn(getClass().getResource("/templates/template-fake-pom.xml").toURI().getPath());
86+
Mockito.when(scaffoldInfoHelper.getPomDest()).thenReturn(temporaryPath.getAbsolutePath().concat("/pom.xml"));
8087

8188
TemplateHandler templateHandler = new TemplateHandler(scaffoldInfoHelper);
8289
templateHandler.run("-t", "openj9");
8390

8491
assertTrue(new File(temporaryPath.getAbsolutePath().concat("/deploy/Dockerfile")).exists());
8592
}
8693

94+
8795
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package br.com.templates_java.config.openj9;
2+
3+
import br.com.generator.core.Generator;
4+
import br.com.generator.core.GeneratorOptions;
5+
6+
import java.io.File;
7+
import java.io.IOException;
8+
import java.util.HashMap;
9+
import java.util.Map;
10+
11+
public class OpenJ9MavenPluginGenerator extends Generator {
12+
13+
private GeneratorOptions generatorOptions;
14+
15+
public OpenJ9MavenPluginGenerator(GeneratorOptions generatorOptions) {
16+
this.generatorOptions = generatorOptions;
17+
}
18+
19+
@Override
20+
public File runGenerate() throws IOException {
21+
String plugin = "\n" +
22+
"<plugins>\n" +
23+
" <plugin>\n" +
24+
" <groupId>org.apache.maven.plugins</groupId>\n" +
25+
" <artifactId>maven-shade-plugin</artifactId>\n" +
26+
" <version>2.4.3</version>\n" +
27+
" <dependencies>\n" +
28+
" <dependency>\n" +
29+
" <groupId>org.springframework.boot</groupId>\n" +
30+
" <artifactId>spring-boot-maven-plugin</artifactId>\n" +
31+
" <version>2.1.5.RELEASE</version>\n" +
32+
" </dependency>\n" +
33+
" </dependencies>\n" +
34+
" <executions>\n" +
35+
" <execution>\n" +
36+
" <phase>package</phase>\n" +
37+
" <goals>\n" +
38+
" <goal>shade</goal>\n" +
39+
" </goals>\n" +
40+
" <configuration>\n" +
41+
" <transformers>\n" +
42+
" <transformer\n" +
43+
" implementation=\"org.apache.maven.plugins.shade.resource.AppendingTransformer\">\n" +
44+
" <resource>META-INF/spring.handlers</resource>\n" +
45+
" </transformer>\n" +
46+
" <transformer\n" +
47+
" implementation=\"org.springframework.boot.maven.PropertiesMergingResourceTransformer\">\n" +
48+
" <resource>META-INF/spring.factories</resource>\n" +
49+
" </transformer>\n" +
50+
" <transformer\n" +
51+
" implementation=\"org.apache.maven.plugins.shade.resource.AppendingTransformer\">\n" +
52+
" <resource>META-INF/spring.schemas</resource>\n" +
53+
" </transformer>\n" +
54+
" <transformer\n" +
55+
" implementation=\"org.apache.maven.plugins.shade.resource.ServicesResourceTransformer\"/>\n" +
56+
" <transformer\n" +
57+
" implementation=\"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer\">\n" +
58+
" <mainClass>${main_class}</mainClass>\n" +
59+
" </transformer>\n" +
60+
" </transformers>\n" +
61+
" </configuration>\n" +
62+
" </execution>\n" +
63+
" </executions>\n" +
64+
" <configuration>\n" +
65+
" <createDependencyReducedPom>false</createDependencyReducedPom>\n" +
66+
" </configuration>\n" +
67+
" </plugin> \n";
68+
69+
Map<String, String> keyValue = new HashMap<String, String>();
70+
keyValue.put("<plugins>", plugin);
71+
this.generatorOptions.setKeyValue(keyValue);
72+
this.generatorOptions.setName("pom.xml");
73+
74+
return addMavenPlugin(this.generatorOptions);
75+
}
76+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package br.com.templates_java.config.openj9;
2+
3+
import br.com.generator.core.GeneratorOptions;
4+
import br.com.templates_java.config.jms_aws_sqs.SQSDependencyGenerator;
5+
import br.com.templates_java.helper.LoadTemplateTester;
6+
import org.apache.commons.io.FileUtils;
7+
import org.junit.Before;
8+
import org.junit.Ignore;
9+
import org.junit.Rule;
10+
import org.junit.Test;
11+
import org.junit.rules.TemporaryFolder;
12+
13+
import java.io.File;
14+
import java.io.IOException;
15+
import java.net.URISyntaxException;
16+
import java.util.HashMap;
17+
import java.util.Map;
18+
19+
import static junit.framework.TestCase.assertEquals;
20+
import static junit.framework.TestCase.assertTrue;
21+
22+
public class OpenJ9MavenPluginGeneratorTest {
23+
24+
private LoadTemplateTester loadTemplateTester;
25+
26+
@Rule
27+
public TemporaryFolder temporaryFolder = new TemporaryFolder();
28+
29+
private File temporaryPath;
30+
31+
@Before
32+
public void setUp() throws IOException {
33+
temporaryPath = temporaryFolder.newFolder("test-templates");
34+
loadTemplateTester = new LoadTemplateTester();
35+
}
36+
37+
@Test
38+
public void shouldCreateFile() throws IOException, URISyntaxException {
39+
GeneratorOptions generatorOptions = new GeneratorOptions();
40+
generatorOptions.setDestination(temporaryPath.getAbsolutePath().concat("/pom.xml"));
41+
generatorOptions.setTemplatePath(getClass().getResource("/templates/config/template-pom.xml").toURI().getPath());
42+
Map<String, String> keyValue = new HashMap<>();
43+
keyValue.put("${main_class}", "br.com.example.DemoApplication");
44+
generatorOptions.setKeyValue(keyValue);
45+
46+
OpenJ9MavenPluginGenerator sqsDependencyGenerator = new OpenJ9MavenPluginGenerator(generatorOptions);
47+
48+
File file = sqsDependencyGenerator.runGenerate();
49+
assertTrue(file.exists());
50+
}
51+
52+
@Test
53+
@Ignore
54+
public void shouldReturnContent() throws IOException {
55+
GeneratorOptions generatorOptions = new GeneratorOptions();
56+
generatorOptions.setDestination(temporaryPath.getAbsolutePath());
57+
generatorOptions.setTemplatePath("/templates/config/template-pom.xml");
58+
Map<String, String> keyValue = new HashMap<>();
59+
keyValue.put("${main_class}", "br.com.example.DemoApplication");
60+
generatorOptions.setKeyValue(keyValue);
61+
62+
SQSDependencyGenerator sqsDependencyGenerator = new SQSDependencyGenerator(generatorOptions);
63+
File file = sqsDependencyGenerator.runGenerate();
64+
65+
String contentReturned = FileUtils.readFileToString(file);
66+
String contentExpected = loadTemplateTester.loadTemplate("/templates/config/openj9/template-pom-test.xml");
67+
68+
assertEquals(contentExpected.replace(" ", "").trim(), contentReturned.replace(" ", "").trim());
69+
}
70+
}

templates-java/src/test/java/br/com/templates_java/helper/LoadTemplateTester.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ public String loadTemplate(String templatePath) throws IOException {
1212
String theString = IOUtils.toString(in, "UTF-8");
1313
return theString;
1414
}
15+
1516
}

0 commit comments

Comments
 (0)