Fix quickfix for boot upgrade not showing up

This commit is contained in:
aboyko
2022-11-17 14:45:45 -05:00
parent 57dc9e8a52
commit 8a83525623
3 changed files with 60 additions and 2 deletions

View File

@@ -0,0 +1,21 @@
/*******************************************************************************
* Copyright (c) 2022 VMware, 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
* https://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.vscode.commons.languageserver.util;
import java.net.URI;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
public interface LanguageComputer {
LanguageId computeLanguage(URI uri);
}

View File

@@ -11,6 +11,7 @@
package org.springframework.ide.vscode.commons.languageserver.util;
import java.lang.reflect.Type;
import java.net.URI;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -486,8 +487,12 @@ public class SimpleTextDocumentService implements TextDocumentService, DocumentE
TextDocument doc = trackedDoc == null ? null : trackedDoc.getDocument();
if (doc == null) {
if (uri.endsWith(".java")) {
doc = new LazyTextDocument(uri, LanguageId.JAVA);
LanguageComputer languageComputer = appContext.getBean(LanguageComputer.class);
if (languageComputer != null) {
LanguageId language = languageComputer.computeLanguage(URI.create(uri));
if (language != null) {
doc = new LazyTextDocument(uri, language);
}
}
}

View File

@@ -11,6 +11,9 @@
package org.springframework.ide.vscode.boot.app;
import java.io.File;
import java.net.URI;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -71,12 +74,14 @@ import org.springframework.ide.vscode.commons.languageserver.java.FutureProjectF
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver;
import org.springframework.ide.vscode.commons.languageserver.util.DocumentEventListenerManager;
import org.springframework.ide.vscode.commons.languageserver.util.LanguageComputer;
import org.springframework.ide.vscode.commons.languageserver.util.LspClient;
import org.springframework.ide.vscode.commons.languageserver.util.ServerCapabilityInitializer;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.commons.util.FileObserver;
import org.springframework.ide.vscode.commons.util.LogRedirect;
import org.springframework.ide.vscode.commons.util.text.IDocument;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
import org.springframework.ide.vscode.commons.yaml.ast.YamlASTProvider;
import org.springframework.ide.vscode.commons.yaml.ast.YamlParser;
import org.springframework.ide.vscode.commons.yaml.completion.YamlAssistContext;
@@ -90,6 +95,7 @@ import org.springframework.ide.vscode.languageserver.starter.LanguageServerRunne
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
import com.google.common.io.Files;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
@@ -309,4 +315,30 @@ public class BootLanguageServerBootApp {
@Bean RewriteRecipeRepository rewriteRecipesRepository(SimpleLanguageServer server, JavaProjectFinder projectFinder, BootJavaConfig config) {
return new RewriteRecipeRepository(server, projectFinder, config);
}
@Bean
LanguageComputer languageComputer() {
return new LanguageComputer() {
@Override
public LanguageId computeLanguage(URI uri) {
Path path = Paths.get(uri);
String fileName = path.getFileName().toString();
switch (Files.getFileExtension(fileName)) {
case "properties":
return LanguageId.BOOT_PROPERTIES;
case "yml":
return LanguageId.BOOT_PROPERTIES_YAML;
case "java":
return LanguageId.JAVA;
case "xml":
return LanguageId.XML;
case "factories":
return LanguageId.SPRING_FACTORIES;
default:
return LanguageId.PLAINTEXT;
}
}
};
}
}