From 892cc31f95deb809de3f5d77091df4ab4823ee1d Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Wed, 14 Feb 2018 16:54:56 +0100 Subject: [PATCH] removed self-maintained workspace folder support code due to its support in lsp4j 0.4.0 snapshots --- .../boot/java/BootJavaLanguageServer.java | 9 +- .../vscode/boot/java/utils/SpringIndexer.java | 4 +- .../ValuePropertyReferencesProvider.java | 4 +- .../java/beans/test/SpringIndexerHarness.java | 14 +- .../test/PropertyReferenceFinderTest.java | 14 +- .../languageserver/STS4LanguageClient.java | 4 +- .../WorkspaceFoldersProposedClient.java | 31 ----- .../DidChangeWorkspaceFoldersParams.java | 93 ------------- .../languageserver/multiroot/README.txt | 4 - .../multiroot/WorkspaceFolder.java | 128 ------------------ .../WorkspaceFoldersChangeEvent.java | 117 ---------------- .../WorkspaceFoldersProposedService.java | 43 ------ .../util/SimpleLanguageServer.java | 26 ++-- .../util/SimpleWorkspaceService.java | 11 +- .../testharness/LanguageServerHarness.java | 12 +- 15 files changed, 45 insertions(+), 469 deletions(-) delete mode 100644 headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/WorkspaceFoldersProposedClient.java delete mode 100644 headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/DidChangeWorkspaceFoldersParams.java delete mode 100644 headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/README.txt delete mode 100644 headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFolder.java delete mode 100644 headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFoldersChangeEvent.java delete mode 100644 headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFoldersProposedService.java diff --git a/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java b/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java index 212573206..c1004eed6 100644 --- a/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java +++ b/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java @@ -13,6 +13,7 @@ package org.springframework.ide.vscode.boot.java; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.UUID; import java.util.concurrent.CompletableFuture; import org.eclipse.lsp4j.CompletionItemKind; @@ -59,12 +60,10 @@ import org.springframework.ide.vscode.commons.languageserver.completion.IComplet import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter; 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.multiroot.WorkspaceFoldersProposedService; import org.springframework.ide.vscode.commons.languageserver.reconcile.IReconcileEngine; import org.springframework.ide.vscode.commons.languageserver.util.LSFactory; import org.springframework.ide.vscode.commons.languageserver.util.ReferencesHandler; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; -import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServerWrapper; import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocumentService; import org.springframework.ide.vscode.commons.languageserver.util.SimpleWorkspaceService; import org.springframework.ide.vscode.commons.util.text.TextDocument; @@ -77,6 +76,10 @@ import com.google.common.collect.ImmutableList; * @author Martin Lippert */ public class BootJavaLanguageServer extends SimpleLanguageServer { + + public static final String WORKSPACE_FOLDERS_CAPABILITY_NAME = "workspace/didChangeWorkspaceFolders"; + public static final String WORKSPACE_FOLDERS_CAPABILITY_ID = UUID.randomUUID().toString(); + private final VscodeCompletionEngineAdapter completionEngine; private final SpringIndexer indexer; @@ -186,7 +189,7 @@ public class BootJavaLanguageServer extends SimpleLanguageServer { @Override public void initialized() { - Registration registration = new Registration(WorkspaceFoldersProposedService.CAPABILITY_ID, WorkspaceFoldersProposedService.CAPABILITY_NAME, null); + Registration registration = new Registration(WORKSPACE_FOLDERS_CAPABILITY_ID, WORKSPACE_FOLDERS_CAPABILITY_NAME, null); RegistrationParams registrationParams = new RegistrationParams(Collections.singletonList(registration)); getClient().registerCapability(registrationParams); diff --git a/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexer.java b/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexer.java index 4099fa9cc..af801928f 100644 --- a/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexer.java +++ b/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexer.java @@ -49,6 +49,7 @@ import org.eclipse.lsp4j.Location; import org.eclipse.lsp4j.SymbolInformation; import org.eclipse.lsp4j.SymbolKind; import org.eclipse.lsp4j.TextDocumentIdentifier; +import org.eclipse.lsp4j.WorkspaceFolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer; @@ -59,7 +60,6 @@ import org.springframework.ide.vscode.commons.java.IClasspath; import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder; import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver.Listener; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFolder; import org.springframework.ide.vscode.commons.util.StringUtil; import org.springframework.ide.vscode.commons.util.UriUtil; import org.springframework.ide.vscode.commons.util.text.LanguageId; @@ -135,7 +135,7 @@ public class SpringIndexer { updateWorker.start(); server.getWorkspaceService().onDidChangeWorkspaceFolders(evt -> { - log.debug("workspace roots have changed event arrived - added: " + Arrays.toString(evt.getEvent().getAdded()) + " - removed: " + Arrays.toString(evt.getEvent().getRemoved())); + log.debug("workspace roots have changed event arrived - added: " + evt.getEvent().getAdded() + " - removed: " + evt.getEvent().getRemoved()); refresh(); }); diff --git a/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/value/ValuePropertyReferencesProvider.java b/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/value/ValuePropertyReferencesProvider.java index 20bbae458..5bc73463d 100644 --- a/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/value/ValuePropertyReferencesProvider.java +++ b/headless-services/commons/commons-boot/src/main/java/org/springframework/ide/vscode/boot/java/value/ValuePropertyReferencesProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 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 @@ -33,8 +33,8 @@ import org.eclipse.jdt.core.dom.StringLiteral; import org.eclipse.lsp4j.Location; import org.eclipse.lsp4j.Position; import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.WorkspaceFolder; import org.springframework.ide.vscode.boot.java.handlers.ReferenceProvider; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFolder; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; import org.springframework.ide.vscode.commons.util.BadLocationException; import org.springframework.ide.vscode.commons.util.text.TextDocument; diff --git a/headless-services/commons/commons-boot/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerHarness.java b/headless-services/commons/commons-boot/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerHarness.java index ebab4114b..8aff97483 100644 --- a/headless-services/commons/commons-boot/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerHarness.java +++ b/headless-services/commons/commons-boot/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerHarness.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 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 @@ -24,12 +24,12 @@ import java.util.List; import org.apache.commons.io.IOUtils; import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.SymbolInformation; +import org.eclipse.lsp4j.WorkspaceFolder; import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer; import org.springframework.ide.vscode.boot.java.annotations.AnnotationHierarchyAwareLookup; import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider; import org.springframework.ide.vscode.boot.java.utils.SpringIndexer; import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFolder; import org.springframework.ide.vscode.commons.util.text.LanguageId; import org.springframework.ide.vscode.commons.util.text.TextDocument; import org.springframework.ide.vscode.languageserver.testharness.Editor; @@ -141,11 +141,11 @@ public class SpringIndexerHarness { } public Collection wsFolder(File directory) { - if (directory!=null) { - return ImmutableList.of(new WorkspaceFolder( - directory.toURI().toString(), - directory.getName() - )); + if (directory != null) { + WorkspaceFolder folder = new WorkspaceFolder(); + folder.setName(directory.getName()); + folder.setUri(directory.toURI().toString()); + return ImmutableList.of(folder); } return ImmutableList.of(); } diff --git a/headless-services/commons/commons-boot/src/test/java/org/springframework/ide/vscode/boot/java/references/test/PropertyReferenceFinderTest.java b/headless-services/commons/commons-boot/src/test/java/org/springframework/ide/vscode/boot/java/references/test/PropertyReferenceFinderTest.java index 50c9d71b2..d29075562 100644 --- a/headless-services/commons/commons-boot/src/test/java/org/springframework/ide/vscode/boot/java/references/test/PropertyReferenceFinderTest.java +++ b/headless-services/commons/commons-boot/src/test/java/org/springframework/ide/vscode/boot/java/references/test/PropertyReferenceFinderTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 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 @@ -21,9 +21,9 @@ import java.util.List; import java.util.concurrent.CompletableFuture; import org.eclipse.lsp4j.Location; +import org.eclipse.lsp4j.WorkspaceFolder; import org.junit.Test; import org.springframework.ide.vscode.boot.java.value.ValuePropertyReferencesProvider; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFolder; import org.springframework.ide.vscode.project.harness.ProjectsHarness; import com.google.common.collect.ImmutableList; @@ -54,11 +54,11 @@ public class PropertyReferenceFinderTest { } private Collection wsFolder(Path directory) { - if (directory!=null) { - return ImmutableList.of(new WorkspaceFolder( - directory.toUri().toString(), - directory.getFileName().toString() - )); + if (directory != null) { + WorkspaceFolder folder = new WorkspaceFolder(); + folder.setName(directory.getFileName().toString()); + folder.setUri(directory.toUri().toString()); + return ImmutableList.of(folder); } return ImmutableList.of(); } diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/STS4LanguageClient.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/STS4LanguageClient.java index 969a32a01..06b2aa75f 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/STS4LanguageClient.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/STS4LanguageClient.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2016-2017 Pivotal, Inc. + * Copyright (c) 2016, 2018 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 @@ -23,7 +23,7 @@ import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixEd * * @author Kris De Volder */ -public interface STS4LanguageClient extends LanguageClient, WorkspaceFoldersProposedClient { +public interface STS4LanguageClient extends LanguageClient { @JsonNotification("sts/highlight") void highlight(HighlightParams highlights); diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/WorkspaceFoldersProposedClient.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/WorkspaceFoldersProposedClient.java deleted file mode 100644 index d5127e39e..000000000 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/WorkspaceFoldersProposedClient.java +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017 Microsoft Corporation and others. - * 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 - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Microsoft Corporation - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.commons.languageserver; - -import java.util.concurrent.CompletableFuture; - -import org.eclipse.lsp4j.jsonrpc.services.JsonRequest; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFolder; - -public interface WorkspaceFoldersProposedClient { - - /** - * The workspace/workspaceFolders request is sent from the server to the client - * to fetch the current open list of workspace folders. - * - * @return Returns the current open list of workspace folders. Returns null in - * the response if only a single file is open in the tool. Returns an - * empty array if a workspace is open but no folders are configured. - */ - @JsonRequest("workspace/workspaceFolders") - CompletableFuture getWorkspaceFolders(); - -} diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/DidChangeWorkspaceFoldersParams.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/DidChangeWorkspaceFoldersParams.java deleted file mode 100644 index 49cb1f521..000000000 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/DidChangeWorkspaceFoldersParams.java +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017 Microsoft Corporation and others. - * 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 - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Microsoft Corporation - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.commons.languageserver.multiroot; - -import org.eclipse.lsp4j.jsonrpc.validation.NonNull; - -public class DidChangeWorkspaceFoldersParams { - /** - * The actual workspace folder change event. - */ - @NonNull - private WorkspaceFoldersChangeEvent event; - - public DidChangeWorkspaceFoldersParams() { - // TODO Auto-generated constructor stub - } - - /** - * @param event - */ - public DidChangeWorkspaceFoldersParams(@NonNull WorkspaceFoldersChangeEvent event) { - this.event = event; - } - - /** - * @return the event - */ - @NonNull - public WorkspaceFoldersChangeEvent getEvent() { - return event; - } - - /** - * @param event - * the event to set - */ - public void setEvent(@NonNull WorkspaceFoldersChangeEvent event) { - this.event = event; - } - - /* (non-Javadoc) - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - return "DidChangeWorkspaceFoldersParams [event=" + event + "]"; - } - - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((event == null) ? 0 : event.hashCode()); - return result; - } - - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - DidChangeWorkspaceFoldersParams other = (DidChangeWorkspaceFoldersParams) obj; - if (event == null) { - if (other.event != null) { - return false; - } - } else if (!event.equals(other.event)) { - return false; - } - return true; - } - -} \ No newline at end of file diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/README.txt b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/README.txt deleted file mode 100644 index 44172b93a..000000000 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/README.txt +++ /dev/null @@ -1,4 +0,0 @@ -Source code in this folder are copied from org.eclipse.jdt.ls.core.internal.lsp - -They provide support for the proposed LSP protocol extension to deal with multi-root -workspaces. \ No newline at end of file diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFolder.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFolder.java deleted file mode 100644 index 9bc15d72f..000000000 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFolder.java +++ /dev/null @@ -1,128 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017 Microsoft Corporation and others. - * 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 - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Microsoft Corporation - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.commons.languageserver.multiroot; - -import org.eclipse.lsp4j.jsonrpc.validation.NonNull; - -public class WorkspaceFolder { - /** - * The associated URI for this workspace folder. - */ - @NonNull - private String uri; - - /** - * The name of the workspace folder. Defaults to the uri's basename. - */ - @NonNull - private String name; - - public WorkspaceFolder() { - } - - public WorkspaceFolder(@NonNull String uri, @NonNull String name) { - this.uri = uri; - this.name = name; - } - - /** - * Gets the associated URI for this workspace folder. - * - * @return the uri - */ - @NonNull - public String getUri() { - return uri; - } - - /** - * Sets the associated URI for this workspace folder. - * - * @param uri - * the uri to set - */ - public void setUri(@NonNull String uri) { - this.uri = uri; - } - - /** - * The name of the workspace folder. Defaults to the uri's basename. - * - * @return the name - */ - @NonNull - public String getName() { - return name; - } - - /** - * The name of the workspace folder. Defaults to the uri's basename. - * - * @param name - * the name to set - */ - public void setName(@NonNull String name) { - this.name = name; - } - - /* (non-Javadoc) - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - return "WorkspaceFolder [uri=" + uri + ", name=" + name + "]"; - } - - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + ((uri == null) ? 0 : uri.hashCode()); - return result; - } - - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - WorkspaceFolder other = (WorkspaceFolder) obj; - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { - return false; - } - if (uri == null) { - if (other.uri != null) { - return false; - } - } else if (!uri.equals(other.uri)) { - return false; - } - return true; - } - -} \ No newline at end of file diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFoldersChangeEvent.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFoldersChangeEvent.java deleted file mode 100644 index 6f96fb2d8..000000000 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFoldersChangeEvent.java +++ /dev/null @@ -1,117 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017 Microsoft Corporation and others. - * 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 - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Microsoft Corporation - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.commons.languageserver.multiroot; - -import java.util.Arrays; - -import org.eclipse.lsp4j.jsonrpc.validation.NonNull; - -/** - * The workspace folder change event. - */ -public class WorkspaceFoldersChangeEvent { - /** - * The array of added workspace folders - */ - @NonNull - private WorkspaceFolder[] added; - - /** - * The array of the removed workspace folders - */ - @NonNull - private WorkspaceFolder[] removed; - - public WorkspaceFoldersChangeEvent() { - } - - public WorkspaceFoldersChangeEvent(@NonNull final WorkspaceFolder[] added, @NonNull final WorkspaceFolder[] removed) { - this.added = added; - this.removed = removed; - } - - /** - * @return the added - */ - @NonNull - public WorkspaceFolder[] getAdded() { - return added; - } - - /** - * @param added - * the added to set - */ - public void setAdded(@NonNull WorkspaceFolder[] added) { - this.added = added; - } - - /** - * @return the removed - */ - @NonNull - public WorkspaceFolder[] getRemoved() { - return removed; - } - - /** - * @param removed - * the removed to set - */ - public void setRemoved(@NonNull WorkspaceFolder[] removed) { - this.removed = removed; - } - - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + Arrays.hashCode(added); - result = prime * result + Arrays.hashCode(removed); - return result; - } - - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - WorkspaceFoldersChangeEvent other = (WorkspaceFoldersChangeEvent) obj; - if (!Arrays.equals(added, other.added)) { - return false; - } - if (!Arrays.equals(removed, other.removed)) { - return false; - } - return true; - } - - /* (non-Javadoc) - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - return "WorkspaceFoldersChangeEvent [added=" + Arrays.toString(added) + ", removed=" + Arrays.toString(removed) + "]"; - } - -} \ No newline at end of file diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFoldersProposedService.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFoldersProposedService.java deleted file mode 100644 index 0ce838650..000000000 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/multiroot/WorkspaceFoldersProposedService.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017 Microsoft Corporation and others. - * 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 - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Microsoft Corporation - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.commons.languageserver.multiroot; - -import java.util.UUID; - -import org.eclipse.lsp4j.jsonrpc.services.JsonNotification; -import org.eclipse.lsp4j.jsonrpc.services.JsonSegment; - -/** - * Server APIs for Workspace folders (prop - * https://github.com/Microsoft/vscode-languageserver-node/blob/master/protocol/src/protocol.workspaceFolders.proposed.md - * - */ -@JsonSegment("workspace") -public interface WorkspaceFoldersProposedService { - - public static final String CAPABILITY_NAME = "workspace/didChangeWorkspaceFolders"; - public static final String CAPABILITY_ID = UUID.randomUUID().toString(); - - /** - * The workspace/didChangeWorkspaceFolders notification is sent from the client - * to the server to inform the client about workspace folder configuration - * changes. - * - * @param documentUri - * the document from which the project configuration will be updated - */ - @JsonNotification - void didChangeWorkspaceFolders(DidChangeWorkspaceFoldersParams params); - - - -} - 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 1e7a7a98e..6f05afe3c 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2016, 2017 Pivotal, Inc. + * Copyright (c) 2016, 2018 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 @@ -36,6 +36,7 @@ import org.eclipse.lsp4j.Range; import org.eclipse.lsp4j.ServerCapabilities; import org.eclipse.lsp4j.TextDocumentIdentifier; import org.eclipse.lsp4j.TextDocumentSyncKind; +import org.eclipse.lsp4j.WorkspaceFolder; import org.eclipse.lsp4j.services.LanguageClient; import org.eclipse.lsp4j.services.LanguageClientAware; import org.springframework.ide.vscode.commons.languageserver.DiagnosticService; @@ -46,9 +47,6 @@ import org.springframework.ide.vscode.commons.languageserver.Sts4LanguageServer; import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionEngine; import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter; import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter.LazyCompletionResolver; -import org.springframework.ide.vscode.commons.languageserver.multiroot.DidChangeWorkspaceFoldersParams; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFolder; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFoldersProposedService; import org.springframework.ide.vscode.commons.languageserver.quickfix.Quickfix; import org.springframework.ide.vscode.commons.languageserver.quickfix.Quickfix.QuickfixData; import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixEdit; @@ -76,7 +74,7 @@ import reactor.core.scheduler.Schedulers; * here so we can try to keep the subclass itself more 'clutter free' and focus on * what its really doing and not the 'wiring and plumbing'. */ -public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientAware, ServiceNotificationsClient, WorkspaceFoldersProposedService, SimpleLanguageServerWrapper { +public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientAware, ServiceNotificationsClient, SimpleLanguageServerWrapper { private static final Scheduler RECONCILER_SCHEDULER = Schedulers.newSingle("Reconciler"); @@ -193,7 +191,10 @@ public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientA } catch (Exception e) { name = ""; } - singleRootFolder.add(new WorkspaceFolder(rootUri, name)); + WorkspaceFolder folder = new WorkspaceFolder(); + folder.setName(name); + folder.setUri(rootUri); + singleRootFolder.add(folder); this.getWorkspaceService().setWorkspaceFolders(singleRootFolder); } } @@ -233,7 +234,12 @@ public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientA if (folderNameStart > 0) { folderName = folderPath.substring(folderPath.lastIndexOf("/") + 1); } - initialFolders.add(new WorkspaceFolder(object.toString(), folderName)); + + WorkspaceFolder folder = new WorkspaceFolder(); + folder.setName(folderName); + folder.setUri(object.toString()); + + initialFolders.add(folder); } } } @@ -536,12 +542,6 @@ public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientA return hasFileWatcherRegistrationSupport; } - @Override - public void didChangeWorkspaceFolders(DidChangeWorkspaceFoldersParams params) { - getWorkspaceService().didChangeWorkspaceFolders(params); - } - - @Override public DiagnosticService getDiagnosticService() { return diagnosticService; 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 2463db6e1..067fc2f67 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2016, 2017 Pivotal, Inc. + * Copyright (c) 2016, 2018 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 @@ -19,14 +19,13 @@ import java.util.function.Consumer; import org.eclipse.lsp4j.DidChangeConfigurationParams; import org.eclipse.lsp4j.DidChangeWatchedFilesParams; +import org.eclipse.lsp4j.DidChangeWorkspaceFoldersParams; import org.eclipse.lsp4j.ExecuteCommandParams; import org.eclipse.lsp4j.SymbolInformation; +import org.eclipse.lsp4j.WorkspaceFolder; +import org.eclipse.lsp4j.WorkspaceFoldersChangeEvent; import org.eclipse.lsp4j.WorkspaceSymbolParams; import org.eclipse.lsp4j.services.WorkspaceService; -import org.springframework.ide.vscode.commons.languageserver.multiroot.DidChangeWorkspaceFoldersParams; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFolder; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFoldersChangeEvent; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFoldersProposedService; import org.springframework.ide.vscode.commons.util.Assert; import org.springframework.ide.vscode.commons.util.FileObserver; import org.springframework.ide.vscode.commons.util.Log; @@ -35,7 +34,7 @@ import com.google.common.collect.ImmutableList; import reactor.core.publisher.Mono; -public class SimpleWorkspaceService implements WorkspaceService, WorkspaceFoldersProposedService { +public class SimpleWorkspaceService implements WorkspaceService { private SimpleLanguageServer server; private Set workspaceRoots = new HashSet<>(); diff --git a/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/LanguageServerHarness.java b/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/LanguageServerHarness.java index 28b89f472..8dc25b309 100644 --- a/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/LanguageServerHarness.java +++ b/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/LanguageServerHarness.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2016-2017 Pivotal, Inc. + * Copyright (c) 2016, 2018 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 @@ -92,7 +92,6 @@ import org.springframework.ide.vscode.commons.languageserver.HighlightParams; import org.springframework.ide.vscode.commons.languageserver.ProgressParams; import org.springframework.ide.vscode.commons.languageserver.STS4LanguageClient; import org.springframework.ide.vscode.commons.languageserver.completion.DocumentEdits; -import org.springframework.ide.vscode.commons.languageserver.multiroot.WorkspaceFolder; import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixEdit.CursorMovement; import org.springframework.ide.vscode.commons.languageserver.util.LanguageServerTestListener; import org.springframework.ide.vscode.commons.languageserver.util.Settings; @@ -291,15 +290,6 @@ public class LanguageServerHarness { return CompletableFuture.completedFuture(new ApplyWorkspaceEditResponse(false)); } - @Override - public CompletableFuture getWorkspaceFolders() { - if (workspaceRoot!=null) { - return CompletableFuture.completedFuture(new WorkspaceFolder[]{ - new WorkspaceFolder(workspaceRoot.toURI().toString(), workspaceRoot.getName()) - }); - } - return CompletableFuture.completedFuture(new WorkspaceFolder[]{}); - } }); }