Skip to content

Commit

Permalink
respect the immutability of JHipsterModulePackageJson
Browse files Browse the repository at this point in the history
  • Loading branch information
renanfranca committed May 8, 2024
1 parent d7db1c5 commit f78cb10
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import tech.jhipster.lite.module.domain.javadependency.JavaDependenciesVersionsRepository;
import tech.jhipster.lite.module.domain.javadependency.ProjectJavaDependenciesRepository;
import tech.jhipster.lite.module.domain.packagejson.JHipsterModulePackageJson;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;
import tech.jhipster.lite.module.domain.properties.JHipsterProjectFolder;
import tech.jhipster.lite.module.domain.replacement.ContentReplacer;
import tech.jhipster.lite.module.domain.replacement.ContentReplacers;
Expand Down Expand Up @@ -84,7 +85,7 @@ public JHipsterModuleApplied apply(JHipsterModuleToApply moduleToApply) {
.merge(buildGradlePluginsChanges(module))
.merge(buildGradleConfigurationsChanges(module))
)
.packageJson(buildPackageJson(module))
.packageJson(buildPackageJsonChanges(module, moduleToApply.properties()))
.preActions(module.preActions())
.postActions(module.postActions())
.springFactories(module.springFactories());
Expand All @@ -111,12 +112,12 @@ private Optional<JavaBuildTool> detectedJavaBuildTool(JHipsterModule module) {
return javaBuildTools.detect(module.projectFolder()).or(() -> javaBuildTools.detect(module.files()));
}

private JHipsterModulePackageJson buildPackageJson(JHipsterModule module) {
private JHipsterModulePackageJson buildPackageJsonChanges(JHipsterModule module, JHipsterModuleProperties properties) {
JHipsterModuleContext context = detectedJavaBuildTool(module)
.map(javaBuildTool -> module.context().withJavaBuildTool(javaBuildTool))
.orElse(module.context());

return module.packageJson().withContext(context);
return module.packageJson().buildChanges(context, properties);
}

private JHipsterTemplatedFiles buildTemplatedFiles(JHipsterModule module) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package tech.jhipster.lite.module.domain.packagejson;

import static tech.jhipster.lite.module.domain.JHipsterModule.*;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Optional;
import tech.jhipster.lite.module.domain.JHipsterModule.JHipsterModuleBuilder;
import tech.jhipster.lite.module.domain.JHipsterModuleContext;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;
import tech.jhipster.lite.shared.error.domain.Assert;

public final class JHipsterModulePackageJson {
Expand All @@ -15,7 +17,7 @@ public final class JHipsterModulePackageJson {
private final PackageJsonDependencies devDependencies;
private final PackageJsonDependencies devDependenciesToRemove;
private final PackageJsonType type;
private Optional<JHipsterModuleContext> context;
private final Optional<JHipsterModuleContext> context;

private JHipsterModulePackageJson(JHipsterModulePackageJsonBuilder builder) {
scripts = new Scripts(builder.scripts);
Expand All @@ -24,13 +26,49 @@ private JHipsterModulePackageJson(JHipsterModulePackageJsonBuilder builder) {
devDependencies = new PackageJsonDependencies(builder.devDependencies);
devDependenciesToRemove = new PackageJsonDependencies(builder.devDependenciesToRemove);
type = new PackageJsonType(builder.type);
context = Optional.empty();
context = Optional.ofNullable(builder.context);
}

public static JHipsterModulePackageJsonBuilder builder(JHipsterModuleBuilder module) {
return new JHipsterModulePackageJsonBuilder(module);
}

public JHipsterModulePackageJson buildChanges(JHipsterModuleContext context, JHipsterModuleProperties properties) {
JHipsterModulePackageJsonBuilder builder = JHipsterModulePackageJson.builder(moduleBuilder(properties))
.addType(type.type())
.addContext(context);

scripts.stream().forEach(script -> builder.addScript(script.key(), script.command()));
dependencies
.stream()
.forEach(
dependency ->
dependency
.versionPackageName()
.ifPresentOrElse(
versionPackageName -> builder.addDependency(dependency.packageName(), dependency.versionSource(), versionPackageName),
() -> builder.addDependency(dependency.packageName(), dependency.versionSource())
)
);
dependenciesToRemove.stream().forEach(dependency -> builder.removeDependency(dependency.packageName(), dependency.versionSource()));
devDependencies
.stream()
.forEach(
dependency ->
dependency
.versionPackageName()
.ifPresentOrElse(
versionPackageName -> builder.addDevDependency(dependency.packageName(), dependency.versionSource(), versionPackageName),
() -> builder.addDevDependency(dependency.packageName(), dependency.versionSource())
)
);
devDependenciesToRemove
.stream()
.forEach(dependency -> builder.removeDevDependency(dependency.packageName(), dependency.versionSource()));

return builder.build();
}

public boolean isEmpty() {
return (
scripts.isEmpty() &&
Expand Down Expand Up @@ -69,12 +107,6 @@ public Optional<JHipsterModuleContext> context() {
return context;
}

public JHipsterModulePackageJson withContext(JHipsterModuleContext context) {
this.context = Optional.ofNullable(context);

return this;
}

public static final class JHipsterModulePackageJsonBuilder {

private final JHipsterModuleBuilder module;
Expand All @@ -84,6 +116,7 @@ public static final class JHipsterModulePackageJsonBuilder {
private final Collection<PackageJsonDependency> dependenciesToRemove = new ArrayList<>();
private final Collection<PackageJsonDependency> devDependenciesToRemove = new ArrayList<>();
private String type;
private JHipsterModuleContext context;

private JHipsterModulePackageJsonBuilder(JHipsterModuleBuilder module) {
Assert.notNull("module", module);
Expand Down Expand Up @@ -149,6 +182,12 @@ public JHipsterModulePackageJsonBuilder addType(String t) {
return this;
}

public JHipsterModulePackageJsonBuilder addContext(JHipsterModuleContext context) {
this.context = context;

return this;
}

public JHipsterModuleBuilder and() {
return module;
}
Expand Down

0 comments on commit f78cb10

Please sign in to comment.