Skip to content

Commit 92721ed

Browse files
authored
Merge pull request #68 from ZenWave360/develop
Merging develop for release 2.1.0
2 parents 0fd1b83 + 75bc742 commit 92721ed

File tree

217 files changed

+8114
-471
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

217 files changed

+8114
-471
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ jobs:
3939
generate-summary: true
4040
jacoco-csv-file: >
4141
./plugins/asyncapi-spring-cloud-streams3/target/site/jacoco/jacoco.csv
42+
./plugins/avro-schema-compiler/target/site/jacoco/jacoco.csv
4243
./plugins/java-to-jdl/target/site/jacoco/jacoco.csv
4344
./plugins/java-to-asyncapi/target/site/jacoco/jacoco.csv
4445
./plugins/backend-application-default/target/site/jacoco/jacoco.csv

.github/workflows/publish-maven-central.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ jobs:
5151
generate-summary: true
5252
jacoco-csv-file: >
5353
./plugins/asyncapi-spring-cloud-streams3/target/site/jacoco/jacoco.csv
54+
./plugins/avro-schema-compiler/target/site/jacoco/jacoco.csv
5455
./plugins/java-to-jdl/target/site/jacoco/jacoco.csv
5556
./plugins/java-to-asyncapi/target/site/jacoco/jacoco.csv
5657
./plugins/backend-application-default/target/site/jacoco/jacoco.csv
@@ -63,6 +64,7 @@ jobs:
6364
./plugins/openapi-karate/target/site/jacoco/jacoco.csv
6465
./plugins/zenwave-mcp-server/target/site/jacoco/jacoco.csv
6566
./zenwave-sdk-cli/target/site/jacoco/jacoco.csv
67+
./plugins/customizations/kotlin-backend-application/target/site/jacoco/jacoco.csv
6668
6769
- name: Log coverage percentage
6870
run: |

.github/workflows/publish-maven-snapshots.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ jobs:
4444
generate-summary: true
4545
jacoco-csv-file: >
4646
./plugins/asyncapi-spring-cloud-streams3/target/site/jacoco/jacoco.csv
47+
./plugins/avro-schema-compiler/target/site/jacoco/jacoco.csv
4748
./plugins/java-to-jdl/target/site/jacoco/jacoco.csv
4849
./plugins/java-to-asyncapi/target/site/jacoco/jacoco.csv
4950
./plugins/backend-application-default/target/site/jacoco/jacoco.csv
@@ -56,6 +57,7 @@ jobs:
5657
./plugins/openapi-karate/target/site/jacoco/jacoco.csv
5758
./plugins/zenwave-mcp-server/target/site/jacoco/jacoco.csv
5859
./zenwave-sdk-cli/target/site/jacoco/jacoco.csv
60+
./plugins/customizations/kotlin-backend-application/target/site/jacoco/jacoco.csv
5961
6062
- name: Log coverage percentage
6163
run: |

_config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ aux_links:
1313
ga_tracking: G-PWPE0ZF877
1414
ga_tracking_anonymize_ip: true # Use GDPR compliant Google Analytics settings (true by default)
1515

16-
exclude: e2e
16+
exclude: e2e,release-notes
1717

1818
footer_content: "ZenWave360 © 2022-2024 - Domain Driven Design (DDD) and API-First for Event Driven Microservices."

e2e/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,18 @@
5252
<version>${project.version}</version>
5353
<scope>test</scope>
5454
</dependency>
55+
<dependency>
56+
<groupId>io.zenwave360.sdk.plugins</groupId>
57+
<artifactId>openapi-spring-webtestclient</artifactId>
58+
<version>${project.version}</version>
59+
<scope>test</scope>
60+
</dependency>
61+
<dependency>
62+
<groupId>io.zenwave360.sdk.plugins.customizations</groupId>
63+
<artifactId>kotlin-backend-application</artifactId>
64+
<version>${project.version}</version>
65+
<scope>test</scope>
66+
</dependency>
5567
</dependencies>
5668

