From 814712a983d0a94ba4275244eaad70c400fb00b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20MAGNE?= Date: Thu, 22 Sep 2022 23:25:03 +0200 Subject: [PATCH] Remove empty contexts --- .../SpringdocOauth2ModuleConfiguration.java | 2 +- .../broker/hivemq/package-info.java | 2 - .../cache/caffeine/package-info.java | 2 - .../cache/hazelcast/package-info.java | 2 - .../cache/infinispan/package-info.java | 2 - .../cache/memcached/package-info.java | 2 - .../springboot/cache/redis/package-info.java | 2 - .../database/cassandra/package-info.java | 2 - .../database/couchbase/package-info.java | 2 - .../database/neo4j/package-info.java | 2 - .../database/oracle/package-info.java | 2 - .../search/elasticsearch/package-info.java | 2 - .../webflux/security/jwt/package-info.java | 2 - .../webflux/security/oauth2/package-info.java | 2 - .../webflux/springdoc/package-info.java | 2 - .../jhipster/lite/project/package-info.java | 2 +- .../jhipster/lite/technical/package-info.java | 2 +- .../arch/HexagonalArchTest.java.mustache | 52 +++++++++++++------ .../tech/jhipster/lite/HexagonalArchTest.java | 28 +++++++--- 19 files changed, 59 insertions(+), 55 deletions(-) rename src/main/java/tech/jhipster/lite/generator/server/springboot/apidocumentation/springdocoauth/{infrascture => infrastructure}/primary/SpringdocOauth2ModuleConfiguration.java (96%) delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/broker/hivemq/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/cache/caffeine/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/cache/hazelcast/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/cache/infinispan/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/cache/memcached/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/cache/redis/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/database/cassandra/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/database/couchbase/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/database/neo4j/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/database/oracle/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/search/elasticsearch/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/security/jwt/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/security/oauth2/package-info.java delete mode 100644 src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/springdoc/package-info.java diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/apidocumentation/springdocoauth/infrascture/primary/SpringdocOauth2ModuleConfiguration.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/apidocumentation/springdocoauth/infrastructure/primary/SpringdocOauth2ModuleConfiguration.java similarity index 96% rename from src/main/java/tech/jhipster/lite/generator/server/springboot/apidocumentation/springdocoauth/infrascture/primary/SpringdocOauth2ModuleConfiguration.java rename to src/main/java/tech/jhipster/lite/generator/server/springboot/apidocumentation/springdocoauth/infrastructure/primary/SpringdocOauth2ModuleConfiguration.java index ab888db2c2f..2e6106a8827 100644 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/apidocumentation/springdocoauth/infrascture/primary/SpringdocOauth2ModuleConfiguration.java +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/apidocumentation/springdocoauth/infrastructure/primary/SpringdocOauth2ModuleConfiguration.java @@ -1,4 +1,4 @@ -package tech.jhipster.lite.generator.server.springboot.apidocumentation.springdocoauth.infrascture.primary; +package tech.jhipster.lite.generator.server.springboot.apidocumentation.springdocoauth.infrastructure.primary; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/broker/hivemq/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/broker/hivemq/package-info.java deleted file mode 100644 index 6f59d221f3b..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/broker/hivemq/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.broker.hivemq; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/caffeine/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/caffeine/package-info.java deleted file mode 100644 index 9694a79d99b..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/caffeine/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.cache.caffeine; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/hazelcast/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/hazelcast/package-info.java deleted file mode 100644 index 43355f28db4..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/hazelcast/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.cache.hazelcast; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/infinispan/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/infinispan/package-info.java deleted file mode 100644 index 5d75009e75e..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/infinispan/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.cache.infinispan; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/memcached/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/memcached/package-info.java deleted file mode 100644 index d02817b6767..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/memcached/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.cache.memcached; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/redis/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/redis/package-info.java deleted file mode 100644 index 86dfe957d55..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/cache/redis/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.cache.redis; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/database/cassandra/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/database/cassandra/package-info.java deleted file mode 100644 index 087b756ad8a..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/database/cassandra/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.database.cassandra; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/database/couchbase/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/database/couchbase/package-info.java deleted file mode 100644 index 149688bf3fc..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/database/couchbase/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.database.couchbase; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/database/neo4j/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/database/neo4j/package-info.java deleted file mode 100644 index 9efd650f5e4..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/database/neo4j/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.database.neo4j; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/database/oracle/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/database/oracle/package-info.java deleted file mode 100644 index 66e5e2fa070..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/database/oracle/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.database.oracle; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/search/elasticsearch/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/search/elasticsearch/package-info.java deleted file mode 100644 index a7d9008bcef..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/search/elasticsearch/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.search.elasticsearch; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/security/jwt/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/security/jwt/package-info.java deleted file mode 100644 index 0ca313140f3..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/security/jwt/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.webflux.security.jwt; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/security/oauth2/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/security/oauth2/package-info.java deleted file mode 100644 index bd30551aeb0..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/security/oauth2/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.webflux.security.oauth2; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/springdoc/package-info.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/springdoc/package-info.java deleted file mode 100644 index 81d85e49157..00000000000 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/webflux/springdoc/package-info.java +++ /dev/null @@ -1,2 +0,0 @@ -@tech.jhipster.lite.BusinessContext -package tech.jhipster.lite.generator.server.springboot.webflux.springdoc; diff --git a/src/main/java/tech/jhipster/lite/project/package-info.java b/src/main/java/tech/jhipster/lite/project/package-info.java index 3a8dc7234fd..a6402f5c213 100644 --- a/src/main/java/tech/jhipster/lite/project/package-info.java +++ b/src/main/java/tech/jhipster/lite/project/package-info.java @@ -1,2 +1,2 @@ -@tech.jhipster.lite.BusinessContext +@tech.jhipster.lite.SharedKernel package tech.jhipster.lite.project; diff --git a/src/main/java/tech/jhipster/lite/technical/package-info.java b/src/main/java/tech/jhipster/lite/technical/package-info.java index e54f0734303..858f2de82d5 100644 --- a/src/main/java/tech/jhipster/lite/technical/package-info.java +++ b/src/main/java/tech/jhipster/lite/technical/package-info.java @@ -1,2 +1,2 @@ -@tech.jhipster.lite.BusinessContext +@tech.jhipster.lite.SharedKernel package tech.jhipster.lite.technical; diff --git a/src/main/resources/generator/server/javatool/arch/HexagonalArchTest.java.mustache b/src/main/resources/generator/server/javatool/arch/HexagonalArchTest.java.mustache index 4dc08a8176a..b4aa14c4512 100644 --- a/src/main/resources/generator/server/javatool/arch/HexagonalArchTest.java.mustache +++ b/src/main/resources/generator/server/javatool/arch/HexagonalArchTest.java.mustache @@ -6,6 +6,7 @@ import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.core.importer.ClassFileImporter; import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.library.Architectures; import java.io.IOException; import java.lang.annotation.Annotation; import java.nio.file.Files; @@ -104,7 +105,21 @@ class HexagonalArchTest { } @Test - //TODO https://github.com/TNG/ArchUnit/commit/fbca4c92c2432ce26d35e33295a530861dbb2c21 calls to itself should be ignored in 1.0.0-rc1 but still failing + void shouldBeAnOnionArchitecture() { + businessContexts.forEach(context -> { + Architectures + .onionArchitecture() + .withOptionalLayers(true) + .domainModels(context + ".domain..") + .domainServices(context + ".domain..") + .applicationServices(context + ".application..") + .adapter("infrastructure", context + ".infrastructure..", context + ".infrastructure.secondary..") + .because("Each bounded context should implement an onion architecture") + .check(classes); + }); + } + + @Test void primaryJavaAdaptersShouldOnlyBeCalledFromSecondaries() { classes() .that() @@ -114,10 +129,11 @@ class HexagonalArchTest { .and() .haveSimpleNameStartingWith("Java") .should() - .onlyBeAccessed() - .byClassesThat() + .onlyHaveDependentClassesThat() .resideInAPackage("..secondary..") - .because("To interact between two contexts, secondary from context A should call a primary Java adapter (naming convention starting with 'Java') from context B") + .because( + "To interact between two contexts, secondary from context 'A' should call a primary Java adapter (naming convention starting with 'Java') from context 'B'" + ) .check(classes); } @@ -154,14 +170,14 @@ class HexagonalArchTest { .resideInAPackage(".domain..") .should() .onlyDependOnClassesThat() - .resideInAnyPackage(authorizedContextPackages(".domain..")) + .resideInAnyPackage(authorizedDomainPackages()) .because("Domain model should only depend on himself and a very limited set of external dependencies") .check(classes); } - private String[] authorizedContextPackages(String packageName) { + private String[] authorizedDomainPackages() { return Stream - .of(List.of(packageName), vanillaPackages, commonToolsAndUtilsPackages, sharedKernelsPackages) + .of(List.of(".domain.."), vanillaPackages, commonToolsAndUtilsPackages, sharedKernelsPackages) .flatMap(Collection::stream) .toArray(String[]::new); } @@ -221,16 +237,18 @@ class HexagonalArchTest { @Test void shouldNotDependOnSameContextPrimary() { - Stream.concat(businessContexts.stream(), sharedKernels.stream()).forEach(context -> { - noClasses() - .that() - .resideInAPackage(context + ".infrastructure.secondary..") - .should() - .dependOnClassesThat() - .resideInAPackage(context + ".infrastructure.primary") - .because("Secondary should not loop to its own context's primary") - .check(classes); - }); + Stream + .concat(businessContexts.stream(), sharedKernels.stream()) + .forEach(context -> { + noClasses() + .that() + .resideInAPackage(context + ".infrastructure.secondary..") + .should() + .dependOnClassesThat() + .resideInAPackage(context + ".infrastructure.primary") + .because("Secondary should not loop to its own context's primary") + .check(classes); + }); } } } diff --git a/src/test/java/tech/jhipster/lite/HexagonalArchTest.java b/src/test/java/tech/jhipster/lite/HexagonalArchTest.java index c0b9d118579..67b40247096 100644 --- a/src/test/java/tech/jhipster/lite/HexagonalArchTest.java +++ b/src/test/java/tech/jhipster/lite/HexagonalArchTest.java @@ -6,6 +6,7 @@ import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.core.importer.ClassFileImporter; import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.library.Architectures; import java.io.IOException; import java.lang.annotation.Annotation; import java.nio.file.Files; @@ -104,7 +105,21 @@ void shouldNotDependOnOtherBoundedContextDomains() { } @Test - //TODO https://github.com/TNG/ArchUnit/commit/fbca4c92c2432ce26d35e33295a530861dbb2c21 calls to itself should be ignored in 1.0.0-rc1 but still failing + void shouldBeAnOnionArchitecture() { + businessContexts.forEach(context -> { + Architectures + .onionArchitecture() + .withOptionalLayers(true) + .domainModels(context + ".domain..") + .domainServices(context + ".domain..") + .applicationServices(context + ".application..") + .adapter("infrastructure", context + ".infrastructure..", context + ".infrastructure.secondary..") + .because("Each bounded context should implement an onion architecture") + .check(classes); + }); + } + + @Test void primaryJavaAdaptersShouldOnlyBeCalledFromSecondaries() { classes() .that() @@ -114,11 +129,10 @@ void primaryJavaAdaptersShouldOnlyBeCalledFromSecondaries() { .and() .haveSimpleNameStartingWith("Java") .should() - .onlyBeAccessed() - .byClassesThat() + .onlyHaveDependentClassesThat() .resideInAPackage("..secondary..") .because( - "To interact between two contexts, secondary from context A should call a primary Java adapter (naming convention starting with 'Java') from context B" + "To interact between two contexts, secondary from context 'A' should call a primary Java adapter (naming convention starting with 'Java') from context 'B'" ) .check(classes); } @@ -156,14 +170,14 @@ void shouldNotDependOnOutside() { .resideInAPackage(".domain..") .should() .onlyDependOnClassesThat() - .resideInAnyPackage(authorizedContextPackages(".domain..")) + .resideInAnyPackage(authorizedDomainPackages()) .because("Domain model should only depend on himself and a very limited set of external dependencies") .check(classes); } - private String[] authorizedContextPackages(String packageName) { + private String[] authorizedDomainPackages() { return Stream - .of(List.of(packageName), vanillaPackages, commonToolsAndUtilsPackages, sharedKernelsPackages) + .of(List.of(".domain.."), vanillaPackages, commonToolsAndUtilsPackages, sharedKernelsPackages) .flatMap(Collection::stream) .toArray(String[]::new); }