Skip to content

Commit 5b15c8f

Browse files
committed
refactors ProjectTemplates.java / Generator.java
1 parent 9911f5b commit 5b15c8f

File tree

29 files changed

+124
-112
lines changed

29 files changed

+124
-112
lines changed

plugins/asyncapi-spring-cloud-streams3/src/main/java/io/zenwave360/sdk/plugins/SpringCloudStreams3Generator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public enum TransactionalOutboxType {
7878
@DocumentedOption(description = "Annotation class to mark generated code (e.g. `org.springframework.aot.generate.Generated`). When retained at runtime, this prevents code coverage tools like Jacoco from including generated classes in coverage reports.")
7979
public String generatedAnnotationClass;
8080

81-
private final HandlebarsEngine handlebarsEngine = getTemplateEngine();
81+
private final HandlebarsEngine handlebarsEngine = (HandlebarsEngine) getTemplateEngine();
8282
{
8383
handlebarsEngine.getHandlebars().registerHelper("producerInterfaceName", (serviceName, options) -> {
8484
AbstractAsyncapiGenerator.OperationRoleType operationRoleType = options.param(0);

plugins/backend-application-default/src/main/java/io/zenwave360/sdk/plugins/BackendApplicationDefaultGenerator.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,8 @@ public class BackendApplicationDefaultGenerator extends ZDLProjectGenerator {
4242
@DocumentedOption(description = "Specifies the Java data type for the ID fields of entities. Defaults to Long for JPA and String for MongoDB if not explicitly set.")
4343
public String idJavaType;
4444

45-
public String mavenModulesPrefix;
46-
47-
@Override
48-
public void onPropertiesSet() {
49-
if (templates == null) {
50-
if (StringUtils.isNotBlank(mavenModulesPrefix)) {
51-
templates =new BackendApplicationMultiModuleProjectTemplates();
52-
} else {
53-
templates = new BackendApplicationProjectTemplates();
54-
}
55-
}
56-
super.onPropertiesSet();
45+
{
46+
templates = new BackendApplicationProjectTemplates();
5747
}
5848

5949
@Override

plugins/backend-application-default/src/main/java/io/zenwave360/sdk/plugins/BackendApplicationMultiModuleProjectTemplates.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package io.zenwave360.sdk.plugins;
22

3+
import io.zenwave360.sdk.doc.DocumentedOption;
34
import io.zenwave360.sdk.zdl.layouts.ProjectLayout;
45

56
import static io.zenwave360.sdk.templating.OutputFormatType.JAVA;
67

78
public class BackendApplicationMultiModuleProjectTemplates extends BackendApplicationProjectTemplates {
89

10+
@DocumentedOption(description = "Prefix for Maven modules")
911
public String mavenModulesPrefix;
1012

1113
public BackendApplicationMultiModuleProjectTemplates() {

plugins/backend-application-default/src/main/resources/io/zenwave360/sdk/plugins/BackendApplicationDefaultGenerator/src/main/java/core/implementation/mappers/ServiceMapper.java.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ public interface {{service.name}}Mapper {
2121
{{~#each (serviceParameterEntityPairs service) as |entry|}}
2222
// {{@key}} {{method.name}}
2323
{{~#if (not (eq entity.className input))}}
24-
{{entity.className}} as{{entity.className}}({{mapperInputSignature input.className}});
24+
{{entity.className}} as{{entity.className}}({{{mapperInputSignature input.className}}});
2525
{{~/if}}
2626
{{#unless (skipEntityId entity)~}}@Mapping(target = "id", ignore = true){{/unless~}}
27-
{{entity.className}} update(@MappingTarget {{entity.className}} entity, {{mapperInputSignature input.className}});
27+
{{entity.className}} update(@MappingTarget {{entity.className}} entity, {{{mapperInputSignature input.className}}});
2828
{{~/each}}
2929
// output mappings
3030
{{~#each (serviceEntityReturnTypePairs service) as |entry|}}

plugins/backend-application-default/src/test/java/io/zenwave360/sdk/plugins/BackendApplicationMongoImperativeGeneratorTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public void test_generator_mongodb_customer_address_multimodule() throws Excepti
3939
.withOption("basePackage", "io.zenwave360.example")
4040
.withOption("persistence", PersistenceType.mongodb)
4141
.withOption("style", ProgrammingStyle.imperative)
42+
.withOption("templates", "new " + BackendApplicationMultiModuleProjectTemplates.class.getName())
4243
.withOption("mavenModulesPrefix", "customer-address")
4344
.withOption("includeEmitEventsImplementation", false)
4445
.withOption("forceOverwrite", true)
@@ -47,11 +48,8 @@ public void test_generator_mongodb_customer_address_multimodule() throws Excepti
4748
new MainGenerator().generate(plugin);
4849

4950
List<String> logs = logCaptor.getLogs();
50-
// Assertions.assertTrue(logs.contains("Writing template with targetFile: io/example/integration/test/api/provider_for_commands_reactive/DoCreateProductConsumer.java"));
51-
// Assertions.assertTrue(logs.contains("Writing template with targetFile: io/example/integration/test/api/provider_for_commands_reactive/DoCreateProductService.java"));
52-
53-
int exitCode = MavenCompiler.copyPomAndCompile("src/test/resources/mongodb-elasticsearch-scs3-pom.xml", targetFolder);
54-
Assertions.assertEquals(0, exitCode);
51+
Assertions.assertTrue(logs.contains("Writing template with targetFile: customer-address-domain/src/main/java/io/zenwave360/example/core/domain/Customer.java"));
52+
Assertions.assertTrue(logs.contains("Writing template with targetFile: customer-address-core-impl/src/main/java/io/zenwave360/example/core/implementation/CustomerServiceImpl.java"));
5553
}
5654

5755
@Test

plugins/customizations/kotlin-backend-application/src/main/java/io/zenwave360/sdk/plugins/kotlin/BackendApplicationKotlinTemplates.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.zenwave360.sdk.plugins.kotlin;
22

3+
import io.zenwave360.sdk.doc.DocumentedOption;
34
import io.zenwave360.sdk.generators.Generator;
45
import io.zenwave360.sdk.plugins.BackendApplicationDefaultGenerator;
56
import io.zenwave360.sdk.plugins.BackendApplicationDefaultHelpers;
@@ -21,6 +22,7 @@
2122

2223
public class BackendApplicationKotlinTemplates extends ProjectTemplates {
2324

25+
@DocumentedOption(description = "Whether to add AsyncAPI/ApplicationEventPublisher as service dependencies. Depends on the naming convention of zenwave-asyncapi plugin to work.")
2426
public boolean includeEmitEventsImplementation = true;
2527

2628
protected Function<Map<String, Object>, Boolean> skipEntityRepository = (model) -> is(model, "persistence") // if polyglot persistence -> skip

plugins/java-to-jdl/src/main/java/io/zenwave360/sdk/plugins/JavaToJDLGenerator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.lang.reflect.Type;
1010
import java.util.*;
1111

12+
import io.zenwave360.sdk.templating.HandlebarsEngine;
1213
import io.zenwave360.sdk.zdl.GeneratedProjectFiles;
1314
import jakarta.persistence.Entity;
1415
import jakarta.persistence.ManyToMany;
@@ -31,7 +32,7 @@
3132
import io.zenwave360.sdk.generators.Generator;
3233
import io.zenwave360.sdk.templating.TemplateOutput;
3334

34-
public class JavaToJDLGenerator implements Generator {
35+
public class JavaToJDLGenerator extends Generator {
3536

3637
private Logger log = LoggerFactory.getLogger(getClass());
3738

plugins/jdl-to-asyncapi/src/main/java/io/zenwave360/sdk/plugins/JDLToAsyncAPIGenerator.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@
1818
import io.zenwave360.sdk.generators.EntitiesToAvroConverter;
1919
import io.zenwave360.sdk.generators.EntitiesToSchemasConverter;
2020
import io.zenwave360.sdk.options.asyncapi.AsyncapiVersionType;
21-
import io.zenwave360.sdk.templating.HandlebarsEngine;
22-
import io.zenwave360.sdk.templating.OutputFormatType;
23-
import io.zenwave360.sdk.templating.TemplateInput;
24-
import io.zenwave360.sdk.templating.TemplateOutput;
21+
import io.zenwave360.sdk.templating.*;
2522
import io.zenwave360.sdk.utils.JSONPath;
2623
import io.zenwave360.sdk.zdl.GeneratedProjectFiles;
2724

@@ -88,8 +85,6 @@ public JDLToAsyncAPIGenerator withSourceProperty(String sourceProperty) {
8885
return this;
8986
}
9087

91-
private HandlebarsEngine handlebarsEngine = new HandlebarsEngine();
92-
9388
private final TemplateInput jdlToAsyncAPITemplate = new TemplateInput("io/zenwave360/sdk/plugins/AsyncAPIToJDLGenerator/JDLToAsyncAPI{{asyncapiVersion}}.yml", "{{targetFile}}").withMimeType(OutputFormatType.YAML);
9489

9590
protected Map<String, Object> getJDLModel(Map<String, Object> contextModel) {
@@ -225,7 +220,7 @@ public TemplateOutput generateTemplateOutput(Map<String, Object> contextModel, T
225220
model.put("zdlModel", zdlModel);
226221
model.put("schemaFormatString", schemaFormat == SchemaFormat.schema ? (asyncapiVersion == AsyncapiVersionType.v3? defaultSchemaFormatV3 : defaultSchemaFormatV2) : avroSchemaFormat);
227222
model.put("schemasAsString", schemasAsString);
228-
return handlebarsEngine.processTemplate(model, template);
223+
return getTemplateEngine().processTemplate(model, template);
229224
}
230225

231226
protected boolean skipOperations(Map entity) {
@@ -244,6 +239,8 @@ protected boolean skipOperations(Map entity) {
244239
}
245240

246241
{
242+
var handlebarsEngine = (HandlebarsEngine) getTemplateEngine();
243+
247244
handlebarsEngine.getHandlebars().registerHelper("skipOperations", (context, options) -> {
248245
return skipOperations((Map) context);
249246
});

plugins/openapi-controllers/src/main/java/io/zenwave360/sdk/plugins/OpenAPIControllersGenerator.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ public void onPropertiesSet() {
5454
.forEach(helper -> handlebarsEngine.getHandlebars().registerHelpers(helper));
5555
}
5656

57-
public TemplateEngine getTemplateEngine() {
58-
return handlebarsEngine;
59-
}
57+
6058

6159
protected Map<String, Object> getZDLModel(Map<String, Object> contextModel) {
6260
return (Map) contextModel.get(zdlProperty);
@@ -307,6 +305,7 @@ public List<TemplateOutput> generateTemplateOutput(Map<String, Object> contextMo
307305
model.put("zdl", getZDLModel(contextModel));
308306
model.put("webFlavor", style == ProgrammingStyle.imperative ? "mvc" : "webflux");
309307
model.putAll(extModel);
308+
model.putAll(templates.getDocumentedOptions());
310309
return getTemplateEngine().processTemplates(model, List.of(template));
311310
}
312311

plugins/openapi-karate/src/main/java/io/zenwave360/sdk/plugins/OpenAPIKarateGenerator.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ enum GroupByType {
3636
@DocumentedOption(description = "Business Flow Feature name")
3737
public String businessFlowTestName;
3838

39-
private HandlebarsEngine handlebarsEngine = new HandlebarsEngine();
39+
private HandlebarsEngine handlebarsEngine = (HandlebarsEngine) getTemplateEngine();
4040

4141
private JsonSchemaToJsonFaker jsonSchemaToJsonFaker = new JsonSchemaToJsonFaker();
4242

@@ -58,9 +58,7 @@ public void onPropertiesSet() {
5858
}
5959
}
6060

61-
public TemplateEngine getTemplateEngine() {
62-
return handlebarsEngine;
63-
}
61+
6462

6563
Model getApiModel(Map<String, Object> contextModel) {
6664
return (Model) contextModel.get(apiProperty);

0 commit comments

Comments
 (0)