5769
</project>

e2e/src/test/java/io/zenwave360/sdk/e2e/TestMonolithClinicalProject.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,13 @@ public void fixControllers() throws Exception {
134134
TextUtils.replaceInFile(new File(targetFolder + "/src/main/java/com/example/clinical/adapters/web/masterdata/MasterDataApiController.java"),
135135
"masterDataService.listMasterDataOfType\\(type, lang\\)",
136136
"masterDataService.listMasterDataOfType(MasterDataType.valueOf(type), lang)");
137+
138+
TextUtils.replaceInFile(new File(targetFolder + "/src/main/java/com/example/clinical/modules/documents/mappers/DocumentServiceMapper.java"),
139+
"DocumentInfo asDocumentInfo\\(List<Long> documentIds\\);",
140+
"default DocumentInfo asDocumentInfo(List<Long> documentIds) { return new DocumentInfo(); }");
141+
TextUtils.replaceInFile(new File(targetFolder + "/src/main/java/com/example/clinical/modules/documents/mappers/DocumentServiceMapper.java"),
142+
"DocumentInfo update\\(@MappingTarget DocumentInfo entity, List<Long> documentIds\\);",
143+
" default DocumentInfo update(@MappingTarget DocumentInfo entity, List<Long> documentIds) { return entity; }");
137144
}
138145

