From da8ea1d33a7fe0fe39763ab1cf10465f3e5b8913 Mon Sep 17 00:00:00 2001 From: aboyko Date: Wed, 7 Dec 2022 10:37:35 -0500 Subject: [PATCH] NPE while applying more than one root recipes selected in eclipse --- .../tooling/boot/ls/commands/RecipeTreeModel.java | 1 + .../boot/java/rewrite/RewriteRecipeRepository.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/RecipeTreeModel.java b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/RecipeTreeModel.java index 9d15a2eba..318c553e7 100644 --- a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/RecipeTreeModel.java +++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/RecipeTreeModel.java @@ -124,6 +124,7 @@ public class RecipeTreeModel { return recipes[0]; } else { RecipeDescriptor aggregate = new RecipeDescriptor(); + aggregate.name = recipes.length + " recipes"; aggregate.displayName = recipes.length + " recipes"; aggregate.description = "Multiple recipes to be applied. Number of recipes " + recipes.length; aggregate.tags = Arrays.stream(recipes).flatMap(r -> r.tags.stream()).collect(Collectors.toSet()); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java index ef444b156..6cf73b2b8 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRecipeRepository.java @@ -349,10 +349,17 @@ public class RewriteRecipeRepository implements ApplicationContextAware { throw new RuntimeException("No recipes found to perform!"); } else if (aggregateRecipe.getRecipeList().size() == 1) { Recipe r = aggregateRecipe.getRecipeList().get(0); - String progressToken = params.getWorkDoneToken() == null || params.getWorkDoneToken().getLeft() == null ? r.getName() : params.getWorkDoneToken().getLeft(); + String progressToken = params.getWorkDoneToken() == null + || params.getWorkDoneToken().getLeft() == null + ? (r.getName() == null ? UUID.randomUUID().toString() : r.getName()) + : params.getWorkDoneToken().getLeft(); return apply(r, uri, progressToken); } else { - String progressToken = params.getWorkDoneToken() == null || params.getWorkDoneToken().getLeft() == null ? aggregateRecipe.getName() : params.getWorkDoneToken().getLeft(); + String progressToken = params.getWorkDoneToken() == null + || params.getWorkDoneToken().getLeft() == null + ? (aggregateRecipe.getName() == null ? UUID.randomUUID().toString() + : aggregateRecipe.getName()) + : params.getWorkDoneToken().getLeft(); return apply(aggregateRecipe, uri, progressToken); } });