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