From 6c261fd8f10f5d2491ee6de0d169ac0d21f7d53c Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Fri, 27 Dec 2019 17:31:22 +0100 Subject: [PATCH] Make sure ProjectDescriptionDiff is created eagerly This commit makes sure that the diff instance is created immediately, taking a snapshot of the ProjectDescription before the customizers are applied on it. Previously, the instance was created as part of the supplier and therefore created only once a component was requiring it. See gh-1023 --- .../initializr/generator/project/ProjectGenerator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectGenerator.java b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectGenerator.java index c4bce087..5c5f3bcb 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectGenerator.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/project/ProjectGenerator.java @@ -123,7 +123,10 @@ public class ProjectGenerator { MutableProjectDescription mutableDescription = (MutableProjectDescription) description; ProjectDescriptionDiffFactory diffFactory = context.getBeanProvider(ProjectDescriptionDiffFactory.class) .getIfAvailable(DefaultProjectDescriptionDiffFactory::new); - context.registerBean(ProjectDescriptionDiff.class, () -> diffFactory.create(mutableDescription)); + // Create the diff here so that it takes a copy of the description + // immediately + ProjectDescriptionDiff diff = diffFactory.create(mutableDescription); + context.registerBean(ProjectDescriptionDiff.class, () -> diff); context.getBeanProvider(ProjectDescriptionCustomizer.class).orderedStream() .forEach((customizer) -> customizer.customize(mutableDescription)); }