Skip to content

Commit

Permalink
Merge pull request #1870 from DamnClin/modules-post-actions
Browse files Browse the repository at this point in the history
Module post actions
  • Loading branch information
pascalgrimaud authored May 28, 2022
2 parents d495252 + db9efdc commit 2f44c56
Show file tree
Hide file tree
Showing 12 changed files with 141 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import tech.jhipster.lite.generator.module.domain.javadependency.JavaDependency;
import tech.jhipster.lite.generator.module.domain.javadependency.JavaDependency.JavaDependencyGroupIdBuilder;
import tech.jhipster.lite.generator.module.domain.javadependency.VersionSlug;
import tech.jhipster.lite.generator.module.domain.postaction.JHipsterModulePostActions;
import tech.jhipster.lite.generator.module.domain.postaction.JHipsterModulePostActions.JHipsterModulePostActionsBuilder;
import tech.jhipster.lite.generator.module.domain.replacement.JHipsterModuleReplacements;
import tech.jhipster.lite.generator.module.domain.replacement.JHipsterModuleReplacements.JHipsterModuleReplacementsBuilder;

Expand All @@ -25,6 +27,7 @@ public class JHipsterModule {
private final JHipsterModuleContext context;
private final JHipsterModuleJavaDependencies javaDependencies;
private final JHipsterModulePreActions preActions;
private final JHipsterModulePostActions postActions;

private JHipsterModule(JHipsterModuleBuilder builder) {
projectFolder = builder.projectFolder;
Expand All @@ -34,6 +37,7 @@ private JHipsterModule(JHipsterModuleBuilder builder) {
context = builder.context.build();
javaDependencies = builder.javaDependencies.build();
preActions = builder.preActions.build();
postActions = builder.postActions.build();
}

public static JHipsterModuleBuilder moduleForProject(JHipsterProjectFolder project) {
Expand Down Expand Up @@ -96,6 +100,10 @@ public JHipsterModulePreActions preActions() {
return preActions;
}

public JHipsterModulePostActions postActions() {
return postActions;
}

public static class JHipsterModuleBuilder {

private final JHipsterProjectFolder projectFolder;
Expand All @@ -104,6 +112,7 @@ public static class JHipsterModuleBuilder {
private final JHipsterModuleReplacementsBuilder replacements = JHipsterModuleReplacements.builder(this);
private final JHipsterModuleJavaDependenciesBuilder javaDependencies = JHipsterModuleJavaDependencies.builder(this);
private final JHipsterModulePreActionsBuilder preActions = JHipsterModulePreActions.builder(this);
private final JHipsterModulePostActionsBuilder postActions = JHipsterModulePostActions.builder(this);

private JHipsterModuleBuilder(JHipsterProjectFolder projectFolder) {
Assert.notNull("projectFolder", projectFolder);
Expand Down Expand Up @@ -131,6 +140,10 @@ public JHipsterModulePreActionsBuilder preActions() {
return preActions;
}

public JHipsterModulePostActionsBuilder postActions() {
return postActions;
}

public JHipsterModule build() {
return new JHipsterModule(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.generator.module.domain.javadependency.command.JavaDependenciesCommands;
import tech.jhipster.lite.generator.module.domain.postaction.JHipsterModulePostActions;
import tech.jhipster.lite.generator.module.domain.replacement.JHipsterModuleReplacements;

public class JHipsterModuleChanges {
Expand All @@ -12,6 +13,7 @@ public class JHipsterModuleChanges {
private final JHipsterModuleReplacements replacements;
private final JavaDependenciesCommands javaDependencies;
private final JHipsterModulePreActions preActions;
private final JHipsterModulePostActions postActions;

private JHipsterModuleChanges(JHipsterModuleChangesBuilder builder) {
assertMandatoryFields(builder);
Expand All @@ -22,6 +24,7 @@ private JHipsterModuleChanges(JHipsterModuleChangesBuilder builder) {
replacements = builder.replacements;
javaDependencies = builder.javaDependencies;
preActions = builder.preActions;
postActions = builder.postActions;
}

private void assertMandatoryFields(JHipsterModuleChangesBuilder builder) {
Expand All @@ -31,6 +34,7 @@ private void assertMandatoryFields(JHipsterModuleChangesBuilder builder) {
Assert.notNull("replacements", builder.replacements);
Assert.notNull("javaDependencies", builder.javaDependencies);
Assert.notNull("preActions", builder.preActions);
Assert.notNull("postActions", builder.postActions);
}

public static JHipsterModuleChangesProjectFolderBuilder builder() {
Expand Down Expand Up @@ -61,21 +65,27 @@ public JHipsterModulePreActions preActions() {
return preActions;
}

public JHipsterModulePostActions postActions() {
return postActions;
}

public static class JHipsterModuleChangesBuilder
implements
JHipsterModuleChangesProjectFolderBuilder,
JHipsterModuleChangesIndentationBuilder,
JHipsterModuleChangesFilesBuilder,
JHipsterModuleChangesReplacementsBuilder,
JHipsterModuleChangesJavaDependenciesBuilder,
JHipsterModuleChangesPreActionsBuilder {
JHipsterModuleChangesPreActionsBuilder,
JHipsterModuleChangesPostActionsBuilder {

private JHipsterProjectFolder projectFolder;
private TemplatedFiles files;
private JHipsterModuleReplacements replacements;
private JavaDependenciesCommands javaDependencies;
private Indentation indentation;
private JHipsterModulePreActions preActions;
private JHipsterModulePostActions postActions;

private JHipsterModuleChangesBuilder() {}

Expand Down Expand Up @@ -115,9 +125,16 @@ public JHipsterModuleChangesPreActionsBuilder javaDependencies(JavaDependenciesC
}

@Override
public JHipsterModuleChanges preActions(JHipsterModulePreActions preActions) {
public JHipsterModuleChangesPostActionsBuilder preActions(JHipsterModulePreActions preActions) {
this.preActions = preActions;

return this;
}

@Override
public JHipsterModuleChanges postActions(JHipsterModulePostActions postActions) {
this.postActions = postActions;

return new JHipsterModuleChanges(this);
}
}
Expand All @@ -143,6 +160,10 @@ public interface JHipsterModuleChangesJavaDependenciesBuilder {
}

public interface JHipsterModuleChangesPreActionsBuilder {
JHipsterModuleChanges preActions(JHipsterModulePreActions preActions);
JHipsterModuleChangesPostActionsBuilder preActions(JHipsterModulePreActions preActions);
}

public interface JHipsterModuleChangesPostActionsBuilder {
JHipsterModuleChanges postActions(JHipsterModulePostActions postActions);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.util.ArrayList;
import java.util.Collection;
import tech.jhipster.lite.common.domain.JHipsterCollections;
import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.generator.module.domain.JHipsterModule.JHipsterModuleBuilder;

Expand All @@ -11,14 +10,14 @@ public class JHipsterModulePreActions {
private final Collection<Runnable> actions;

private JHipsterModulePreActions(JHipsterModulePreActionsBuilder builder) {
actions = JHipsterCollections.immutable(builder.actions);
actions = builder.actions;
}

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

public void apply() {
public void run() {
actions.forEach(Runnable::run);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ public void apply(Indentation indentation, JHipsterModule module) {
.files(module.templatedFiles())
.replacements(module.replacements())
.javaDependencies(buildDependenciesChanges(module))
.preActions(module.preActions());
.preActions(module.preActions())
.postActions(module.postActions());

modules.apply(changes);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,8 @@ public Path filePath(String file) {

return Paths.get(folder(), file);
}

public String get() {
return folder();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package tech.jhipster.lite.generator.module.domain.postaction;

import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.generator.module.domain.JHipsterProjectFolder;

public record JHipsterModuleExecutionContext(JHipsterProjectFolder projectFolder) {
public JHipsterModuleExecutionContext {
Assert.notNull("projectFolder", projectFolder);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package tech.jhipster.lite.generator.module.domain.postaction;

import java.util.ArrayList;
import java.util.Collection;
import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.generator.module.domain.JHipsterModule.JHipsterModuleBuilder;

public class JHipsterModulePostActions {

private final Collection<RunnableInContext> actions;

private JHipsterModulePostActions(JHipsterModulePostActionsBuilder builder) {
actions = builder.actions;
}

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

public void run(JHipsterModuleExecutionContext context) {
Assert.notNull("context", context);

actions.forEach(action -> action.run(context));
}

public static class JHipsterModulePostActionsBuilder {

private final JHipsterModuleBuilder module;
private final Collection<RunnableInContext> actions = new ArrayList<>();

private JHipsterModulePostActionsBuilder(JHipsterModuleBuilder module) {
Assert.notNull("module", module);

this.module = module;
}

public JHipsterModulePostActionsBuilder add(Runnable action) {
Assert.notNull("action", action);

return add(context -> action.run());
}

public JHipsterModulePostActionsBuilder add(RunnableInContext action) {
Assert.notNull("action", action);

actions.add(action);

return this;
}

public JHipsterModuleBuilder and() {
return module;
}

public JHipsterModulePostActions build() {
return new JHipsterModulePostActions(this);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package tech.jhipster.lite.generator.module.domain.postaction;

@FunctionalInterface
public interface RunnableInContext {
void run(JHipsterModuleExecutionContext context);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import tech.jhipster.lite.error.domain.Assert;
import tech.jhipster.lite.generator.module.domain.JHipsterModuleChanges;
import tech.jhipster.lite.generator.module.domain.JHipsterModulesRepository;
import tech.jhipster.lite.generator.module.domain.postaction.JHipsterModuleExecutionContext;

@Repository
class FileSystemJHipsterModulesRepository implements JHipsterModulesRepository {
Expand All @@ -23,11 +24,12 @@ public FileSystemJHipsterModulesRepository(
public void apply(JHipsterModuleChanges changes) {
Assert.notNull("changes", changes);

changes.preActions().apply();
changes.preActions().run();

files.create(changes.projectFolder(), changes.files());
javaDependencies.handle(changes.indentation(), changes.projectFolder(), changes.javaDependenciesCommands());

changes.replacements().apply(changes.projectFolder());
changes.postActions().run(new JHipsterModuleExecutionContext(changes.projectFolder()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
class MissingPomException extends GeneratorException {

public MissingPomException(JHipsterProjectFolder folder) {
super("Can't find pom.xml in " + folder.folder());
super("Can't find pom.xml in " + folder.get());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ public static JHipsterModule module() {
.add(() -> log.debug("Applying fixture module"))
.add(() -> log.debug("You shouldn't add this by default in your modules :D"))
.and()
.postActions()
.add(() -> log.debug("Fixture module applied"))
.add(context -> log.debug("Applied on {}", context.projectFolder().get()))
.and()
.build();
// @formatter:on
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ void shouldApplyModule() {
.containing("Dummy replacement");
// @formatter:on

logs.assertLogged(Level.DEBUG, "Applying fixture module");
logs.assertLogged(Level.DEBUG, "You shouldn't add this by default in your modules :D");
assertPreActions();
assertPostActions();
}

private static void addPomToproject(JHipsterProjectFolder project) {
Expand All @@ -89,4 +89,15 @@ private static void addPomToproject(JHipsterProjectFolder project) {
throw new AssertionError(e);
}
}

private void assertPreActions() {
logs.assertLogged(Level.DEBUG, "Applying fixture module");
logs.assertLogged(Level.DEBUG, "You shouldn't add this by default in your modules :D");
}

private void assertPostActions() {
logs.assertLogged(Level.DEBUG, "Fixture module applied");
logs.assertLogged(Level.DEBUG, "Applied on");
logs.assertLogged(Level.DEBUG, System.getProperty("java.io.tmpdir"));
}
}

0 comments on commit 2f44c56

Please sign in to comment.