diff --git a/plugins/org.eclipse.xtext.ide/.classpath b/plugins/org.eclipse.xtext.ide/.classpath index 5b8856395..428337e56 100644 --- a/plugins/org.eclipse.xtext.ide/.classpath +++ b/plugins/org.eclipse.xtext.ide/.classpath @@ -1,8 +1,8 @@ + - diff --git a/plugins/org.eclipse.xtext.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.xtext.ide/META-INF/MANIFEST.MF index 291f1ad88..21f074642 100644 --- a/plugins/org.eclipse.xtext.ide/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.xtext.ide/META-INF/MANIFEST.MF @@ -10,7 +10,8 @@ Bundle-Vendor: %providerName Require-Bundle: org.eclipse.xtext;visibility:=reexport, org.eclipse.xtend.lib, org.eclipse.core.runtime;bundle-version="3.6.0", - io.typefox.lsapi;bundle-version="0.1.0";resolution:=optional + io.typefox.lsapi;resolution:=optional, + io.typefox.lsapi.services Import-Package: org.apache.log4j;version="1.2.15" Export-Package: org.eclipse.xtext.ide;x-friends:="org.eclipse.xtend.ide", org.eclipse.xtext.ide.editor.bracketmatching;x-friends:="org.eclipse.xtend.ide.common,org.eclipse.xtend.ide", diff --git a/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.xtend b/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.xtend index 2b9e21595..7f532f2f4 100644 --- a/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.xtend +++ b/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/LanguageServerImpl.xtend @@ -14,6 +14,8 @@ import io.typefox.lsapi.CodeLens import io.typefox.lsapi.CodeLensParams import io.typefox.lsapi.CompletionItem import io.typefox.lsapi.CompletionItemImpl +import io.typefox.lsapi.CompletionList +import io.typefox.lsapi.CompletionListImpl import io.typefox.lsapi.CompletionOptionsImpl import io.typefox.lsapi.Diagnostic import io.typefox.lsapi.DiagnosticImpl @@ -31,10 +33,8 @@ import io.typefox.lsapi.FileEvent import io.typefox.lsapi.InitializeParams import io.typefox.lsapi.InitializeResult import io.typefox.lsapi.InitializeResultImpl -import io.typefox.lsapi.LanguageServer import io.typefox.lsapi.Location import io.typefox.lsapi.MessageParams -import io.typefox.lsapi.NotificationCallback import io.typefox.lsapi.PublishDiagnosticsParams import io.typefox.lsapi.PublishDiagnosticsParamsImpl import io.typefox.lsapi.RangeImpl @@ -45,11 +45,14 @@ import io.typefox.lsapi.ServerCapabilitiesImpl import io.typefox.lsapi.ShowMessageRequestParams import io.typefox.lsapi.SymbolInformation import io.typefox.lsapi.TextDocumentPositionParams -import io.typefox.lsapi.TextDocumentService -import io.typefox.lsapi.WindowService -import io.typefox.lsapi.WorkspaceService import io.typefox.lsapi.WorkspaceSymbolParams +import io.typefox.lsapi.services.LanguageServer +import io.typefox.lsapi.services.TextDocumentService +import io.typefox.lsapi.services.WindowService +import io.typefox.lsapi.services.WorkspaceService import java.util.List +import java.util.concurrent.CompletableFuture +import java.util.function.Consumer import org.eclipse.emf.common.util.URI import org.eclipse.xtend.lib.annotations.Accessors import org.eclipse.xtext.ide.editor.contentassist.ContentAssistEntry @@ -78,7 +81,7 @@ import static io.typefox.lsapi.util.LsapiFactories.* @Inject extension UriExtensions @Inject extension IResourceServiceProvider.Registry languagesRegistry - override InitializeResult initialize(InitializeParams params) { + override CompletableFuture initialize(InitializeParams params) { if (params.rootPath === null) { throw new IllegalArgumentException("Bad initialization request. rootPath must not be null.") } @@ -103,7 +106,7 @@ import static io.typefox.lsapi.util.LsapiFactories.* workspaceManager.initialize(rootURI, [this.publishDiagnostics($0, $1)], cancelIndicator) ], CancellableIndicator.NullImpl) - return result + return CompletableFuture.completedFuture(result) } override exit() { @@ -112,28 +115,28 @@ import static io.typefox.lsapi.util.LsapiFactories.* override void shutdown() { } - override getTextDocumentService() { - this + override TextDocumentService getTextDocumentService() { + return this } - override getWorkspaceService() { - this + override WorkspaceService getWorkspaceService() { + return this } - override getWindowService() { - this + override WindowService getWindowService() { + return this } // notification callbacks - override onShowMessage(NotificationCallback callback) { + override onShowMessage(Consumer callback) { // TODO: auto-generated method stub } - override onShowMessageRequest(NotificationCallback callback) { + override onShowMessageRequest(Consumer callback) { // TODO: auto-generated method stub } - override onLogMessage(NotificationCallback callback) { + override onLogMessage(Consumer callback) { // TODO: auto-generated method stub } @@ -182,11 +185,11 @@ import static io.typefox.lsapi.util.LsapiFactories.* // end file/content change events // validation stuff - private List> diagnosticListeners = newArrayList() + private List> diagnosticListeners = newArrayList() WorkspaceResourceAccess resourceAccess - override onPublishDiagnostics(NotificationCallback callback) { + override onPublishDiagnostics(Consumer callback) { diagnosticListeners.add(callback) } @@ -196,7 +199,7 @@ import static io.typefox.lsapi.util.LsapiFactories.* it.diagnostics = issues.map[toDiagnostic].toList ] for (diagnosticsCallback : diagnosticListeners) { - diagnosticsCallback.call(diagnostics) + diagnosticsCallback.accept(diagnostics) } } @@ -219,23 +222,25 @@ import static io.typefox.lsapi.util.LsapiFactories.* // end validation stuff // completion stuff - override completion(TextDocumentPositionParams params) { + override CompletableFuture completion(TextDocumentPositionParams params) { return requestManager.runRead[ cancelIndicator | val uri = params.textDocument.uri.toUri val resourceServiceProvider = uri.resourceServiceProvider val contentAssistService = resourceServiceProvider?.get(ContentAssistService) + val result = new CompletionListImpl if (contentAssistService === null) - return emptyList + return result val entries = workspaceManager.doRead(uri) [ document, resource | val offset = document.getOffSet(params.position) return contentAssistService.createProposals(document.contents, offset, resource, cancelIndicator) ] - return entries.map[toCompletionItem].toList - ].get + result.items = entries.map[toCompletionItem].toList + return result + ] } - protected def CompletionItem toCompletionItem(ContentAssistEntry entry) { + protected def CompletionItemImpl toCompletionItem(ContentAssistEntry entry) { val completionItem = new CompletionItemImpl completionItem.label = entry.label ?: entry.proposal completionItem.detail = entry.description @@ -258,7 +263,7 @@ import static io.typefox.lsapi.util.LsapiFactories.* return documentSymbolService.getDefinitions(resource, offset, resourceAccess, cancelIndicator) ] return definitions - ].get + ] } override references(ReferenceParams params) { @@ -282,7 +287,7 @@ import static io.typefox.lsapi.util.LsapiFactories.* val result = definitions + references return result.toList ] - ].get + ] } override documentSymbol(DocumentSymbolParams params) { @@ -296,7 +301,7 @@ import static io.typefox.lsapi.util.LsapiFactories.* return workspaceManager.doRead(uri) [ document, resource | return documentSymbolService.getSymbols(resource, cancelIndicator) ] - ].get + ] } // end symbols @@ -309,7 +314,7 @@ import static io.typefox.lsapi.util.LsapiFactories.* } override resolveCompletionItem(CompletionItem unresolved) { - return unresolved + return CompletableFuture.completedFuture(unresolved) } override hover(TextDocumentPositionParams position) { @@ -333,7 +338,7 @@ import static io.typefox.lsapi.util.LsapiFactories.* } override resolveCodeLens(CodeLens unresolved) { - return unresolved + return CompletableFuture.completedFuture(unresolved) } override formatting(DocumentFormattingParams params) { diff --git a/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/ServerLauncher.xtend b/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/ServerLauncher.xtend index 11a96dfae..794d9423a 100644 --- a/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/ServerLauncher.xtend +++ b/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/ServerLauncher.xtend @@ -10,13 +10,13 @@ package org.eclipse.xtext.ide.server import com.google.inject.Guice import com.google.inject.Inject import io.typefox.lsapi.NotificationMessage -import io.typefox.lsapi.json.LanguageServerToJsonAdapter -import io.typefox.lsapi.json.MessageMethods +import io.typefox.lsapi.services.json.LanguageServerToJsonAdapter +import io.typefox.lsapi.services.json.MessageMethods import java.io.ByteArrayInputStream +import java.io.ByteArrayOutputStream import java.io.FileOutputStream import java.io.PrintStream import java.util.concurrent.atomic.AtomicBoolean -import java.io.ByteArrayOutputStream /** * @author Sven Efftinge - Initial contribution and API diff --git a/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/ServerModule.xtend b/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/ServerModule.xtend index 16cd3d8aa..f46405cd2 100644 --- a/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/ServerModule.xtend +++ b/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/ServerModule.xtend @@ -9,7 +9,7 @@ package org.eclipse.xtext.ide.server import com.google.inject.AbstractModule import com.google.inject.name.Names -import io.typefox.lsapi.LanguageServer +import io.typefox.lsapi.services.LanguageServer import java.util.concurrent.ExecutorService import java.util.concurrent.Executors import org.eclipse.xtext.ide.server.concurrent.RequestManager diff --git a/tests/org.eclipse.xtext.ide.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.xtext.ide.tests/META-INF/MANIFEST.MF index 730e11585..c59810306 100644 --- a/tests/org.eclipse.xtext.ide.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.xtext.ide.tests/META-INF/MANIFEST.MF @@ -12,5 +12,6 @@ Require-Bundle: org.eclipse.xtext;visibility:=reexport, org.eclipse.core.runtime;bundle-version="3.6.0", org.eclipse.xtext.ide, org.junit;bundle-version="4.11.0", - io.typefox.lsapi;bundle-version="0.1.0" + io.typefox.lsapi, + io.typefox.lsapi.services Import-Package: org.apache.log4j;version="1.2.15" diff --git a/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/AbstractLanguageServerTest.xtend b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/AbstractLanguageServerTest.xtend index 4e6dc2ff6..270fcfded 100644 --- a/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/AbstractLanguageServerTest.xtend +++ b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/AbstractLanguageServerTest.xtend @@ -15,7 +15,6 @@ import io.typefox.lsapi.DidOpenTextDocumentParamsImpl import io.typefox.lsapi.InitializeParamsImpl import io.typefox.lsapi.InitializeResult import io.typefox.lsapi.Location -import io.typefox.lsapi.NotificationCallback import io.typefox.lsapi.Position import io.typefox.lsapi.PublishDiagnosticsParams import io.typefox.lsapi.Range @@ -29,6 +28,7 @@ import java.nio.file.Path import java.nio.file.Paths import java.util.List import java.util.Map +import java.util.concurrent.CompletableFuture import org.eclipse.xtext.ide.server.LanguageServerImpl import org.eclipse.xtext.ide.server.ServerModule import org.eclipse.xtext.ide.server.UriExtensions @@ -39,12 +39,12 @@ import org.eclipse.xtext.util.Modules2 import org.junit.Before import static io.typefox.lsapi.util.LsapiFactories.* -import java.util.concurrent.CompletableFuture +import java.util.function.Consumer /** * @author Sven Efftinge - Initial contribution and API */ -class AbstractLanguageServerTest implements NotificationCallback { +class AbstractLanguageServerTest implements Consumer { @Before def void setup() { @@ -70,7 +70,7 @@ class AbstractLanguageServerTest implements NotificationCallback [ textDocument = fileUri.newIdentifier ]) - val String actualSymbols = symbols.toExpectation + val String actualSymbols = symbols.get.toExpectation assertEquals(expectedSymbols, actualSymbols) } diff --git a/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ReferenceTest.xtend b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ReferenceTest.xtend index 872198397..ca6099af2 100644 --- a/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ReferenceTest.xtend +++ b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ReferenceTest.xtend @@ -71,7 +71,7 @@ class ReferenceTest extends AbstractLanguageServerTest { position = newPosition(line, column) context = referenceContext ]) - val actualDefinitions = definitions.toExpectation + val actualDefinitions = definitions.get.toExpectation assertEquals(expectedReferences, actualDefinitions) } diff --git a/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerLauncherTest.xtend b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerLauncherTest.xtend index 3db82c6cb..3ec89a492 100644 --- a/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerLauncherTest.xtend +++ b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerLauncherTest.xtend @@ -8,7 +8,7 @@ package org.eclipse.xtext.ide.tests.server import io.typefox.lsapi.InitializeParamsImpl -import io.typefox.lsapi.json.JsonBasedLanguageServer +import io.typefox.lsapi.services.json.JsonBasedLanguageServer import java.lang.ProcessBuilder.Redirect import org.eclipse.xtext.ide.server.ServerLauncher import org.junit.After