diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java index 777b11af8..d770b1800 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServer.java @@ -70,6 +70,9 @@ import org.springframework.ide.vscode.commons.util.Log; import org.springframework.ide.vscode.commons.util.text.TextDocument; import com.google.common.collect.ImmutableList; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; import reactor.core.publisher.Mono; import reactor.core.scheduler.Scheduler; @@ -233,6 +236,7 @@ public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientA if (ih!=null){ ih.accept(params); } + Log.info("IntializeResult = {}"); return CompletableFuture.completedFuture(result); } @@ -251,23 +255,23 @@ public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientA List initialFolders = new ArrayList<>(); Object initOptions = params.getInitializationOptions(); - if (initOptions != null && initOptions instanceof Map) { - Map initializationOptions = (Map) initOptions; - Object folders = initializationOptions.get("workspaceFolders"); - if (folders != null && folders instanceof List) { - List workspaceFolders = (List) folders; - for (Object object : workspaceFolders) { - String folderPath = object.toString(); + if (initOptions != null && initOptions instanceof JsonObject) { + JsonObject initializationOptions = (JsonObject) initOptions; + JsonElement folders = initializationOptions.get("workspaceFolders"); + if (folders != null && folders instanceof JsonArray) { + JsonArray workspaceFolders = (JsonArray) folders; + for (JsonElement object : workspaceFolders) { + String folderUri = object.getAsString(); String folderName = null; - int folderNameStart = folderPath.lastIndexOf("/"); + int folderNameStart = folderUri.lastIndexOf("/"); if (folderNameStart > 0) { - folderName = folderPath.substring(folderPath.lastIndexOf("/") + 1); + folderName = folderUri.substring(folderUri.lastIndexOf("/") + 1); } WorkspaceFolder folder = new WorkspaceFolder(); folder.setName(folderName); - folder.setUri(object.toString()); + folder.setUri(folderUri); initialFolders.add(folder); } diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleWorkspaceService.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleWorkspaceService.java index 067fc2f67..5391fdf01 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleWorkspaceService.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleWorkspaceService.java @@ -26,6 +26,8 @@ import org.eclipse.lsp4j.WorkspaceFolder; import org.eclipse.lsp4j.WorkspaceFoldersChangeEvent; import org.eclipse.lsp4j.WorkspaceSymbolParams; import org.eclipse.lsp4j.services.WorkspaceService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.ide.vscode.commons.util.Assert; import org.springframework.ide.vscode.commons.util.FileObserver; import org.springframework.ide.vscode.commons.util.Log; @@ -36,6 +38,8 @@ import reactor.core.publisher.Mono; public class SimpleWorkspaceService implements WorkspaceService { + private static Logger log = LoggerFactory.getLogger(SimpleWorkspaceService.class); + private SimpleLanguageServer server; private Set workspaceRoots = new HashSet<>(); @@ -160,7 +164,7 @@ public class SimpleWorkspaceService implements WorkspaceService { public synchronized void setWorkspaceFolders(List workspaceFolders) { workspaceRoots = new HashSet<>(); workspaceRoots.addAll(workspaceFolders); + log.debug("workspaceFolders = {}", workspaceFolders); } - } diff --git a/headless-services/commons/commons-language-server/src/main/resources/simplelogger.properties b/headless-services/commons/commons-language-server/src/main/resources/simplelogger.properties new file mode 100644 index 000000000..62e2e7b2d --- /dev/null +++ b/headless-services/commons/commons-language-server/src/main/resources/simplelogger.properties @@ -0,0 +1 @@ +#org.slf4j.simpleLogger.log.org.springframework.ide.vscode.commons.languageserver.util.SimpleWorkspaceService=debug \ No newline at end of file