139146
@Test
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
package io.zenwave360.sdk.e2e;
2+
3+
import io.zenwave360.sdk.MainGenerator;
4+
import io.zenwave360.sdk.Plugin;
5+
import io.zenwave360.sdk.options.DatabaseType;
6+
import io.zenwave360.sdk.options.PersistenceType;
7+
import io.zenwave360.sdk.plugins.BackendApplicationDefaultPlugin;
8+
import io.zenwave360.sdk.plugins.OpenAPIControllersPlugin;
9+
import io.zenwave360.sdk.plugins.ZDLToOpenAPIPlugin;
10+
import io.zenwave360.sdk.testutils.MavenCompiler;
11+
import io.zenwave360.sdk.utils.Maps;
12+
import org.apache.commons.io.FileUtils;
13+
import org.junit.jupiter.api.*;
14+
import org.junit.jupiter.params.ParameterizedTest;
15+
import org.junit.jupiter.params.provider.CsvSource;
16+
17+
import java.io.File;
18+
import java.util.List;
19+
import java.util.Map;
20+
21+
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
22+
public class TestMonolithKlinicalProject {
23+
static String sourceFolder = "src/test/resources/projects/monolith-clinical-project/";
24+
static String targetFolder = "target/projects/monolith-klinical-project";
25+
static String basePackage = "com.example.clinical";
26+
27+
static Map<String, Object> options = Maps.of(
28+
"title", "Clinical Tool Backend",
29+
"persistence", PersistenceType.jpa,
30+
"databaseType", DatabaseType.postgresql,
31+
"basePackage", basePackage,
32+
"layout.coreImplementationMappersCommonPackage", "{{commonPackage}}.mappers",
33+
"layout.infrastructureRepositoryCommonPackage", "{{commonPackage}}",
34+
"layout.adaptersWebMappersCommonPackage", "{{commonPackage}}.mappers",
35+
"openApiModelNameSuffix", "DTO",
36+
"idType", "integer",
37+
"idTypeFormat", "int64",
38+
"useLombok", true,
39+
"includeEmitEventsImplementation", false,
40+
"haltOnFailFormatting", false
41+
);
42+
43+
@BeforeAll
44+
public static void beforeAll() throws Exception {
45+
// copy whole dir from sourceFolder to targetFolder
46+
FileUtils.deleteDirectory(new File(targetFolder));
47+
FileUtils.forceMkdir(new File(targetFolder));
48+
FileUtils.copyDirectory(new File(sourceFolder), new File(targetFolder));
49+
FileUtils.copyFile(new File(sourceFolder + "kotlin-pom.xml"), new File(targetFolder + "/pom.xml"));
50+
Assertions.assertTrue(new File(targetFolder).exists());
51+
}
52+
53+
@ParameterizedTest
54+
@CsvSource({
55+
"clinical.zdl, webapp, getPatientProfileById, ",
56+
"clinical.zdl, mobile, , 'getPatientProfileById,requestOptOut'",
57+
"documents.zdl, documents, , ",
58+
"surveys.zdl, surveys-backoffice, 'getSurveyAndQuestionsForPatient,answerSurvey,updateSurveyAnswers,getSurveyAnswers',",
59+
"surveys.zdl, surveys-public, , 'getSurveyAndQuestionsForPatient,answerSurvey,updateSurveyAnswers,getSurveyAnswers'",
60+
"masterdata.zdl, masterdata, , ",
61+
"terms-and-conditions.zdl, terms-and-conditions, ,"
62+
})
63+
@Order(1)
64+
public void testGenerateOpenAPIs(String zdlFileNames, String webModule, String operationIdsToExclude, String operationIdsToInclude) throws Exception {
65+
List<String> zdlFiles = List.of(zdlFileNames.split(",")).stream().map(zdlFileName -> targetFolder + "/models/" + zdlFileName).toList();
66+
String openApiFile = targetFolder + "/src/main/resources/public/apis/" + webModule + "-openapi.yml";
67+
68+
Plugin plugin = new ZDLToOpenAPIPlugin()
69+
.withZdlFiles(zdlFiles)
70+
.withOption("targetFile", openApiFile)
71+
.withOptions(options)
72+
.withOption("operationIdsToExclude", operationIdsToExclude)
73+
.withOption("operationIdsToInclude", operationIdsToInclude)
74+
;
75+
new MainGenerator().generate(plugin);
76+
}
77+
78+
@ParameterizedTest
79+
@CsvSource({
80+
"clinical.zdl",
81+
"documents.zdl",
82+
"surveys.zdl",
83+
"masterdata.zdl",
84+
"terms-and-conditions.zdl"
85+
})
86+
@Order(2)
87+
public void testGenerateBackendModules(String zdlFile) throws Exception {
88+
Plugin plugin = new BackendApplicationDefaultPlugin()
89+
.withZdlFile(targetFolder + "/models/" + zdlFile)
90+
.withTargetFolder(targetFolder)
91+
.withOptions(options)
92+
.withOption("templates", "new io.zenwave360.sdk.plugins.kotlin.BackendApplicationKotlinTemplates");
93+
new MainGenerator().generate(plugin);
94+
}
95+
96+
@Test
97+
@Order(3)
98+
@Disabled
99+
public void compileBackendModules() throws Exception {
100+
int exitCode = MavenCompiler.compile(new File(targetFolder));
101+
Assertions.assertEquals(0, exitCode);
102+
}
103+
104+
@ParameterizedTest
105+
@CsvSource({
106+
"clinical.zdl,webapp-openapi.yml,webapp",
107+
"clinical.zdl,mobile-openapi.yml,mobile",
108+
"documents.zdl,documents-openapi.yml,documents",
109+
"surveys.zdl,surveys-backoffice-openapi.yml,surveys.backoffice",
110+
"surveys.zdl,surveys-public-openapi.yml,surveys.api",
111+
"masterdata.zdl,masterdata-openapi.yml,masterdata",
112+
"terms-and-conditions.zdl,terms-and-conditions-openapi.yml,termsandconditions"
113+
})
114+
@Order(4)
115+
public void testGenerateControllers(String zdl, String openapi, String webModule) throws Exception {
116+
String zdlFile = targetFolder + "/models/" + zdl;
117+
String openApiFile = targetFolder + "/src/main/resources/public/apis/" + openapi;
118+
119+
Plugin plugin = new OpenAPIControllersPlugin()
120+
.withZdlFile(zdlFile)
121+
.withApiFile(openApiFile)
122+
.withTargetFolder(targetFolder)
123+
.withOptions(options)
124+
.withOption("customWebModule", "{{basePackage}}.adapters.web." + webModule)
125+
.withOption("layout.adaptersWebPackage", "{{customWebModule}}")
126+
.withOption("layout.openApiApiPackage", "{{layout.customWebModule}}")
127+
.withOption("layout.adaptersWebCommonPackage", "{{basePackage}}.adapters.web.common")
128+
.withOption("templates", "new io.zenwave360.sdk.plugins.kotlin.OpenAPIControllersKotlinTemplates")
129+
;
130+
new MainGenerator().generate(plugin);
131+
}
132+
133+
@Test
134+
@Order(5)
135+
public void fixControllers() throws Exception {
136+
137+
TextUtils.replaceInFile(new File(targetFolder + "/src/main/kotlin/com/example/clinical/adapters/web/masterdata/MasterDataApiController.kt"),
138+
"masterDataService.listMasterDataOfType\\(type, lang\\)",
139+
"masterDataService.listMasterDataOfType(MasterDataType.valueOf(type), lang)");
140+
141+
TextUtils.replaceInFile(new File(targetFolder + "/src/test/kotlin/com/example/clinical/adapters/web/documents/DocumentApiControllerTest.kt"),
142+
"data = \"aaa\"",
143+
"data = org.springframework.core.io.ByteArrayResource(\"test data\".toByteArray())");
144+
145+
TextUtils.replaceInFile(new File(targetFolder + "/src/test/kotlin/com/example/clinical/modules/surveys/service/impl/SurveysServiceTest.kt"),
146+
"val input: java.util.Map = java.util.Map",
147+
" val input = mutableMapOf<String, Any?>");
148+
}
149+
150+
@Test
151+
@Order(6)
152+
public void compileControllers() throws Exception {
153+
int exitCode = MavenCompiler.compile(new File(targetFolder));
154+
Assertions.assertEquals(0, exitCode);
155+
}
156+
157+
}

