diff --git a/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationInvoker.java b/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationInvoker.java index b63c8cfb..7f159f94 100644 --- a/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationInvoker.java +++ b/initializr-web/src/main/java/io/spring/initializr/web/project/ProjectGenerationInvoker.java @@ -20,9 +20,9 @@ import java.io.IOException; import java.io.StringWriter; import java.nio.file.Path; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import io.spring.initializr.generator.buildsystem.BuildItemResolver; import io.spring.initializr.generator.buildsystem.BuildWriter; @@ -56,7 +56,7 @@ public class ProjectGenerationInvoker { private final ProjectRequestToDescriptionConverter requestConverter; - private transient Map> temporaryFiles = new LinkedHashMap<>(); + private transient Map> temporaryFiles = new ConcurrentHashMap<>(); public ProjectGenerationInvoker(ApplicationContext parentApplicationContext, ProjectRequestToDescriptionConverter requestConverter) { @@ -143,7 +143,14 @@ public class ProjectGenerationInvoker { } private void addTempFile(Path group, Path file) { - this.temporaryFiles.computeIfAbsent(group, (key) -> new ArrayList<>()).add(file); + this.temporaryFiles.compute(group, (path, paths) -> { + List newPaths = paths; + if (newPaths == null) { + newPaths = new ArrayList<>(); + } + newPaths.add(file); + return newPaths; + }); } /**