diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/providers/DataRepositoryStandardCompletionProvider.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/providers/DataRepositoryStandardCompletionProvider.java index d1546eddd..a251d4f21 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/providers/DataRepositoryStandardCompletionProvider.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/providers/DataRepositoryStandardCompletionProvider.java @@ -76,7 +76,7 @@ public class DataRepositoryStandardCompletionProvider implements DataRepositoryC completion.append(StringUtils.uncapitalize(domainProperty.getName())); completion.append(");"); - return FindByCompletionProposal.createProposal(offset, CompletionItemKind.Method, prefix, label.toString(), completion.toString(), false, ASTUtils.getAdditionalEdit((CompilationUnit)node.getRoot(), imprts, doc)); + return FindByCompletionProposal.createProposal(offset, CompletionItemKind.Method, prefix, label.toString(), completion.toString(), false, ASTUtils.getImportsEdit((CompilationUnit)node.getRoot(), imprts, doc)); } } \ No newline at end of file diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/providers/prefixsensitive/DataRepositoryPrefixSensitiveCompletionProvider.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/providers/prefixsensitive/DataRepositoryPrefixSensitiveCompletionProvider.java index 9cdde8979..cb9c27644 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/providers/prefixsensitive/DataRepositoryPrefixSensitiveCompletionProvider.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/providers/prefixsensitive/DataRepositoryPrefixSensitiveCompletionProvider.java @@ -141,7 +141,7 @@ public class DataRepositoryPrefixSensitiveCompletionProvider implements DataRepo newText.append(";"); int replaceStart = calculateReplaceOffset(offset, localPrefix, fullPrefix, returnType); edits.replace(replaceStart, offset, newText.toString()); - Optional additionalEdits = ASTUtils.getAdditionalEdit((CompilationUnit) node.getRoot(), imports, doc); + Optional additionalEdits = ASTUtils.getImportsEdit((CompilationUnit) node.getRoot(), imports, doc); ICompletionProposal proposal = new FindByCompletionProposal(signature, CompletionItemKind.Method, edits, null, null, additionalEdits, signature, false); completions.add(proposal); } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/snippets/JavaSnippetCompletion.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/snippets/JavaSnippetCompletion.java index 9b018a425..ffa27007a 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/snippets/JavaSnippetCompletion.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/snippets/JavaSnippetCompletion.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2023 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,7 +14,7 @@ import java.util.Optional; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.lsp4j.CompletionItemKind; -import org.springframework.ide.vscode.boot.java.jdt.imports.ImportRewrite; +import org.springframework.ide.vscode.boot.java.utils.ASTUtils; import org.springframework.ide.vscode.commons.languageserver.completion.DocumentEdits; import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionProposal; import org.springframework.ide.vscode.commons.languageserver.util.SnippetBuilder; @@ -65,17 +65,6 @@ public class JavaSnippetCompletion implements ICompletionProposal{ @Override public Optional getAdditionalEdit() { - ImportRewrite rewrite = ImportRewrite.create(cu, true); - - javaSnippet.getImports().ifPresent((imprts -> - { - for (String imprt : imprts) { - rewrite.addImport(imprt); - } - })); - - DocumentEdits edit = rewrite.createEdit(query.getDocument()); - - return edit != null ? Optional.of(edit) : Optional.empty(); + return javaSnippet.getImports().flatMap(imports -> ASTUtils.getImportsEdit(cu, imports, query.getDocument())); } } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/ASTUtils.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/ASTUtils.java index 495f86140..08a4554dc 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/ASTUtils.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/ASTUtils.java @@ -307,7 +307,7 @@ public class ASTUtils { return null; } - public static Optional getAdditionalEdit(CompilationUnit cu, Collection imprts, IDocument doc) { + public static Optional getImportsEdit(CompilationUnit cu, Collection imprts, IDocument doc) { ImportRewrite rewrite = ImportRewrite.create(cu, true); for (String imprt : imprts) {