From 3857c507e044ca17607c89a4818f9ee9b6105fe2 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Tue, 16 Oct 2018 14:38:32 -0700 Subject: [PATCH] Remove ComposableLanguageServer class --- .../composable/ComposableLanguageServer.java | 66 ------------------- .../app/BootLanguageServerInitializer.java | 37 ++++++++--- .../utils/test/SpringPropertyIndexTest.java | 7 +- 3 files changed, 30 insertions(+), 80 deletions(-) delete mode 100644 headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/ComposableLanguageServer.java diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/ComposableLanguageServer.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/ComposableLanguageServer.java deleted file mode 100644 index f4b4c347c..000000000 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/composable/ComposableLanguageServer.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * 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 - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Pivotal, Inc. - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.commons.languageserver.composable; - -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.hover.VscodeHoverEngineAdapter; -import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngineAdapter.HoverType; -import org.springframework.ide.vscode.commons.languageserver.util.HoverHandler; -import org.springframework.ide.vscode.commons.languageserver.util.LSFactory; -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.util.text.TextDocument; - -/** - * Facilitates composition of language servers from composable {@link LanguageServerComponents}. - * - * @author Kris De Volder - */ -public class ComposableLanguageServer { - - private final SimpleLanguageServer server; - private C components; - private VscodeCompletionEngineAdapter completionEngineAdapter; - private HoverHandler hoverHandler; - - public ComposableLanguageServer(SimpleLanguageServer server, C _components) { - this.server = server; - this.components = _components; - - SimpleTextDocumentService documents = server.getTextDocumentService(); - - components.getReconcileEngine().ifPresent(reconcileEngine -> { - documents.onDidChangeContent(params -> { - TextDocument doc = params.getDocument(); - server.validateWith(doc.getId(), reconcileEngine); - }); - }); - - ICompletionEngine completionEngine = components.getCompletionEngine(); - if (completionEngine!=null) { - completionEngineAdapter = server.createCompletionEngineAdapter(server, completionEngine); - completionEngineAdapter.setMaxCompletions(100); - documents.onCompletion(completionEngineAdapter::getCompletions); - documents.onCompletionResolve(completionEngineAdapter::resolveCompletion); - } - - this.hoverHandler = components.getHoverProvider(); - documents.onHover(hoverHandler); - } - - public void setMaxCompletionsNumber(int number) { - if (completionEngineAdapter!=null) { - completionEngineAdapter.setMaxCompletions(number); - } - } -} diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java index 7293b8f79..3af6fc1ea 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java @@ -16,11 +16,13 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerComponents; import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServerComponents; -import org.springframework.ide.vscode.commons.languageserver.composable.ComposableLanguageServer; +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.composable.CompositeLanguageServerComponents; import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver; -import org.springframework.ide.vscode.commons.languageserver.util.LSFactory; +import org.springframework.ide.vscode.commons.languageserver.util.HoverHandler; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; +import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocumentService; import org.springframework.ide.vscode.commons.util.text.TextDocument; import org.springframework.stereotype.Component; import org.springframework.util.Assert; @@ -29,12 +31,10 @@ import org.springframework.util.Assert; public class BootLanguageServerInitializer implements InitializingBean { @Autowired SimpleLanguageServer server; - @Autowired BootLanguageServerParams params; private CompositeLanguageServerComponents components; - - private ComposableLanguageServer composableLs; + private VscodeCompletionEngineAdapter completionEngineAdapter; private static final Logger log = LoggerFactory.getLogger(BootLanguageServerInitializer.class); @@ -58,7 +58,26 @@ public class BootLanguageServerInitializer implements InitializingBean { builder.add(new BootJavaLanguageServerComponents(server, (ignore) -> params)); components = builder.build(server); params.projectObserver.addListener(reconcileOpenDocuments(server, components)); - this.composableLs = new ComposableLanguageServer<>(server, components); + + SimpleTextDocumentService documents = server.getTextDocumentService(); + + components.getReconcileEngine().ifPresent(reconcileEngine -> { + documents.onDidChangeContent(params -> { + TextDocument doc = params.getDocument(); + server.validateWith(doc.getId(), reconcileEngine); + }); + }); + + ICompletionEngine completionEngine = components.getCompletionEngine(); + if (completionEngine!=null) { + completionEngineAdapter = server.createCompletionEngineAdapter(server, completionEngine); + completionEngineAdapter.setMaxCompletions(100); + documents.onCompletion(completionEngineAdapter::getCompletions); + documents.onCompletionResolve(completionEngineAdapter::resolveCompletion); + } + + HoverHandler hoverHandler = components.getHoverProvider(); + documents.onHover(hoverHandler); } public CompositeLanguageServerComponents getComponents() { @@ -66,8 +85,10 @@ public class BootLanguageServerInitializer implements InitializingBean { return components; } - public void setMaxCompletions(int maxCompletions) { - composableLs.setMaxCompletionsNumber(maxCompletions); + public void setMaxCompletions(int number) { + if (completionEngineAdapter!=null) { + completionEngineAdapter.setMaxCompletions(number); + } } } diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringPropertyIndexTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringPropertyIndexTest.java index 8467d3535..6ed1a4651 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringPropertyIndexTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringPropertyIndexTest.java @@ -10,7 +10,7 @@ *******************************************************************************/ package org.springframework.ide.vscode.boot.java.utils.test; -import static org.mockito.Matchers.anyObject; +import static org.mockito.ArgumentMatchers.anyObject; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -18,22 +18,18 @@ import static org.mockito.Mockito.verify; import java.io.File; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Import; import org.springframework.ide.vscode.boot.bootiful.BootLanguageServerTest; import org.springframework.ide.vscode.boot.bootiful.SymbolProviderTestConf; -import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerComponents; import org.springframework.ide.vscode.boot.metadata.DefaultSpringPropertyIndexProvider; import org.springframework.ide.vscode.commons.languageserver.ProgressService; -import org.springframework.ide.vscode.commons.languageserver.composable.ComposableLanguageServer; import org.springframework.ide.vscode.commons.maven.MavenCore; 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.LanguageServerHarness; -import org.springframework.ide.vscode.project.harness.BootLanguageServerHarness; import org.springframework.ide.vscode.project.harness.ProjectsHarness; import org.springframework.test.context.junit4.SpringRunner; @@ -41,7 +37,6 @@ import org.springframework.test.context.junit4.SpringRunner; * Tests for Spring properties index in Boot Java server * * @author Alex Boyko - * */ @RunWith(SpringRunner.class) @BootLanguageServerTest