From 3ca587c55745e0e22d97e50a4dd015f3f204b9ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Mino?= Date: Mon, 16 Sep 2024 08:17:10 +0200 Subject: [PATCH 1/7] feat: npm VersionSource should be extensible Fixes #10852 --- .../FrontendJavaBuildToolModuleFactory.java | 6 ++-- .../domain/npm/JHLiteNpmVersionSource.java | 20 +++++++++++++ .../module/domain/npm/NpmPackageVersion.java | 7 +++++ .../module/domain/npm/NpmVersionSource.java | 17 +++++++---- .../domain/npm/NpmVersionSourceFactory.java | 6 ++++ .../lite/module/domain/npm/NpmVersions.java | 17 ++++++++++- .../JHipsterModulePackageJson.java | 25 +++++++++++------ .../packagejson/PackageJsonDependency.java | 11 ++++---- .../domain/packagejson/PackageName.java | 7 +++++ .../domain/packagejson/VersionSource.java | 13 +++++++-- .../FileSystemPackageJsonHandler.java | 4 +-- .../npm/FileSystemNpmVersionReader.java | 12 ++++---- ...rontendJavaBuildToolModuleFactoryTest.java | 8 ++---- .../domain/npm/NpmPackagesVersionsTest.java | 9 +++--- .../npm/UnknownNpmPackageExceptionTest.java | 12 +++++--- .../FileSystemPackageJsonHandlerTest.java | 15 ++++++---- .../npm/FileSystemNpmVersionReaderTest.java | 17 +++++------ .../npm/JHipsterNpmVersionsTest.java | 28 +++++++++---------- 18 files changed, 157 insertions(+), 77 deletions(-) create mode 100644 src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java create mode 100644 src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSourceFactory.java diff --git a/src/main/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactory.java index 0ff1c99aee1..a8e41b730d0 100644 --- a/src/main/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactory.java @@ -8,7 +8,7 @@ import tech.jhipster.lite.module.domain.file.JHipsterSource; import tech.jhipster.lite.module.domain.gradleplugin.GradleMainBuildPlugin; import tech.jhipster.lite.module.domain.mavenplugin.MavenPlugin; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; +import tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource; import tech.jhipster.lite.module.domain.npm.NpmVersions; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.shared.error.domain.Assert; @@ -33,7 +33,7 @@ public JHipsterModule buildFrontendMavenModule(JHipsterModuleProperties properti return commonModuleFiles(properties) .javaBuildProperties() .set(buildPropertyKey("node.version"), buildPropertyValue("v" + npmVersions.nodeVersion().get())) - .set(buildPropertyKey("npm.version"), buildPropertyValue(npmVersions.get("npm", NpmVersionSource.COMMON).get())) + .set(buildPropertyKey("npm.version"), buildPropertyValue(npmVersions.get("npm", JHLiteNpmVersionSource.COMMON).get())) .and() .mavenPlugins() .plugin(checksumPlugin()) @@ -169,7 +169,7 @@ public JHipsterModule buildFrontendGradleModule(JHipsterModuleProperties propert return commonModuleFiles(properties) .javaBuildProperties() .set(buildPropertyKey("node.version.value"), buildPropertyValue(npmVersions.nodeVersion().get())) - .set(buildPropertyKey("npm.version.value"), buildPropertyValue(npmVersions.get("npm", NpmVersionSource.COMMON).get())) + .set(buildPropertyKey("npm.version.value"), buildPropertyValue(npmVersions.get("npm", JHLiteNpmVersionSource.COMMON).get())) .and() .gradlePlugins() .plugin(frontendGradlePlugin()) diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java b/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java new file mode 100644 index 00000000000..c2b18129c62 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java @@ -0,0 +1,20 @@ +package tech.jhipster.lite.module.domain.npm; + +public enum JHLiteNpmVersionSource implements NpmVersionSourceFactory { + COMMON("common"), + ANGULAR("angular"), + REACT("react"), + SVELTE("svelte"), + VUE("vue"); + + private final String source; + + JHLiteNpmVersionSource(String source) { + this.source = source; + } + + @Override + public NpmVersionSource build() { + return new NpmVersionSource(source); + } +} diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmPackageVersion.java b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmPackageVersion.java index d58e73c5018..487fdedc273 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmPackageVersion.java +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmPackageVersion.java @@ -1,6 +1,7 @@ package tech.jhipster.lite.module.domain.npm; import tech.jhipster.lite.shared.error.domain.Assert; +import tech.jhipster.lite.shared.generation.domain.ExcludeFromGeneratedCodeCoverage; public record NpmPackageVersion(String version) { public NpmPackageVersion { @@ -14,4 +15,10 @@ public String get() { public String majorVersion() { return version().split("\\.")[0]; } + + @Override + @ExcludeFromGeneratedCodeCoverage + public String toString() { + return version; + } } diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSource.java b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSource.java index fcd27f0e4c4..f1e0f159dfd 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSource.java +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSource.java @@ -1,9 +1,14 @@ package tech.jhipster.lite.module.domain.npm; -public enum NpmVersionSource { - COMMON, - ANGULAR, - REACT, - SVELTE, - VUE, +import tech.jhipster.lite.shared.error.domain.Assert; + +public record NpmVersionSource(String name) { + public NpmVersionSource { + Assert.notBlank("name", name); + } + + @Override + public String toString() { + return name; + } } diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSourceFactory.java b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSourceFactory.java new file mode 100644 index 00000000000..1d3c0d3df40 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersionSourceFactory.java @@ -0,0 +1,6 @@ +package tech.jhipster.lite.module.domain.npm; + +@FunctionalInterface +public interface NpmVersionSourceFactory { + NpmVersionSource build(); +} diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java index 054903c628c..51a9768313e 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/NpmVersions.java @@ -41,10 +41,25 @@ default NpmPackageVersion get(String packageName, NpmVersionSource source) { return get(new NpmPackageName(packageName), source); } + /** + * Get the npm package version from the given source + * + * @param packageName + * name of the package to get the version for + * @param source + * source folder for this version + * @return The version + * @throws UnknownNpmPackageException + * is the package can't be found in source + */ + default NpmPackageVersion get(String packageName, NpmVersionSourceFactory source) { + return get(packageName, source.build()); + } + /** * @return The version of Node.js. */ default NpmPackageVersion nodeVersion() { - return get("node", NpmVersionSource.COMMON); + return get("node", JHLiteNpmVersionSource.COMMON.build()); } } diff --git a/src/main/java/tech/jhipster/lite/module/domain/packagejson/JHipsterModulePackageJson.java b/src/main/java/tech/jhipster/lite/module/domain/packagejson/JHipsterModulePackageJson.java index 5654bbfc295..c326253607e 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/packagejson/JHipsterModulePackageJson.java +++ b/src/main/java/tech/jhipster/lite/module/domain/packagejson/JHipsterModulePackageJson.java @@ -3,6 +3,7 @@ import java.util.*; import java.util.stream.Stream; import tech.jhipster.lite.module.domain.JHipsterModule.JHipsterModuleBuilder; +import tech.jhipster.lite.module.domain.npm.NpmVersionSourceFactory; import tech.jhipster.lite.shared.error.domain.Assert; /** @@ -103,8 +104,8 @@ public JHipsterModulePackageJsonBuilder addScript(ScriptKey key, ScriptCommand c * @param versionSource the version source * @return the builder itself */ - public JHipsterModulePackageJsonBuilder addDependency(PackageName packageName, VersionSource versionSource) { - dependencies.add(PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource).build()); + public JHipsterModulePackageJsonBuilder addDependency(PackageName packageName, NpmVersionSourceFactory versionSource) { + dependencies.add(PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource.build()).build()); return this; } @@ -119,11 +120,15 @@ public JHipsterModulePackageJsonBuilder addDependency(PackageName packageName, V */ public JHipsterModulePackageJsonBuilder addDependency( PackageName packageName, - VersionSource versionSource, + NpmVersionSourceFactory versionSource, PackageName versionPackageName ) { dependencies.add( - PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource).versionPackageName(versionPackageName).build() + PackageJsonDependency.builder() + .packageName(packageName) + .versionSource(versionSource.build()) + .versionPackageName(versionPackageName) + .build() ); return this; @@ -148,8 +153,8 @@ public JHipsterModulePackageJsonBuilder removeDependency(PackageName packageName * @param versionSource the version source * @return the builder itself */ - public JHipsterModulePackageJsonBuilder addDevDependency(PackageName packageName, VersionSource versionSource) { - devDependencies.add(PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource).build()); + public JHipsterModulePackageJsonBuilder addDevDependency(PackageName packageName, NpmVersionSourceFactory versionSource) { + devDependencies.add(PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource.build()).build()); return this; } @@ -164,11 +169,15 @@ public JHipsterModulePackageJsonBuilder addDevDependency(PackageName packageName */ public JHipsterModulePackageJsonBuilder addDevDependency( PackageName packageName, - VersionSource versionSource, + NpmVersionSourceFactory versionSource, PackageName versionPackageName ) { devDependencies.add( - PackageJsonDependency.builder().packageName(packageName).versionSource(versionSource).versionPackageName(versionPackageName).build() + PackageJsonDependency.builder() + .packageName(packageName) + .versionSource(versionSource.build()) + .versionPackageName(versionPackageName) + .build() ); return this; diff --git a/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageJsonDependency.java b/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageJsonDependency.java index bf9c85c014b..918933986ad 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageJsonDependency.java +++ b/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageJsonDependency.java @@ -2,13 +2,14 @@ import java.util.Objects; import java.util.Optional; +import tech.jhipster.lite.module.domain.npm.NpmVersionSource; import tech.jhipster.lite.shared.error.domain.Assert; import tech.jhipster.lite.shared.generation.domain.ExcludeFromGeneratedCodeCoverage; public final class PackageJsonDependency { private final PackageName packageName; - private final VersionSource versionSource; + private final NpmVersionSource versionSource; private final Optional versionPackageName; private PackageJsonDependency(PackageJsonDependencyBuilder builder) { @@ -23,7 +24,7 @@ public PackageName packageName() { return packageName; } - public VersionSource versionSource() { + public NpmVersionSource versionSource() { return versionSource; } @@ -64,7 +65,7 @@ private static final class PackageJsonDependencyBuilder implements PackageJsonDependencyPackageNameBuilder, PackageJsonDependencyVersionSourceBuilder, PackageJsonDependencyOptionalBuilder { private PackageName packageName; - private VersionSource versionSource; + private NpmVersionSource versionSource; private PackageName versionPackageName; @Override @@ -74,7 +75,7 @@ public PackageJsonDependencyVersionSourceBuilder packageName(PackageName package } @Override - public PackageJsonDependencyOptionalBuilder versionSource(VersionSource versionSource) { + public PackageJsonDependencyOptionalBuilder versionSource(NpmVersionSource versionSource) { this.versionSource = versionSource; return this; } @@ -96,7 +97,7 @@ public interface PackageJsonDependencyPackageNameBuilder { } public interface PackageJsonDependencyVersionSourceBuilder { - PackageJsonDependencyOptionalBuilder versionSource(VersionSource versionSource); + PackageJsonDependencyOptionalBuilder versionSource(NpmVersionSource versionSource); } public interface PackageJsonDependencyOptionalBuilder { diff --git a/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageName.java b/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageName.java index 6ed27290657..7fe36cce1b4 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageName.java +++ b/src/main/java/tech/jhipster/lite/module/domain/packagejson/PackageName.java @@ -1,6 +1,7 @@ package tech.jhipster.lite.module.domain.packagejson; import tech.jhipster.lite.shared.error.domain.Assert; +import tech.jhipster.lite.shared.generation.domain.ExcludeFromGeneratedCodeCoverage; public record PackageName(String packageName) { public PackageName { @@ -10,4 +11,10 @@ public record PackageName(String packageName) { public String get() { return packageName(); } + + @Override + @ExcludeFromGeneratedCodeCoverage + public String toString() { + return packageName; + } } diff --git a/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java b/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java index 00a9e9becb2..80327794d70 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java +++ b/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java @@ -1,9 +1,18 @@ package tech.jhipster.lite.module.domain.packagejson; -public enum VersionSource { +import tech.jhipster.lite.module.domain.npm.NpmVersionSource; +import tech.jhipster.lite.module.domain.npm.NpmVersionSourceFactory; + +@Deprecated(forRemoval = true) +public enum VersionSource implements NpmVersionSourceFactory { COMMON, ANGULAR, REACT, SVELTE, - VUE, + VUE; + + @Override + public NpmVersionSource build() { + return new NpmVersionSource(name().toLowerCase()); + } } diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandler.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandler.java index 45aacbe661f..9f127a8dbe1 100644 --- a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandler.java +++ b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandler.java @@ -13,12 +13,10 @@ import tech.jhipster.lite.module.domain.Indentation; import tech.jhipster.lite.module.domain.JHipsterModuleContext; import tech.jhipster.lite.module.domain.file.TemplateRenderer; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; import tech.jhipster.lite.module.domain.npm.NpmVersions; import tech.jhipster.lite.module.domain.packagejson.*; import tech.jhipster.lite.module.domain.properties.JHipsterProjectFolder; import tech.jhipster.lite.shared.collection.domain.JHipsterCollections; -import tech.jhipster.lite.shared.enumeration.domain.Enums; import tech.jhipster.lite.shared.error.domain.Assert; import tech.jhipster.lite.shared.error.domain.GeneratorException; import tech.jhipster.lite.shared.generation.domain.ExcludeFromGeneratedCodeCoverage; @@ -156,7 +154,7 @@ private Collection dependenciesEntries(PackageNames packageNames) { private String getNpmVersion(PackageJsonDependency dependency) { PackageName packageName = dependency.versionPackageName().orElse(dependency.packageName()); - return npmVersions.get(packageName.get(), Enums.map(dependency.versionSource(), NpmVersionSource.class)).get(); + return npmVersions.get(packageName.get(), dependency.versionSource()).get(); } @ExcludeFromGeneratedCodeCoverage(reason = "The error handling is an hard to test implementation detail") diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java index 2783ccf8b90..257c90ce0b8 100644 --- a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java +++ b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java @@ -7,10 +7,8 @@ import org.springframework.core.annotation.Order; import org.springframework.stereotype.Repository; import tech.jhipster.lite.module.domain.ProjectFiles; -import tech.jhipster.lite.module.domain.npm.NpmPackage; -import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions; +import tech.jhipster.lite.module.domain.npm.*; import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions.NpmPackagesVersionsBuilder; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; import tech.jhipster.lite.shared.enumeration.domain.Enums; @Repository @@ -31,12 +29,12 @@ public FileSystemNpmVersionReader(ProjectFiles projectFiles) { public NpmPackagesVersions get() { NpmPackagesVersionsBuilder builder = NpmPackagesVersions.builder(); - Stream.of(NpmVersionSource.values()).forEach(source -> builder.put(source, sourcePackages(source))); + Stream.of(JHLiteNpmVersionSource.values()).forEach(source -> builder.put(source.build(), sourcePackages(source))); return builder.build(); } - private Collection sourcePackages(NpmVersionSource source) { + private Collection sourcePackages(JHLiteNpmVersionSource source) { String sourceFile = readVersionsFile(source); return Stream.concat(packagesIn(sourceFile, DEV_DEPENDENCIES_PATTERN), packagesIn(sourceFile, DEPENDENCIES_PATTERN)).toList(); @@ -56,11 +54,11 @@ private Stream readPackages(String content) { return PACKAGES_PATTERN.matcher(content).results().map(result -> new NpmPackage(result.group(1), result.group(2))); } - private String readVersionsFile(NpmVersionSource source) { + private String readVersionsFile(JHLiteNpmVersionSource source) { return projectFiles.readString("/generator/dependencies/" + sourceFolder(source) + "/package.json"); } - private String sourceFolder(NpmVersionSource source) { + private String sourceFolder(JHLiteNpmVersionSource source) { return Enums.map(source, NpmVersionSourceFolder.class).folder(); } } diff --git a/src/test/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactoryTest.java b/src/test/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactoryTest.java index a7d5593ca26..c77a8cbef93 100644 --- a/src/test/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactoryTest.java +++ b/src/test/java/tech/jhipster/lite/generator/server/javatool/frontendmaven/domain/FrontendJavaBuildToolModuleFactoryTest.java @@ -1,6 +1,6 @@ package tech.jhipster.lite.generator.server.javatool.frontendmaven.domain; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.when; import static tech.jhipster.lite.module.infrastructure.secondary.JHipsterModulesAssertions.*; import org.jetbrains.annotations.NotNull; @@ -13,9 +13,7 @@ import tech.jhipster.lite.UnitTest; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.JHipsterModulesFixture; -import tech.jhipster.lite.module.domain.npm.NpmPackageVersion; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; -import tech.jhipster.lite.module.domain.npm.NpmVersions; +import tech.jhipster.lite.module.domain.npm.*; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; @UnitTest @@ -275,7 +273,7 @@ val npmVersionValue by extra("4.0.0") } private void mockNpmVersion() { - when(npmVersions.get("npm", NpmVersionSource.COMMON)).thenReturn(new NpmPackageVersion("4.0.0")); + when(npmVersions.get("npm", JHLiteNpmVersionSource.COMMON)).thenReturn(new NpmPackageVersion("4.0.0")); when(npmVersions.nodeVersion()).thenReturn(new NpmPackageVersion("16.0.0")); } diff --git a/src/test/java/tech/jhipster/lite/module/domain/npm/NpmPackagesVersionsTest.java b/src/test/java/tech/jhipster/lite/module/domain/npm/NpmPackagesVersionsTest.java index 03d38e3d9c2..36b9fd75ccb 100644 --- a/src/test/java/tech/jhipster/lite/module/domain/npm/NpmPackagesVersionsTest.java +++ b/src/test/java/tech/jhipster/lite/module/domain/npm/NpmPackagesVersionsTest.java @@ -2,8 +2,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static tech.jhipster.lite.module.domain.npm.NpmVersionSource.COMMON; -import static tech.jhipster.lite.module.domain.npm.NpmVersionSource.VUE; import java.util.List; import org.junit.jupiter.api.Nested; @@ -13,6 +11,9 @@ @UnitTest class NpmPackagesVersionsTest { + private static final NpmVersionSource COMMON = JHLiteNpmVersionSource.COMMON.build(); + private static final NpmVersionSource VUE = JHLiteNpmVersionSource.VUE.build(); + @Test void shouldNotVersionFromUnknownSource() { NpmPackagesVersions versions = NpmPackagesVersions.builder().build(); @@ -20,7 +21,7 @@ void shouldNotVersionFromUnknownSource() { assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), COMMON)) .isExactlyInstanceOf(UnknownNpmPackageException.class) .hasMessageContaining("unknown") - .hasMessageContaining("COMMON"); + .hasMessageContaining("common"); } @Test @@ -30,7 +31,7 @@ void shouldNotGetUnknownPackageVersion() { assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), COMMON)) .isExactlyInstanceOf(UnknownNpmPackageException.class) .hasMessageContaining("unknown") - .hasMessageContaining("COMMON"); + .hasMessageContaining("common"); } @Test diff --git a/src/test/java/tech/jhipster/lite/module/domain/npm/UnknownNpmPackageExceptionTest.java b/src/test/java/tech/jhipster/lite/module/domain/npm/UnknownNpmPackageExceptionTest.java index f61265bd227..bb15b2b8e91 100644 --- a/src/test/java/tech/jhipster/lite/module/domain/npm/UnknownNpmPackageExceptionTest.java +++ b/src/test/java/tech/jhipster/lite/module/domain/npm/UnknownNpmPackageExceptionTest.java @@ -1,6 +1,7 @@ package tech.jhipster.lite.module.domain.npm; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.entry; import org.junit.jupiter.api.Test; import tech.jhipster.lite.UnitTest; @@ -11,11 +12,14 @@ class UnknownNpmPackageExceptionTest { @Test void shouldGetExceptionInformation() { - UnknownNpmPackageException exception = new UnknownNpmPackageException(new NpmPackageName("package-name"), NpmVersionSource.ANGULAR); + UnknownNpmPackageException exception = new UnknownNpmPackageException( + new NpmPackageName("package-name"), + JHLiteNpmVersionSource.ANGULAR.build() + ); - assertThat(exception.getMessage()).isEqualTo("Can't find package-name version in ANGULAR package.json, forgot to add it?"); + assertThat(exception.getMessage()).isEqualTo("Can't find package-name version in angular package.json, forgot to add it?"); assertThat(exception.key()).isEqualTo(NpmErrorKey.UNKNOWN_PACKAGE); assertThat(exception.status()).isEqualTo(ErrorStatus.INTERNAL_SERVER_ERROR); - assertThat(exception.parameters()).containsOnly(entry("packageName", "package-name"), entry("packageSource", "ANGULAR")); + assertThat(exception.parameters()).containsOnly(entry("packageName", "package-name"), entry("packageSource", "angular")); } } diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java index 9b7783406fb..e3da7ebc28a 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java @@ -5,6 +5,8 @@ import static tech.jhipster.lite.module.domain.JHipsterModule.*; import static tech.jhipster.lite.module.domain.JHipsterModulesFixture.emptyModuleBuilder; import static tech.jhipster.lite.module.domain.JHipsterModulesFixture.emptyModuleContext; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.ANGULAR; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import static tech.jhipster.lite.module.domain.packagejson.NodeModuleFormat.COMMONJS; import static tech.jhipster.lite.module.domain.packagejson.NodeModuleFormat.MODULE; @@ -19,7 +21,8 @@ import tech.jhipster.lite.TestFileUtils; import tech.jhipster.lite.UnitTest; import tech.jhipster.lite.module.domain.Indentation; -import tech.jhipster.lite.module.domain.npm.*; +import tech.jhipster.lite.module.domain.npm.NpmPackageVersion; +import tech.jhipster.lite.module.domain.npm.NpmVersions; import tech.jhipster.lite.module.domain.packagejson.JHipsterModulePackageJson; import tech.jhipster.lite.module.domain.packagejson.JHipsterModulePackageJson.JHipsterModulePackageJsonBuilder; import tech.jhipster.lite.module.domain.packagejson.VersionSource; @@ -60,7 +63,7 @@ private JHipsterProjectFolder emptyFolder() { @Test void shouldNotAddNotNeededBlock() { - when(npmVersions.get("@playwright/test", NpmVersionSource.COMMON)).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get("@playwright/test", COMMON.build())).thenReturn(new NpmPackageVersion("1.1.1")); JHipsterProjectFolder folder = projectWithPackageJson("src/test/resources/projects/empty-node/package.json"); @@ -322,7 +325,7 @@ void shouldAddDevDependencyToPackageJsonWithDevDependencySection() { @Test void shouldAddDevDependencyToPackageJsonUsingVersionSourcePackage() { - when(npmVersions.get("@angular/core", NpmVersionSource.ANGULAR)).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get("@angular/core", ANGULAR.build())).thenReturn(new NpmPackageVersion("1.1.1")); JHipsterProjectFolder folder = projectWithPackageJson("src/test/resources/projects/node/package.json"); @@ -388,7 +391,7 @@ void shouldRemoveExistingDevDependency() { } private void mockDevVersion() { - when(npmVersions.get(anyString(), eq(NpmVersionSource.COMMON))).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get(anyString(), eq(COMMON.build()))).thenReturn(new NpmPackageVersion("1.1.1")); } } @@ -444,7 +447,7 @@ void shouldAddDependencyToPackageJsonWithDependencySection() { @Test void shouldAddDependencyToPackageJsonUsingVersionSourcePackage() { - when(npmVersions.get("@angular/core", NpmVersionSource.ANGULAR)).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get("@angular/core", ANGULAR.build())).thenReturn(new NpmPackageVersion("1.1.1")); JHipsterProjectFolder folder = projectWithPackageJson("src/test/resources/projects/node/package.json"); @@ -510,7 +513,7 @@ void shouldRemoveExistingDependency() { } private void mockVersion() { - when(npmVersions.get(anyString(), eq(NpmVersionSource.COMMON))).thenReturn(new NpmPackageVersion("1.1.1")); + when(npmVersions.get(anyString(), eq(COMMON.build()))).thenReturn(new NpmPackageVersion("1.1.1")); } } diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java index 5846afbd543..8891c4a01d6 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java @@ -1,7 +1,8 @@ package tech.jhipster.lite.module.infrastructure.secondary.npm; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.when; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -10,14 +11,14 @@ import org.mockito.junit.jupiter.MockitoExtension; import tech.jhipster.lite.UnitTest; import tech.jhipster.lite.module.domain.ProjectFiles; -import tech.jhipster.lite.module.domain.npm.NpmPackageName; -import tech.jhipster.lite.module.domain.npm.NpmPackageVersion; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; +import tech.jhipster.lite.module.domain.npm.*; @UnitTest @ExtendWith(MockitoExtension.class) class FileSystemNpmVersionReaderTest { + private static final NpmVersionSource COMMON = JHLiteNpmVersionSource.COMMON.build(); + @Mock private ProjectFiles projectFiles; @@ -28,7 +29,7 @@ class FileSystemNpmVersionReaderTest { void shouldGetVersionFromDevSource() { mockProjectFiles(); - NpmPackageVersion version = reader.get().get(new NpmPackageName("@types/node"), NpmVersionSource.COMMON); + NpmPackageVersion version = reader.get().get(new NpmPackageName("@types/node"), COMMON); assertThat(version).isEqualTo(new NpmPackageVersion("17.0.43")); } @@ -37,7 +38,7 @@ void shouldGetVersionFromDevSource() { void shouldGetVersionFromSource() { mockProjectFiles(); - NpmPackageVersion version = reader.get().get(new NpmPackageName("vue"), NpmVersionSource.COMMON); + NpmPackageVersion version = reader.get().get(new NpmPackageName("vue"), COMMON); assertThat(version).isEqualTo(new NpmPackageVersion("1.2.3")); } @@ -46,7 +47,7 @@ void shouldGetVersionFromSource() { void shouldGetVersionFromEmptySourceWithEmptyDevSource() { emptyProjectFiles(); - NpmPackageVersion version = reader.get().get(new NpmPackageName("vue"), NpmVersionSource.COMMON); + NpmPackageVersion version = reader.get().get(new NpmPackageName("vue"), COMMON); assertThat(version).isEqualTo(new NpmPackageVersion("1.2.3")); } diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterNpmVersionsTest.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterNpmVersionsTest.java index ba8a377651d..1b861ce0fe7 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterNpmVersionsTest.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterNpmVersionsTest.java @@ -1,26 +1,25 @@ package tech.jhipster.lite.module.infrastructure.secondary.npm; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.util.Collection; import java.util.List; import org.junit.jupiter.api.Test; import tech.jhipster.lite.UnitTest; -import tech.jhipster.lite.module.domain.npm.NpmPackage; -import tech.jhipster.lite.module.domain.npm.NpmPackageName; -import tech.jhipster.lite.module.domain.npm.NpmPackageVersion; -import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions; -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; -import tech.jhipster.lite.module.domain.npm.UnknownNpmPackageException; +import tech.jhipster.lite.module.domain.npm.*; @UnitTest class JHipsterNpmVersionsTest { + private static final NpmVersionSource COMMON = JHLiteNpmVersionSource.COMMON.build(); + private static final NpmVersionSource VUE = JHLiteNpmVersionSource.VUE.build(); + @Test void shouldNotReadVersionWithoutReaders() { JHipsterNpmVersions versions = new JHipsterNpmVersions(List.of()); - assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), NpmVersionSource.COMMON)) + assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), COMMON)) .isExactlyInstanceOf(UnknownNpmPackageException.class) .hasMessageContaining("unknown"); } @@ -29,7 +28,7 @@ void shouldNotReadVersionWithoutReaders() { void shouldNotReadUnknownVersion() { JHipsterNpmVersions versions = new JHipsterNpmVersions(List.of(emptyReader())); - assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), NpmVersionSource.COMMON)) + assertThatThrownBy(() -> versions.get(new NpmPackageName("unknown"), COMMON)) .isExactlyInstanceOf(UnknownNpmPackageException.class) .hasMessageContaining("unknown"); } @@ -40,18 +39,17 @@ private NpmVersionsReader emptyReader() { @Test void shouldReadFirstReadableVersion() { - NpmVersionsReader firstReader = () -> - NpmPackagesVersions.builder().put(NpmVersionSource.COMMON, packages(new NpmPackage("vue", "1.2.3"))).build(); + NpmVersionsReader firstReader = () -> NpmPackagesVersions.builder().put(COMMON, packages(new NpmPackage("vue", "1.2.3"))).build(); NpmVersionsReader secondReader = () -> NpmPackagesVersions.builder() - .put(NpmVersionSource.COMMON, packages(new NpmPackage("vue", "1.2.7"))) - .put(NpmVersionSource.VUE, packages(new NpmPackage("vue", "1.2.7"))) + .put(COMMON, packages(new NpmPackage("vue", "1.2.7"))) + .put(VUE, packages(new NpmPackage("vue", "1.2.7"))) .build(); JHipsterNpmVersions versions = new JHipsterNpmVersions(List.of(emptyReader(), firstReader, secondReader)); - assertThat(versions.get("vue", NpmVersionSource.COMMON)).isEqualTo(new NpmPackageVersion("1.2.3")); - assertThat(versions.get("vue", NpmVersionSource.VUE)).isEqualTo(new NpmPackageVersion("1.2.7")); + assertThat(versions.get("vue", COMMON)).isEqualTo(new NpmPackageVersion("1.2.3")); + assertThat(versions.get("vue", JHLiteNpmVersionSource.VUE)).isEqualTo(new NpmPackageVersion("1.2.7")); } private static Collection packages(NpmPackage... packages) { From 3a86d7b30a8a58e4ae3af7428bb1cbf8f9749039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Mino?= Date: Mon, 16 Sep 2024 21:40:19 +0200 Subject: [PATCH 2/7] chore: merge VersionSource into JHLiteNpmVersionSource --- .../core/domain/AngularModuleFactory.java | 4 +-- .../domain/AngularOauth2ModuleFactory.java | 4 +-- .../core/domain/ReactCoreModulesFactory.java | 4 +-- .../i18n/domain/ReactI18nModuleFactory.java | 11 ++++---- .../jwt/domain/ReactJwtModuleFactory.java | 4 +-- .../core/domain/SvelteModuleFactory.java | 4 +-- .../cypress/domain/CypressModuleFactory.java | 8 +++--- .../domain/PlaywrightModuleFactory.java | 7 +++-- .../vue/core/domain/VueModulesFactory.java | 4 +-- .../init/domain/InitModuleFactory.java | 2 +- .../domain/PrettierModuleFactory.java | 2 +- .../ThymeleafTemplateModuleFactory.java | 2 +- .../core/domain/TypescriptModuleFactory.java | 2 +- .../domain/npm/JHLiteNpmVersionSource.java | 3 ++ .../domain/packagejson/VersionSource.java | 18 ------------ .../module/domain/JHipsterModulesFixture.java | 28 ++++++------------- .../FileSystemPackageJsonHandlerTest.java | 19 ++++++------- 17 files changed, 51 insertions(+), 75 deletions(-) delete mode 100644 src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java diff --git a/src/main/java/tech/jhipster/lite/generator/client/angular/core/domain/AngularModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/angular/core/domain/AngularModuleFactory.java index d2add283736..79635d3e276 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/angular/core/domain/AngularModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/angular/core/domain/AngularModuleFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.client.angular.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.ANGULAR; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.ANGULAR; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import tech.jhipster.lite.module.domain.Indentation; import tech.jhipster.lite.module.domain.JHipsterModule; diff --git a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java index 7231399175a..bdb1f695a98 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/angular/security/oauth2/domain/AngularOauth2ModuleFactory.java @@ -1,13 +1,13 @@ package tech.jhipster.lite.generator.client.angular.security.oauth2.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.ANGULAR; import java.util.regex.Pattern; import tech.jhipster.lite.module.domain.Indentation; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; import tech.jhipster.lite.module.domain.file.JHipsterSource; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.module.domain.replacement.ElementReplacer; import tech.jhipster.lite.module.domain.replacement.RegexReplacer; @@ -114,7 +114,7 @@ public JHipsterModule buildModule(JHipsterModuleProperties properties) { //@formatter:off return moduleBuilder(properties) .packageJson() - .addDependency(packageName("keycloak-js"), VersionSource.ANGULAR) + .addDependency(packageName("keycloak-js"), ANGULAR) .and() .files() .batch(SOURCE.append("auth"), APP_DESTINATION.append("auth")) diff --git a/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java b/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java index 2879f7d25bf..4b750dddee4 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/react/core/domain/ReactCoreModulesFactory.java @@ -1,9 +1,9 @@ package tech.jhipster.lite.generator.client.react.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.REACT; import static tech.jhipster.lite.module.domain.packagejson.NodeModuleFormat.MODULE; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.REACT; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; diff --git a/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java index c7043fcb28f..3acbf379247 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/react/i18n/domain/ReactI18nModuleFactory.java @@ -1,10 +1,11 @@ package tech.jhipster.lite.generator.client.react.i18n.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.REACT; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterSource; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.shared.error.domain.Assert; @@ -23,10 +24,10 @@ public JHipsterModule buildModule(JHipsterModuleProperties properties) { //@formatter:off return moduleBuilder(properties) .packageJson() - .addDependency(packageName("i18next"), VersionSource.COMMON) - .addDependency(packageName("i18next-browser-languagedetector"), VersionSource.COMMON) - .addDependency(packageName("i18next-http-backend"), VersionSource.COMMON) - .addDependency(packageName("react-i18next"), VersionSource.REACT) + .addDependency(packageName("i18next"), COMMON) + .addDependency(packageName("i18next-browser-languagedetector"), COMMON) + .addDependency(packageName("i18next-http-backend"), COMMON) + .addDependency(packageName("react-i18next"), REACT) .and() .files() .batch(APP_SOURCE, to(INDEX + "/app")) diff --git a/src/main/java/tech/jhipster/lite/generator/client/react/security/jwt/domain/ReactJwtModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/react/security/jwt/domain/ReactJwtModuleFactory.java index 35efb70b4bc..e87cfaf9c56 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/react/security/jwt/domain/ReactJwtModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/react/security/jwt/domain/ReactJwtModuleFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.client.react.security.jwt.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.REACT; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.REACT; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; diff --git a/src/main/java/tech/jhipster/lite/generator/client/svelte/core/domain/SvelteModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/svelte/core/domain/SvelteModuleFactory.java index 67902e21b29..16e8224959a 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/svelte/core/domain/SvelteModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/svelte/core/domain/SvelteModuleFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.client.svelte.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.SVELTE; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.SVELTE; import tech.jhipster.lite.module.domain.Indentation; import tech.jhipster.lite.module.domain.JHipsterModule; diff --git a/src/main/java/tech/jhipster/lite/generator/client/tools/cypress/domain/CypressModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/tools/cypress/domain/CypressModuleFactory.java index 1e2bd401cba..3bde81696a8 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/tools/cypress/domain/CypressModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/tools/cypress/domain/CypressModuleFactory.java @@ -1,13 +1,13 @@ package tech.jhipster.lite.generator.client.tools.cypress.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import java.util.function.Function; import java.util.regex.Pattern; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; import tech.jhipster.lite.module.domain.file.JHipsterSource; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.module.domain.replacement.RegexReplacer; import tech.jhipster.lite.shared.error.domain.Assert; @@ -48,7 +48,7 @@ public JHipsterModule buildComponentTestsModule(JHipsterModuleProperties propert //@formatter:off return commonCypressModuleBuilder(properties, CYPRESS_COMPONENT_TESTS, CYPRESS_COMPONENT_TESTS_EXCLUSION) .packageJson() - .addDevDependency(packageName("start-server-and-test"), VersionSource.COMMON) + .addDevDependency(packageName("start-server-and-test"), COMMON) .addScript(scriptKey("test:component"), scriptCommand("start-server-and-test start http://localhost:9000 'cypress open --e2e --config-file src/test/webapp/component/cypress-config.ts'")) .addScript( scriptKey("test:component:headless"), @@ -86,8 +86,8 @@ private static JHipsterModuleBuilder commonCypressModuleBuilder( //@formatter:off return moduleBuilder(properties) .packageJson() - .addDevDependency(packageName("cypress"), VersionSource.COMMON) - .addDevDependency(packageName("eslint-plugin-cypress"), VersionSource.COMMON) + .addDevDependency(packageName("cypress"), COMMON) + .addDevDependency(packageName("eslint-plugin-cypress"), COMMON) .and() .files() .batch(SOURCE, destinationFolder) diff --git a/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java index 4246d5ec920..7f24a33a8f7 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java @@ -1,11 +1,12 @@ package tech.jhipster.lite.generator.client.tools.playwright.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.*; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; import tech.jhipster.lite.module.domain.file.JHipsterSource; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; +import tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.shared.error.domain.Assert; @@ -23,7 +24,7 @@ public JHipsterModule buildComponentTestsModule(JHipsterModuleProperties propert //@formatter:off return commonPlaywrightModuleBuilder(properties, WEBAPP_COMPONENT_TESTS) .packageJson() - .addDevDependency(packageName("start-server-and-test"), VersionSource.COMMON) + .addDevDependency(packageName("start-server-and-test"), COMMON) .addScript(scriptKey("test:component"), scriptCommand("start-server-and-test start http://localhost:9000 'playwright test --ui --config src/test/webapp/component/playwright.config.ts'")) .addScript(scriptKey("test:component:headless"), scriptCommand("start-server-and-test start http://localhost:9000 'playwright test --config src/test/webapp/component/playwright.config.ts'")) .and() @@ -59,7 +60,7 @@ private static JHipsterModuleBuilder commonPlaywrightModuleBuilder( //@formatter:off return moduleBuilder(properties) .packageJson() - .addDevDependency(packageName("@playwright/test"), VersionSource.COMMON) + .addDevDependency(packageName("@playwright/test"), COMMON) .and() .files() .add(SOURCE.template("playwright.config.ts"), destinationFolder.append("playwright.config.ts")) diff --git a/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java b/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java index 39055c1524c..77f369b75fa 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/vue/core/domain/VueModulesFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.client.vue.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.VUE; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.VUE; import static tech.jhipster.lite.module.domain.replacement.ReplacementCondition.notContainingReplacement; import java.util.function.Consumer; diff --git a/src/main/java/tech/jhipster/lite/generator/init/domain/InitModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/init/domain/InitModuleFactory.java index 5153202ced2..94d7aa31953 100644 --- a/src/main/java/tech/jhipster/lite/generator/init/domain/InitModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/init/domain/InitModuleFactory.java @@ -1,7 +1,7 @@ package tech.jhipster.lite.generator.init.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; diff --git a/src/main/java/tech/jhipster/lite/generator/prettier/domain/PrettierModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/prettier/domain/PrettierModuleFactory.java index d8898df0064..853174848dc 100644 --- a/src/main/java/tech/jhipster/lite/generator/prettier/domain/PrettierModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/prettier/domain/PrettierModuleFactory.java @@ -1,7 +1,7 @@ package tech.jhipster.lite.generator.prettier.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; diff --git a/src/main/java/tech/jhipster/lite/generator/server/springboot/thymeleaf/template/domain/ThymeleafTemplateModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/server/springboot/thymeleaf/template/domain/ThymeleafTemplateModuleFactory.java index e86a339c3f8..cc40e203578 100644 --- a/src/main/java/tech/jhipster/lite/generator/server/springboot/thymeleaf/template/domain/ThymeleafTemplateModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/server/springboot/thymeleaf/template/domain/ThymeleafTemplateModuleFactory.java @@ -1,7 +1,7 @@ package tech.jhipster.lite.generator.server.springboot.thymeleaf.template.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import java.util.regex.Pattern; import tech.jhipster.lite.module.domain.JHipsterModule; diff --git a/src/main/java/tech/jhipster/lite/generator/typescript/core/domain/TypescriptModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/typescript/core/domain/TypescriptModuleFactory.java index 846154ab34e..66bcdde1ef2 100644 --- a/src/main/java/tech/jhipster/lite/generator/typescript/core/domain/TypescriptModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/typescript/core/domain/TypescriptModuleFactory.java @@ -1,8 +1,8 @@ package tech.jhipster.lite.generator.typescript.core.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import static tech.jhipster.lite.module.domain.packagejson.NodeModuleFormat.MODULE; -import static tech.jhipster.lite.module.domain.packagejson.VersionSource.COMMON; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterSource; diff --git a/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java b/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java index c2b18129c62..3c0760ddf41 100644 --- a/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java +++ b/src/main/java/tech/jhipster/lite/module/domain/npm/JHLiteNpmVersionSource.java @@ -1,5 +1,8 @@ package tech.jhipster.lite.module.domain.npm; +/** + * {@link NpmVersionSource} that are handled by JHipster Lite. + */ public enum JHLiteNpmVersionSource implements NpmVersionSourceFactory { COMMON("common"), ANGULAR("angular"), diff --git a/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java b/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java deleted file mode 100644 index 80327794d70..00000000000 --- a/src/main/java/tech/jhipster/lite/module/domain/packagejson/VersionSource.java +++ /dev/null @@ -1,18 +0,0 @@ -package tech.jhipster.lite.module.domain.packagejson; - -import tech.jhipster.lite.module.domain.npm.NpmVersionSource; -import tech.jhipster.lite.module.domain.npm.NpmVersionSourceFactory; - -@Deprecated(forRemoval = true) -public enum VersionSource implements NpmVersionSourceFactory { - COMMON, - ANGULAR, - REACT, - SVELTE, - VUE; - - @Override - public NpmVersionSource build() { - return new NpmVersionSource(name().toLowerCase()); - } -} diff --git a/src/test/java/tech/jhipster/lite/module/domain/JHipsterModulesFixture.java b/src/test/java/tech/jhipster/lite/module/domain/JHipsterModulesFixture.java index 2bbe71178e4..d306747defa 100644 --- a/src/test/java/tech/jhipster/lite/module/domain/JHipsterModulesFixture.java +++ b/src/test/java/tech/jhipster/lite/module/domain/JHipsterModulesFixture.java @@ -1,33 +1,23 @@ package tech.jhipster.lite.module.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.ANGULAR; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import tech.jhipster.lite.TestFileUtils; -import tech.jhipster.lite.module.domain.buildproperties.BuildProperty; -import tech.jhipster.lite.module.domain.buildproperties.PropertyKey; -import tech.jhipster.lite.module.domain.buildproperties.PropertyValue; -import tech.jhipster.lite.module.domain.gradleplugin.GradleMainBuildPlugin; -import tech.jhipster.lite.module.domain.gradleplugin.GradlePlugin; -import tech.jhipster.lite.module.domain.gradleplugin.GradleProfilePlugin; -import tech.jhipster.lite.module.domain.javabuild.ArtifactId; -import tech.jhipster.lite.module.domain.javabuild.GroupId; -import tech.jhipster.lite.module.domain.javabuild.MavenBuildExtension; -import tech.jhipster.lite.module.domain.javabuild.command.AddDirectJavaDependency; -import tech.jhipster.lite.module.domain.javabuild.command.JavaBuildCommands; -import tech.jhipster.lite.module.domain.javabuild.command.RemoveDirectJavaDependency; -import tech.jhipster.lite.module.domain.javabuild.command.SetVersion; +import tech.jhipster.lite.module.domain.buildproperties.*; +import tech.jhipster.lite.module.domain.gradleplugin.*; +import tech.jhipster.lite.module.domain.javabuild.*; +import tech.jhipster.lite.module.domain.javabuild.command.*; import tech.jhipster.lite.module.domain.javabuildprofile.BuildProfileId; import tech.jhipster.lite.module.domain.javadependency.*; import tech.jhipster.lite.module.domain.javadependency.JavaDependency.JavaDependencyOptionalValueBuilder; import tech.jhipster.lite.module.domain.javaproperties.SpringProperty; import tech.jhipster.lite.module.domain.javaproperties.SpringPropertyType; import tech.jhipster.lite.module.domain.mavenplugin.MavenPlugin; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.module.domain.properties.SpringConfigurationFormat; import tech.jhipster.lite.shared.error.domain.Assert; @@ -164,8 +154,8 @@ public static JHipsterModule module() { .packageJson() .addScript(scriptKey("build"), scriptCommand("ng build --output-path={{projectBuildDirectory}}/classes/static")) .addScript(scriptKey("serve"), scriptCommand("tikui-core serve")) - .addDependency(packageName("@angular/animations"), VersionSource.ANGULAR, packageName("@angular/core")) - .addDevDependency(packageName("@playwright/test"), VersionSource.COMMON) + .addDependency(packageName("@angular/animations"), ANGULAR, packageName("@angular/core")) + .addDevDependency(packageName("@playwright/test"), COMMON) .and() .mandatoryReplacements() .in(path("package.json")) diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java index e3da7ebc28a..529fa76a132 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/FileSystemPackageJsonHandlerTest.java @@ -25,7 +25,6 @@ import tech.jhipster.lite.module.domain.npm.NpmVersions; import tech.jhipster.lite.module.domain.packagejson.JHipsterModulePackageJson; import tech.jhipster.lite.module.domain.packagejson.JHipsterModulePackageJson.JHipsterModulePackageJsonBuilder; -import tech.jhipster.lite.module.domain.packagejson.VersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterProjectFolder; import tech.jhipster.lite.module.infrastructure.secondary.file.MustacheTemplateRenderer; @@ -70,7 +69,7 @@ void shouldNotAddNotNeededBlock() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@playwright/test"), VersionSource.COMMON)), + packageJson(p -> p.addDevDependency(packageName("@playwright/test"), COMMON)), emptyModuleContext() ); @@ -285,7 +284,7 @@ void shouldAddDevDependencyToPackageJsonWithoutDevDependencySection() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xmll"), VersionSource.COMMON)), + packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xmll"), COMMON)), emptyModuleContext() ); @@ -309,7 +308,7 @@ void shouldAddDevDependencyToPackageJsonWithDevDependencySection() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xmll"), VersionSource.COMMON)), + packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xmll"), COMMON)), emptyModuleContext() ); @@ -332,7 +331,7 @@ void shouldAddDevDependencyToPackageJsonUsingVersionSourcePackage() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@angular/animations"), VersionSource.ANGULAR, packageName("@angular/core"))), + packageJson(p -> p.addDevDependency(packageName("@angular/animations"), ANGULAR, packageName("@angular/core"))), emptyModuleContext() ); @@ -354,7 +353,7 @@ void shouldReplaceExistingDevDependency() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xml"), VersionSource.COMMON)), + packageJson(p -> p.addDevDependency(packageName("@prettier/plugin-xml"), COMMON)), emptyModuleContext() ); @@ -407,7 +406,7 @@ void shouldAddDependencyToPackageJsonWithoutDependencySection() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-core"), VersionSource.COMMON)), + packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-core"), COMMON)), emptyModuleContext() ); @@ -431,7 +430,7 @@ void shouldAddDependencyToPackageJsonWithDependencySection() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-coree"), VersionSource.COMMON)), + packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-coree"), COMMON)), emptyModuleContext() ); @@ -454,7 +453,7 @@ void shouldAddDependencyToPackageJsonUsingVersionSourcePackage() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDependency(packageName("@angular/animations"), VersionSource.ANGULAR, packageName("@angular/core"))), + packageJson(p -> p.addDependency(packageName("@angular/animations"), ANGULAR, packageName("@angular/core"))), emptyModuleContext() ); @@ -476,7 +475,7 @@ void shouldReplaceExistingDependency() { packageJson.handle( Indentation.DEFAULT, folder, - packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-core"), VersionSource.COMMON)), + packageJson(p -> p.addDependency(packageName("@fortawesome/fontawesome-svg-core"), COMMON)), emptyModuleContext() ); From 561350b38ddf6305b9baa294156ae03eeebb2f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Mino?= Date: Mon, 16 Sep 2024 21:41:38 +0200 Subject: [PATCH 3/7] chore: remove NpmVersionSourceFolder => convention over configuration --- .../npm/FileSystemNpmVersionReader.java | 11 +++++------ .../secondary/npm/NpmVersionSourceFolder.java | 19 ------------------- 2 files changed, 5 insertions(+), 25 deletions(-) delete mode 100644 src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionSourceFolder.java diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java index 257c90ce0b8..237da0e18dd 100644 --- a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java +++ b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java @@ -9,7 +9,6 @@ import tech.jhipster.lite.module.domain.ProjectFiles; import tech.jhipster.lite.module.domain.npm.*; import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions.NpmPackagesVersionsBuilder; -import tech.jhipster.lite.shared.enumeration.domain.Enums; @Repository @Order @@ -29,12 +28,12 @@ public FileSystemNpmVersionReader(ProjectFiles projectFiles) { public NpmPackagesVersions get() { NpmPackagesVersionsBuilder builder = NpmPackagesVersions.builder(); - Stream.of(JHLiteNpmVersionSource.values()).forEach(source -> builder.put(source.build(), sourcePackages(source))); + Stream.of(JHLiteNpmVersionSource.values()).forEach(source -> builder.put(source.build(), sourcePackages(source.build()))); return builder.build(); } - private Collection sourcePackages(JHLiteNpmVersionSource source) { + private Collection sourcePackages(NpmVersionSource source) { String sourceFile = readVersionsFile(source); return Stream.concat(packagesIn(sourceFile, DEV_DEPENDENCIES_PATTERN), packagesIn(sourceFile, DEPENDENCIES_PATTERN)).toList(); @@ -54,11 +53,11 @@ private Stream readPackages(String content) { return PACKAGES_PATTERN.matcher(content).results().map(result -> new NpmPackage(result.group(1), result.group(2))); } - private String readVersionsFile(JHLiteNpmVersionSource source) { + private String readVersionsFile(NpmVersionSource source) { return projectFiles.readString("/generator/dependencies/" + sourceFolder(source) + "/package.json"); } - private String sourceFolder(JHLiteNpmVersionSource source) { - return Enums.map(source, NpmVersionSourceFolder.class).folder(); + private String sourceFolder(NpmVersionSource source) { + return source.name().toLowerCase(); } } diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionSourceFolder.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionSourceFolder.java deleted file mode 100644 index 31429969f3b..00000000000 --- a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionSourceFolder.java +++ /dev/null @@ -1,19 +0,0 @@ -package tech.jhipster.lite.module.infrastructure.secondary.npm; - -enum NpmVersionSourceFolder { - COMMON("common"), - ANGULAR("angular"), - REACT("react"), - SVELTE("svelte"), - VUE("vue"); - - private final String folder; - - NpmVersionSourceFolder(String folder) { - this.folder = folder; - } - - String folder() { - return folder; - } -} From 77fd464c9b8f525a6eb9b0e197028820dee43b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Mino?= Date: Mon, 16 Sep 2024 21:45:46 +0200 Subject: [PATCH 4/7] fix(checkstyle): unused import --- .../tools/playwright/domain/PlaywrightModuleFactory.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java b/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java index 7f24a33a8f7..2fc881a0f9e 100644 --- a/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java +++ b/src/main/java/tech/jhipster/lite/generator/client/tools/playwright/domain/PlaywrightModuleFactory.java @@ -1,12 +1,11 @@ package tech.jhipster.lite.generator.client.tools.playwright.domain; import static tech.jhipster.lite.module.domain.JHipsterModule.*; -import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.*; +import static tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource.COMMON; import tech.jhipster.lite.module.domain.JHipsterModule; import tech.jhipster.lite.module.domain.file.JHipsterDestination; import tech.jhipster.lite.module.domain.file.JHipsterSource; -import tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource; import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties; import tech.jhipster.lite.shared.error.domain.Assert; From 1765bc984df3cefd5796476c774644908a317ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Mino?= Date: Tue, 17 Sep 2024 13:19:27 +0200 Subject: [PATCH 5/7] refactor: change FileSystemNpmVersionReader so that it's reusable by custom jhlite projects See #10851 --- .../npm/FileSystemNpmVersionReader.java | 25 +++++++++++++------ ...HipsterLiteFileSystemNpmVersionReader.java | 24 ++++++++++++++++++ .../npm/FileSystemNpmVersionReaderTest.java | 9 +++++-- 3 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterLiteFileSystemNpmVersionReader.java diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java index 237da0e18dd..7413a21daab 100644 --- a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java +++ b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReader.java @@ -4,31 +4,40 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Stream; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Repository; import tech.jhipster.lite.module.domain.ProjectFiles; import tech.jhipster.lite.module.domain.npm.*; import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions.NpmPackagesVersionsBuilder; +import tech.jhipster.lite.shared.error.domain.Assert; -@Repository -@Order -class FileSystemNpmVersionReader implements NpmVersionsReader { +public class FileSystemNpmVersionReader implements NpmVersionsReader { private static final Pattern DEV_DEPENDENCIES_PATTERN = Pattern.compile("\"devDependencies\"\\s*:\\s*\\{([^}]*)}", Pattern.DOTALL); private static final Pattern DEPENDENCIES_PATTERN = Pattern.compile("\"dependencies\"\\s*:\\s*\\{([^}]*)}", Pattern.DOTALL); private static final Pattern PACKAGES_PATTERN = Pattern.compile("\"([^\"]+)\"\\s*:\\s*\"([^\"]+)\"", Pattern.DOTALL); private final ProjectFiles projectFiles; + private final Collection npmVersionSources; + private final String parentInputFolder; + + public FileSystemNpmVersionReader( + ProjectFiles projectFiles, + Collection npmVersionSources, + String parentInputFolder + ) { + Assert.notNull("projectFiles", projectFiles); + Assert.notNull("npmVersionSources", npmVersionSources); + Assert.notBlank("parentInputFolder", parentInputFolder); - public FileSystemNpmVersionReader(ProjectFiles projectFiles) { this.projectFiles = projectFiles; + this.npmVersionSources = npmVersionSources.stream().map(NpmVersionSourceFactory::build).toList(); + this.parentInputFolder = parentInputFolder; } @Override public NpmPackagesVersions get() { NpmPackagesVersionsBuilder builder = NpmPackagesVersions.builder(); - Stream.of(JHLiteNpmVersionSource.values()).forEach(source -> builder.put(source.build(), sourcePackages(source.build()))); + npmVersionSources.forEach(source -> builder.put(source, sourcePackages(source))); return builder.build(); } @@ -54,7 +63,7 @@ private Stream readPackages(String content) { } private String readVersionsFile(NpmVersionSource source) { - return projectFiles.readString("/generator/dependencies/" + sourceFolder(source) + "/package.json"); + return projectFiles.readString(parentInputFolder + sourceFolder(source) + "/package.json"); } private String sourceFolder(NpmVersionSource source) { diff --git a/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterLiteFileSystemNpmVersionReader.java b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterLiteFileSystemNpmVersionReader.java new file mode 100644 index 00000000000..91892719b87 --- /dev/null +++ b/src/main/java/tech/jhipster/lite/module/infrastructure/secondary/npm/JHipsterLiteFileSystemNpmVersionReader.java @@ -0,0 +1,24 @@ +package tech.jhipster.lite.module.infrastructure.secondary.npm; + +import java.util.List; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Repository; +import tech.jhipster.lite.module.domain.ProjectFiles; +import tech.jhipster.lite.module.domain.npm.JHLiteNpmVersionSource; +import tech.jhipster.lite.module.domain.npm.NpmPackagesVersions; + +@Order +@Repository +public class JHipsterLiteFileSystemNpmVersionReader implements NpmVersionsReader { + + private final FileSystemNpmVersionReader reader; + + public JHipsterLiteFileSystemNpmVersionReader(ProjectFiles projectFiles) { + reader = new FileSystemNpmVersionReader(projectFiles, List.of(JHLiteNpmVersionSource.values()), "/generator/dependencies/"); + } + + @Override + public NpmPackagesVersions get() { + return reader.get(); + } +} diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java index 8891c4a01d6..f01a76a7412 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/FileSystemNpmVersionReaderTest.java @@ -4,9 +4,10 @@ import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.when; +import java.util.List; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import tech.jhipster.lite.UnitTest; @@ -22,9 +23,13 @@ class FileSystemNpmVersionReaderTest { @Mock private ProjectFiles projectFiles; - @InjectMocks private FileSystemNpmVersionReader reader; + @BeforeEach + void setup() { + reader = new FileSystemNpmVersionReader(projectFiles, List.of(JHLiteNpmVersionSource.COMMON), "not-used"); + } + @Test void shouldGetVersionFromDevSource() { mockProjectFiles(); From c7f2953143d4cbe7b3eceabb3a7521cff03746da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Mino?= Date: Tue, 17 Sep 2024 13:20:52 +0200 Subject: [PATCH 6/7] test: give higher priority to customReaders in npm and java dependencies readers --- .../javadependency/JavaDependenciesFixture.java | 4 ++-- .../infrastructure/secondary/npm/NpmVersionsFixture.java | 9 +++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java index b5df100fc41..9cd686138eb 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java @@ -25,8 +25,8 @@ public static JavaDependenciesVersionsRepository javaVersionsRepository( return new JHipsterJavaDependenciesVersionsRepository( Stream.concat( - Stream.of(new MavenDependenciesReader(filesReader), new GradleVersionCatalogDependenciesReader(filesReader)), - customReaders.stream() + customReaders.stream(), + Stream.of(new MavenDependenciesReader(filesReader), new GradleVersionCatalogDependenciesReader(filesReader)) ).toList() ); } diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsFixture.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsFixture.java index 932c5ef220d..c71a07f2b72 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsFixture.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/npm/NpmVersionsFixture.java @@ -1,7 +1,6 @@ package tech.jhipster.lite.module.infrastructure.secondary.npm; import java.util.Collection; -import java.util.List; import java.util.stream.Stream; import tech.jhipster.lite.module.domain.ProjectFiles; import tech.jhipster.lite.module.domain.npm.NpmVersions; @@ -11,13 +10,11 @@ public final class NpmVersionsFixture { private NpmVersionsFixture() {} - public static NpmVersions npmVersions(ProjectFiles filesReader) { - return new JHipsterNpmVersions(List.of(new FileSystemNpmVersionReader(filesReader))); - } - public static NpmVersions npmVersions(ProjectFiles filesReader, Collection customReaders) { Assert.notNull("customReaders", customReaders); - return new JHipsterNpmVersions(Stream.concat(Stream.of(new FileSystemNpmVersionReader(filesReader)), customReaders.stream()).toList()); + return new JHipsterNpmVersions( + Stream.concat(customReaders.stream(), Stream.of(new JHipsterLiteFileSystemNpmVersionReader(filesReader))).toList() + ); } } From 00d52bfd13c8ea06bfe1a9421c27f4ef4932ce72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Mino?= Date: Tue, 17 Sep 2024 13:21:02 +0200 Subject: [PATCH 7/7] chore: remove unused code --- .../secondary/javadependency/JavaDependenciesFixture.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java index 9cd686138eb..b9d2a1986f9 100644 --- a/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java +++ b/src/test/java/tech/jhipster/lite/module/infrastructure/secondary/javadependency/JavaDependenciesFixture.java @@ -13,10 +13,6 @@ public final class JavaDependenciesFixture { private JavaDependenciesFixture() {} - public static JavaDependenciesVersionsRepository javaVersionsRepository(ProjectFiles filesReader) { - return javaVersionsRepository(filesReader, List.of()); - } - public static JavaDependenciesVersionsRepository javaVersionsRepository( ProjectFiles filesReader, Collection customReaders