e2e/src/test/resources/projects/clean-architecture-project/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<spring-boot.version>${project.parent.version}</spring-boot.version>
1919
<spring-cloud.version>2022.0.4</spring-cloud.version>
2020

21-
<zenwave.version>2.0.0-SNAPSHOT</zenwave.version>
21+
<zenwave.version>2.1.0-SNAPSHOT</zenwave.version>
2222

2323
<jakarta.validation-api.version>3.0.2</jakarta.validation-api.version>
2424
<mapstruct.version>1.5.3.Final</mapstruct.version>

e2e/src/test/resources/projects/customer-address-postgres-json/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<spring-boot.version>${project.parent.version}</spring-boot.version>
1919
<spring-cloud.version>2022.0.4</spring-cloud.version>
2020

21-
<zenwave.version>2.0.0-SNAPSHOT</zenwave.version>
21+
<zenwave.version>2.1.0-SNAPSHOT</zenwave.version>
2222

2323
<jakarta.validation-api.version>3.0.2</jakarta.validation-api.version>
2424
<mapstruct.version>1.5.3.Final</mapstruct.version>

e2e/src/test/resources/projects/customer-address-relational/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<spring-boot.version>${project.parent.version}</spring-boot.version>
1919
<spring-cloud.version>2022.0.4</spring-cloud.version>
2020

21-
<zenwave.version>2.0.0-SNAPSHOT</zenwave.version>
21+
<zenwave.version>2.1.0-SNAPSHOT</zenwave.version>
2222

2323
<jakarta.validation-api.version>3.0.2</jakarta.validation-api.version>
2424
<mapstruct.version>1.5.3.Final</mapstruct.version>

0 commit comments

Comments
 (0)