From 5c19bdefe67f56dbaba48bd271b7a543b3ed319a Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Fri, 9 Feb 2018 09:49:21 -0800 Subject: [PATCH] Some steps towards mergin boot-java and boot-properties LS - Refactor towards more composable LanguageServers - disable fatjar support on boot-java and boot-properties --- .../boot-java-language-server/.classpath | 2 + .../boot-java-language-server/pom.xml | 3 +- .../boot/java/BootJavaLanguageServer.java | 1 + .../beans/test/SpringIndexerBeansTest.java | 10 +-- .../test/SpringIndexerFunctionBeansTest.java | 14 ++--- .../RequestMappingSymbolProviderTest.java | 22 +++---- .../utils/test/CompilationUnitCacheTest.java | 2 +- .../java/utils/test/SpringIndexerTest.java | 2 +- .../utils/test/SpringPropertyIndexTest.java | 2 +- .../harness/BootLanguageServerHarness.java | 2 +- .../springframework/ide/vscode/boot/Main.java | 5 +- .../.classpath | 2 + .../boot-properties-language-server/pom.xml | 7 ++- .../boot/metadata/CachingValueProvider.java | 2 +- .../boot/metadata/PropertiesLoader.java | 18 +++--- .../BootPropertiesLanguageServer.java | 24 ++++--- .../BootPropertiesLanguageServerParams.java | 2 +- .../vscode/boot/{ => properties}/Main.java | 9 +-- .../test/ApplicationPropertiesEditorTest.java | 6 +- .../boot/test/ApplicationYamlEditorTest.java | 6 +- .../BootPropertiesLanguageServerTest.java | 63 ------------------- .../boot/test/SpringPropertiesIndexTest.java | 10 +-- .../ide/vscode/bosh/BoshEditorTest.java | 8 +-- .../commons/commons-boot-app-cli/.classpath | 2 + .../commons/commons-cf/.classpath | 1 + .../commons/commons-gradle/.classpath | 2 + .../commons/commons-java/.classpath | 1 + .../commons-language-server/.classpath | 1 + .../util/SimpleLanguageServer.java | 11 +++- .../util/SimpleLanguageServerWrapper.java | 17 +++++ .../commons/commons-maven/.classpath | 2 + .../commons/commons-util/.classpath | 1 + .../commons/commons-yaml/.classpath | 1 + .../commons/java-properties/.classpath | 1 + .../language-server-test-harness/.classpath | 1 + .../testharness/LanguageServerHarness.java | 11 +++- .../manifest-yaml-language-server/.classpath | 2 + 37 files changed, 137 insertions(+), 139 deletions(-) rename headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/{ => properties}/BootPropertiesLanguageServer.java (91%) rename headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/{ => properties}/BootPropertiesLanguageServerParams.java (99%) rename headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/{ => properties}/Main.java (91%) delete mode 100644 headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/BootPropertiesLanguageServerTest.java create mode 100644 headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServerWrapper.java diff --git a/headless-services/boot-java-language-server/.classpath b/headless-services/boot-java-language-server/.classpath index d46faf10e..8131be0e5 100644 --- a/headless-services/boot-java-language-server/.classpath +++ b/headless-services/boot-java-language-server/.classpath @@ -10,11 +10,13 @@ + + diff --git a/headless-services/boot-java-language-server/pom.xml b/headless-services/boot-java-language-server/pom.xml index d2568be29..7fd5a00ca 100644 --- a/headless-services/boot-java-language-server/pom.xml +++ b/headless-services/boot-java-language-server/pom.xml @@ -114,7 +114,7 @@ 1.8 - + org.apache.maven.plugins diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java index a0f2e33ef..212573206 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java @@ -64,6 +64,7 @@ import org.springframework.ide.vscode.commons.languageserver.reconcile.IReconcil 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; diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerBeansTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerBeansTest.java index 46156164e..60248a5a2 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerBeansTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerBeansTest.java @@ -46,7 +46,7 @@ public class SpringIndexerBeansTest { @Test public void testScanSimpleConfigurationClass() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -58,7 +58,7 @@ public class SpringIndexerBeansTest { } @Test public void testScanSpecialConfigurationClass() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -87,7 +87,7 @@ public class SpringIndexerBeansTest { @Test public void testScanSimpleComponentClass() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -98,7 +98,7 @@ public class SpringIndexerBeansTest { } @Test public void testScanSimpleControllerClass() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -109,7 +109,7 @@ public class SpringIndexerBeansTest { } @Test public void testScanRestControllerClass() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerFunctionBeansTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerFunctionBeansTest.java index 32866b260..6dce8ed36 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerFunctionBeansTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerFunctionBeansTest.java @@ -46,7 +46,7 @@ public class SpringIndexerFunctionBeansTest { @Test public void testScanSimpleFunctionBean() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -59,7 +59,7 @@ public class SpringIndexerFunctionBeansTest { @Test public void testScanSimpleFunctionClass() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -71,7 +71,7 @@ public class SpringIndexerFunctionBeansTest { @Test public void testScanSpecializedFunctionClass() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -83,7 +83,7 @@ public class SpringIndexerFunctionBeansTest { @Test public void testScanSpecializedFunctionInterface() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -95,7 +95,7 @@ public class SpringIndexerFunctionBeansTest { @Test public void testNoSymbolForAbstractClasses() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -105,7 +105,7 @@ public class SpringIndexerFunctionBeansTest { @Test public void testNoSymbolForSubInterfaces() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); @@ -115,7 +115,7 @@ public class SpringIndexerFunctionBeansTest { @Test public void testScanInconsistentInterfaceHierarchy() throws Exception { - SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServer(), projectFinder, symbolProviders); + SpringIndexerHarness indexer = new SpringIndexerHarness(harness.getServerWrapper(), projectFinder, symbolProviders); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java index 8e5bd89de..de0b7f78e 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java @@ -42,7 +42,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertEquals(1, symbols.size()); assertTrue(containsSymbol(symbols, "@/greeting", docUri, 6, 1, 6, 29)); } @@ -54,7 +54,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/ParentMappingClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertEquals(1, symbols.size()); assertTrue(containsSymbol(symbols, "@/parent/greeting -- GET", docUri, 8, 1, 8, 47)); } @@ -66,7 +66,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/ParentMappingClass2.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertEquals(1, symbols.size()); assertTrue(containsSymbol(symbols, "@/parent2 -- GET,POST,DELETE", docUri, 8, 1, 8, 16)); } @@ -78,7 +78,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/MultiRequestMappingClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertEquals(2, symbols.size()); assertTrue(containsSymbol(symbols, "@/hello1", docUri, 6, 1, 6, 44)); assertTrue(containsSymbol(symbols, "@/hello2", docUri, 6, 1, 6, 44)); @@ -91,7 +91,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/getData -- GET", docUri, 12, 1, 12, 24)); } @@ -102,7 +102,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/deleteData -- DELETE",docUri, 20, 1, 20, 30)); } @@ -113,7 +113,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/postData -- POST", docUri, 24, 1, 24, 26)); } @@ -124,7 +124,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/putData -- PUT", docUri, 16, 1, 16, 24)); } @@ -135,7 +135,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/patchData -- PATCH", docUri, 28, 1, 28, 28)); } @@ -146,7 +146,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/getHello -- GET", docUri, 32, 1, 32, 61)); } @@ -157,7 +157,7 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + List symbols = harness.getServerWrapper().getSpringIndexer().getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/postAndPutHello -- POST,PUT", docUri, 36, 1, 36, 76)); } diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java index 23fb84e64..d54baf387 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java @@ -86,7 +86,7 @@ public class CompilationUnitCacheTest { } private CompilationUnit getCompilationUnit(TextDocument doc) { - return harness.getServer().getCompilationUnitCache().withCompilationUnit(doc, cu -> cu); + return harness.getServerWrapper().getCompilationUnitCache().withCompilationUnit(doc, cu -> cu); } @Test diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java index d70cf9a27..2cdb9a650 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java @@ -47,7 +47,7 @@ public class SpringIndexerTest { private LanguageServerHarness harness; private SpringIndexer indexer() { - return harness.getServer().getSpringIndexer(); + return harness.getServerWrapper().getSpringIndexer(); } diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringPropertyIndexTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringPropertyIndexTest.java index c97423fce..38fc7f763 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringPropertyIndexTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringPropertyIndexTest.java @@ -50,7 +50,7 @@ public class SpringPropertyIndexTest { @Test public void testPropertiesIndexRefreshOnProjectChange() throws Exception { harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI())); - propertyIndexProvider = (DefaultSpringPropertyIndexProvider) harness.getServer().getSpringPropertyIndexProvider(); + propertyIndexProvider = (DefaultSpringPropertyIndexProvider) harness.getServerWrapper().getSpringPropertyIndexProvider(); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()); diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/project/harness/BootLanguageServerHarness.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/project/harness/BootLanguageServerHarness.java index 484eae35b..522aa77d2 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/project/harness/BootLanguageServerHarness.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/project/harness/BootLanguageServerHarness.java @@ -27,7 +27,7 @@ import org.springframework.ide.vscode.languageserver.testharness.LanguageServerH public class BootLanguageServerHarness extends LanguageServerHarness { private PropertyIndexHarness indexHarness; - private final JavaProjectFinder projectFinder = (doc) -> getServer().getProjectFinder().find(doc); + private final JavaProjectFinder projectFinder = (doc) -> getServerWrapper().getProjectFinder().find(doc); /** * Creates a builder and initializes it so that it sets up a test harness with diff --git a/headless-services/boot-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java b/headless-services/boot-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java index 9f3332e93..4e876b461 100644 --- a/headless-services/boot-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java +++ b/headless-services/boot-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java @@ -12,6 +12,8 @@ package org.springframework.ide.vscode.boot; import java.io.IOException; +import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServer; +import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServerParams; import org.springframework.ide.vscode.commons.languageserver.LaunguageServerApp; import org.springframework.ide.vscode.commons.util.LogRedirect; @@ -29,7 +31,8 @@ public class Main { LogRedirect.redirectToFile(serverName); //TODO: wrap both BootProperties and BootJavaLanguageServers into a composite of some kind. LaunguageServerApp.start(serverName, - () -> new BootPropertiesLanguageServer(BootPropertiesLanguageServerParams.createDefault())); + () -> new BootPropertiesLanguageServer(BootPropertiesLanguageServerParams.createDefault()).getServer() + ); } } diff --git a/headless-services/boot-properties-language-server/.classpath b/headless-services/boot-properties-language-server/.classpath index d46faf10e..8131be0e5 100644 --- a/headless-services/boot-properties-language-server/.classpath +++ b/headless-services/boot-properties-language-server/.classpath @@ -10,11 +10,13 @@ + + diff --git a/headless-services/boot-properties-language-server/pom.xml b/headless-services/boot-properties-language-server/pom.xml index 2956f2068..4fcfb6319 100644 --- a/headless-services/boot-properties-language-server/pom.xml +++ b/headless-services/boot-properties-language-server/pom.xml @@ -101,7 +101,7 @@ 1.8 - + org.apache.maven.plugins diff --git a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/CachingValueProvider.java b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/CachingValueProvider.java index 2b009422b..f2c494bdf 100644 --- a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/CachingValueProvider.java +++ b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/CachingValueProvider.java @@ -117,7 +117,7 @@ public abstract class CachingValueProvider implements ValueProviderStrategy { // Log.log(e); } if (cached!=null) { - System.out.println("cached "+subquery+": "+cached); +// debug("cached "+subquery+": "+cached); if (cached.isComplete) { return cached.values // .doOnNext((hint) -> debug("filter["+query+"]: "+hint.getValue())) diff --git a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/PropertiesLoader.java b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/PropertiesLoader.java index 40dc5fa0c..97a08a6f6 100644 --- a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/PropertiesLoader.java +++ b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/PropertiesLoader.java @@ -28,11 +28,11 @@ import org.springframework.ide.vscode.commons.java.IClasspath; import org.springframework.ide.vscode.commons.util.Log; public class PropertiesLoader { - + private static final String MAIN_SPRING_CONFIGURATION_METADATA_JSON = "META-INF/spring-configuration-metadata.json"; public static final String ADDITIONAL_SPRING_CONFIGURATION_METADATA_JSON = "META-INF/additional-spring-configuration-metadata.json"; - + /** * The default classpath location for config metadata loaded when scanning .jar files on the classpath. */ @@ -48,15 +48,15 @@ public class PropertiesLoader { MAIN_SPRING_CONFIGURATION_METADATA_JSON, ADDITIONAL_SPRING_CONFIGURATION_METADATA_JSON }; - + private static final Logger LOG = Logger.getLogger(PropertiesLoader.class.getName()); - + private ConfigurationMetadataRepositoryJsonBuilder builder = ConfigurationMetadataRepositoryJsonBuilder.create(); - + public ConfigurationMetadataRepository load(IClasspath classPath) { try { classPath.getClasspathEntries().forEach(entry -> { - Log.info("Indexing "+entry); + //Log.info("Indexing "+entry); File fileEntry = entry.toFile(); if (fileEntry.exists()) { if (fileEntry.isDirectory()) { @@ -72,7 +72,7 @@ public class PropertiesLoader { ConfigurationMetadataRepository repository = builder.build(); return repository; } - + private void loadFromOutputFolder(Path outputFolderPath) { if (outputFolderPath != null && Files.exists(outputFolderPath)) { Arrays.stream(PROJECT_META_DATA_LOCATIONS).forEach(mdLoc -> { @@ -100,7 +100,7 @@ public class PropertiesLoader { } } } - + private void loadFromJar(Path f) { JarFile jarFile = null; try { @@ -145,5 +145,5 @@ public class PropertiesLoader { private void loadFromInputStream(Object origin, InputStream is) throws IOException { builder.withJsonResource(origin, is); } - + } diff --git a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServer.java b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/properties/BootPropertiesLanguageServer.java similarity index 91% rename from headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServer.java rename to headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/properties/BootPropertiesLanguageServer.java index 2c8c2c831..8d5f4d114 100644 --- a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServer.java +++ b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/properties/BootPropertiesLanguageServer.java @@ -8,7 +8,7 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot; +package org.springframework.ide.vscode.boot.properties; import org.springframework.ide.vscode.boot.common.PropertyCompletionFactory; import org.springframework.ide.vscode.boot.common.RelaxedNameConfig; @@ -30,6 +30,7 @@ import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserve 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.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.FuzzyMap; import org.springframework.ide.vscode.commons.util.text.IDocument; @@ -53,7 +54,7 @@ import com.google.common.collect.ImmutableList; * @author Alex Boyko * */ -public class BootPropertiesLanguageServer extends SimpleLanguageServer { +public class BootPropertiesLanguageServer implements SimpleLanguageServerWrapper { private static final String YML = ".yml"; private static final String PROPERTIES = ".properties"; @@ -78,11 +79,11 @@ public class BootPropertiesLanguageServer extends SimpleLanguageServer { private final YamlASTProvider parser = new YamlParser(yaml); private final YamlStructureProvider yamlStructureProvider= YamlStructureProvider.DEFAULT; private YamlAssistContextProvider yamlAssistContextProvider; + private final SimpleLanguageServer server; public BootPropertiesLanguageServer(LSFactory _params) { - super("vscode-boot-properties"); - - BootPropertiesLanguageServerParams serverParams = _params.create(this); + this.server = new SimpleLanguageServer("vscode-boot-properties"); + BootPropertiesLanguageServerParams serverParams = _params.create(server); this.indexProvider = serverParams.indexProvider; this.typeUtilProvider = serverParams.typeUtilProvider; @@ -99,22 +100,22 @@ public class BootPropertiesLanguageServer extends SimpleLanguageServer { } }; - SimpleTextDocumentService documents = getTextDocumentService(); + SimpleTextDocumentService documents = server.getTextDocumentService(); IReconcileEngine reconcileEngine = getReconcileEngine(); documents.onDidChangeContent(params -> { TextDocument doc = params.getDocument(); - validateWith(doc.getId(), reconcileEngine); + server.validateWith(doc.getId(), reconcileEngine); }); ICompletionEngine propertiesCompletionEngine = getCompletionEngine(); - completionEngine = createCompletionEngineAdapter(this, propertiesCompletionEngine); + completionEngine = server.createCompletionEngineAdapter(server, propertiesCompletionEngine); completionEngine.setMaxCompletions(100); documents.onCompletion(completionEngine::getCompletions); documents.onCompletionResolve(completionEngine::resolveCompletion); HoverInfoProvider hoverInfoProvider = getHoverProvider(); - hoverEngine = new VscodeHoverEngineAdapter(this, hoverInfoProvider); + hoverEngine = new VscodeHoverEngineAdapter(server, hoverInfoProvider); documents.onHover(hoverEngine::getHover); } @@ -187,4 +188,9 @@ public class BootPropertiesLanguageServer extends SimpleLanguageServer { public SpringPropertyIndexProvider getPropertiesIndexProvider() { return indexProvider; } + + @Override + public SimpleLanguageServer getServer() { + return this.server; + } } diff --git a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServerParams.java b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/properties/BootPropertiesLanguageServerParams.java similarity index 99% rename from headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServerParams.java rename to headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/properties/BootPropertiesLanguageServerParams.java index 57645d6a4..bfa5b7511 100644 --- a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/BootPropertiesLanguageServerParams.java +++ b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/properties/BootPropertiesLanguageServerParams.java @@ -8,7 +8,7 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot; +package org.springframework.ide.vscode.boot.properties; import java.nio.file.Paths; import java.util.Arrays; diff --git a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/properties/Main.java similarity index 91% rename from headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java rename to headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/properties/Main.java index e67c52158..7b978efa0 100644 --- a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java +++ b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/properties/Main.java @@ -8,7 +8,7 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot; +package org.springframework.ide.vscode.boot.properties; import java.io.IOException; @@ -17,18 +17,19 @@ import org.springframework.ide.vscode.commons.util.LogRedirect; /** * Starts up Language Server process - * + * * @author Alex Boyko * @author Kris De Volder * */ public class Main { - + public static void main(String[] args) throws IOException, InterruptedException { String serverName = "boot-properties-language-server"; LogRedirect.redirectToFile(serverName); LaunguageServerApp.start(serverName, - () -> new BootPropertiesLanguageServer(BootPropertiesLanguageServerParams.createDefault())); + () -> new BootPropertiesLanguageServer(BootPropertiesLanguageServerParams.createDefault()).getServer() + ); } } diff --git a/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java b/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java index 3fc4f10fc..1374fd210 100644 --- a/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java +++ b/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java @@ -24,12 +24,12 @@ import org.eclipse.lsp4j.CompletionItem; import org.eclipse.lsp4j.Diagnostic; import org.junit.Ignore; import org.junit.Test; -import org.springframework.ide.vscode.boot.BootPropertiesLanguageServer; -import org.springframework.ide.vscode.boot.BootPropertiesLanguageServerParams; import org.springframework.ide.vscode.boot.editor.harness.AbstractPropsEditorTest; import org.springframework.ide.vscode.boot.editor.harness.StyledStringMatcher; import org.springframework.ide.vscode.boot.metadata.CachingValueProvider; import org.springframework.ide.vscode.boot.metadata.PropertiesLoader; +import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServer; +import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServerParams; import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.commons.java.IType; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; @@ -1590,7 +1590,7 @@ public class ApplicationPropertiesEditorTest extends AbstractPropsEditorTest { s -> new BootPropertiesLanguageServerParams(javaProjectFinder, null, md.getIndexProvider(), typeUtilProvider)); server.setMaxCompletionsNumber(-1); - return server; + return server.getServer(); } /** diff --git a/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java b/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java index 5206da3d0..a479d6ca1 100644 --- a/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java +++ b/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java @@ -20,12 +20,12 @@ import org.eclipse.lsp4j.CompletionItem; import org.eclipse.lsp4j.Diagnostic; import org.junit.Ignore; import org.junit.Test; -import org.springframework.ide.vscode.boot.BootPropertiesLanguageServer; -import org.springframework.ide.vscode.boot.BootPropertiesLanguageServerParams; import org.springframework.ide.vscode.boot.editor.harness.AbstractPropsEditorTest; import org.springframework.ide.vscode.boot.editor.harness.StyledStringMatcher; import org.springframework.ide.vscode.boot.metadata.CachingValueProvider; import org.springframework.ide.vscode.boot.metadata.PropertyInfo; +import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServer; +import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServerParams; import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; import org.springframework.ide.vscode.commons.util.StringUtil; @@ -3710,7 +3710,7 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest { s -> new BootPropertiesLanguageServerParams(javaProjectFinder, null, md.getIndexProvider(), typeUtilProvider)); server.setMaxCompletionsNumber(-1); - return server; + return server.getServer(); } @Override diff --git a/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/BootPropertiesLanguageServerTest.java b/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/BootPropertiesLanguageServerTest.java deleted file mode 100644 index 624205caf..000000000 --- a/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/BootPropertiesLanguageServerTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2016 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.boot.test; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.io.File; -import java.net.URISyntaxException; -import java.nio.file.Paths; -import java.util.concurrent.Callable; - -import org.eclipse.lsp4j.InitializeResult; -import org.eclipse.lsp4j.TextDocumentSyncKind; -import org.junit.Test; -import org.springframework.ide.vscode.boot.BootPropertiesLanguageServer; -import org.springframework.ide.vscode.boot.BootPropertiesLanguageServerParams; -import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; -import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness; - -/** - * Boot app properties file language server tests - * - * @author Alex Boyko - * - */ -public class BootPropertiesLanguageServerTest { - - public static File getTestResource(String name) throws URISyntaxException { - return Paths.get(BootPropertiesLanguageServer.class.getResource(name).toURI()).toFile(); - } - - private LanguageServerHarness newHarness() throws Exception { - Callable f = () -> new BootPropertiesLanguageServer(BootPropertiesLanguageServerParams.createTestDefault()); - return new LanguageServerHarness(f); - } - - @Test - public void createAndInitializeServerWithWorkspace() throws Exception { - LanguageServerHarness harness = newHarness(); - File workspaceRoot = getTestResource("/workspace/"); - assertExpectedInitResult(harness.intialize(workspaceRoot)); - } - - @Test - public void createAndInitializeServerWithoutWorkspace() throws Exception { - File workspaceRoot = null; - LanguageServerHarness harness = newHarness(); - assertExpectedInitResult(harness.intialize(workspaceRoot)); - } - - private void assertExpectedInitResult(InitializeResult initResult) { - assertThat(initResult.getCapabilities().getTextDocumentSync().getLeft()).isEqualTo(TextDocumentSyncKind.Incremental); - } - -} diff --git a/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/SpringPropertiesIndexTest.java b/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/SpringPropertiesIndexTest.java index 28198f3ac..ccc4eea67 100644 --- a/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/SpringPropertiesIndexTest.java +++ b/headless-services/boot-properties-language-server/src/test/java/org/springframework/ide/vscode/boot/test/SpringPropertiesIndexTest.java @@ -20,9 +20,9 @@ import java.io.File; import org.junit.Before; import org.junit.Test; -import org.springframework.ide.vscode.boot.BootPropertiesLanguageServer; -import org.springframework.ide.vscode.boot.BootPropertiesLanguageServerParams; import org.springframework.ide.vscode.boot.metadata.DefaultSpringPropertyIndexProvider; +import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServer; +import org.springframework.ide.vscode.boot.properties.BootPropertiesLanguageServerParams; import org.springframework.ide.vscode.commons.languageserver.ProgressService; import org.springframework.ide.vscode.commons.maven.MavenCore; import org.springframework.ide.vscode.commons.util.text.LanguageId; @@ -32,12 +32,12 @@ import org.springframework.ide.vscode.project.harness.ProjectsHarness; /** * Tests for Boot properties index - * + * * @author Alex Boyko * */ public class SpringPropertiesIndexTest { - + private LanguageServerHarness harness; private DefaultSpringPropertyIndexProvider propertyIndexProvider; @@ -50,7 +50,7 @@ public class SpringPropertiesIndexTest { @Test public void testPropertiesIndexRefreshOnProjectChange() throws Exception { harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/boot-1.2.0-properties-live-metadta/").toURI())); - propertyIndexProvider = (DefaultSpringPropertyIndexProvider) harness.getServer().getPropertiesIndexProvider(); + propertyIndexProvider = (DefaultSpringPropertyIndexProvider) harness.getServerWrapper().getPropertiesIndexProvider(); File directory = new File(ProjectsHarness.class.getResource("/test-projects/boot-1.2.0-properties-live-metadta/").toURI()); diff --git a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java index 207898cac..0e41a7872 100644 --- a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java +++ b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java @@ -276,7 +276,7 @@ public class BoshEditorTest { } @Test public void releasesBlockCompletions() throws Exception { - harness.getServer().enableSnippets(false); + harness.getServerWrapper().enableSnippets(false); Editor editor = harness.newEditor( "releases:\n" + "- <*>" @@ -359,7 +359,7 @@ public class BoshEditorTest { } @Test public void instanceGroupsCompletions() throws Exception { - harness.getServer().enableSnippets(false); + harness.getServerWrapper().enableSnippets(false); Editor editor = harness.newEditor( "instance_groups:\n" + "- <*>" @@ -543,7 +543,7 @@ public class BoshEditorTest { } @Test public void updateBlockCompletions() throws Exception { - harness.getServer().enableSnippets(false); + harness.getServerWrapper().enableSnippets(false); Editor editor = harness.newEditor( "update:\n" + " <*>" @@ -583,7 +583,7 @@ public class BoshEditorTest { } @Test public void variablesBlockCompletions() throws Exception { - harness.getServer().enableSnippets(false); + harness.getServerWrapper().enableSnippets(false); Editor editor = harness.newEditor( "variables:\n" + "- <*>" diff --git a/headless-services/commons/commons-boot-app-cli/.classpath b/headless-services/commons/commons-boot-app-cli/.classpath index 950e0aca6..4f8e155a9 100644 --- a/headless-services/commons/commons-boot-app-cli/.classpath +++ b/headless-services/commons/commons-boot-app-cli/.classpath @@ -10,6 +10,7 @@ + @@ -25,6 +26,7 @@ + diff --git a/headless-services/commons/commons-cf/.classpath b/headless-services/commons/commons-cf/.classpath index af1430be1..5e8a55fef 100644 --- a/headless-services/commons/commons-cf/.classpath +++ b/headless-services/commons/commons-cf/.classpath @@ -10,6 +10,7 @@ + diff --git a/headless-services/commons/commons-gradle/.classpath b/headless-services/commons/commons-gradle/.classpath index d46faf10e..8131be0e5 100644 --- a/headless-services/commons/commons-gradle/.classpath +++ b/headless-services/commons/commons-gradle/.classpath @@ -10,11 +10,13 @@ + + diff --git a/headless-services/commons/commons-java/.classpath b/headless-services/commons/commons-java/.classpath index af1430be1..5e8a55fef 100644 --- a/headless-services/commons/commons-java/.classpath +++ b/headless-services/commons/commons-java/.classpath @@ -10,6 +10,7 @@ + diff --git a/headless-services/commons/commons-language-server/.classpath b/headless-services/commons/commons-language-server/.classpath index af1430be1..5e8a55fef 100644 --- a/headless-services/commons/commons-language-server/.classpath +++ b/headless-services/commons/commons-language-server/.classpath @@ -10,6 +10,7 @@ + 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 ad214e7c7..1e7a7a98e 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 @@ -76,7 +76,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 abstract class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientAware, ServiceNotificationsClient, WorkspaceFoldersProposedService { +public class SimpleLanguageServer implements Sts4LanguageServer, LanguageClientAware, ServiceNotificationsClient, WorkspaceFoldersProposedService, SimpleLanguageServerWrapper { private static final Scheduler RECONCILER_SCHEDULER = Schedulers.newSingle("Reconciler"); @@ -116,7 +116,7 @@ public abstract class SimpleLanguageServer implements Sts4LanguageServer, Langua this.client = (STS4LanguageClient) _client; } - protected VscodeCompletionEngineAdapter createCompletionEngineAdapter(SimpleLanguageServer server, ICompletionEngine engine) { + public VscodeCompletionEngineAdapter createCompletionEngineAdapter(SimpleLanguageServer server, ICompletionEngine engine) { return new VscodeCompletionEngineAdapter(server, engine, completionResolver); } @@ -406,7 +406,7 @@ public abstract class SimpleLanguageServer implements Sts4LanguageServer, Langua * Convenience method. Subclasses can call this to use a {@link IReconcileEngine} ported * from old STS codebase to validate a given {@link TextDocument} and publish Diagnostics. */ - protected void validateWith(TextDocumentIdentifier docId, IReconcileEngine engine) { + public void validateWith(TextDocumentIdentifier docId, IReconcileEngine engine) { CompletableFuture reconcileSession = this.busyReconcile = new CompletableFuture(); // Log.debug("Reconciling BUSY"); @@ -547,4 +547,9 @@ public abstract class SimpleLanguageServer implements Sts4LanguageServer, Langua return diagnosticService; } + @Override + public SimpleLanguageServer getServer() { + return this; + } + } diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServerWrapper.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServerWrapper.java new file mode 100644 index 000000000..e11ecda24 --- /dev/null +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleLanguageServerWrapper.java @@ -0,0 +1,17 @@ +/******************************************************************************* + * Copyright (c) 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.util; + +public interface SimpleLanguageServerWrapper { + + SimpleLanguageServer getServer(); + +} diff --git a/headless-services/commons/commons-maven/.classpath b/headless-services/commons/commons-maven/.classpath index d46faf10e..8131be0e5 100644 --- a/headless-services/commons/commons-maven/.classpath +++ b/headless-services/commons/commons-maven/.classpath @@ -10,11 +10,13 @@ + + diff --git a/headless-services/commons/commons-util/.classpath b/headless-services/commons/commons-util/.classpath index af1430be1..5e8a55fef 100644 --- a/headless-services/commons/commons-util/.classpath +++ b/headless-services/commons/commons-util/.classpath @@ -10,6 +10,7 @@ + diff --git a/headless-services/commons/commons-yaml/.classpath b/headless-services/commons/commons-yaml/.classpath index af1430be1..5e8a55fef 100644 --- a/headless-services/commons/commons-yaml/.classpath +++ b/headless-services/commons/commons-yaml/.classpath @@ -10,6 +10,7 @@ + diff --git a/headless-services/commons/java-properties/.classpath b/headless-services/commons/java-properties/.classpath index af1430be1..5e8a55fef 100644 --- a/headless-services/commons/java-properties/.classpath +++ b/headless-services/commons/java-properties/.classpath @@ -10,6 +10,7 @@ + diff --git a/headless-services/commons/language-server-test-harness/.classpath b/headless-services/commons/language-server-test-harness/.classpath index af1430be1..5e8a55fef 100644 --- a/headless-services/commons/language-server-test-harness/.classpath +++ b/headless-services/commons/language-server-test-harness/.classpath @@ -10,6 +10,7 @@ + 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 065ea9f91..28b89f472 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 @@ -97,6 +97,7 @@ import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixEd import org.springframework.ide.vscode.commons.languageserver.util.LanguageServerTestListener; import org.springframework.ide.vscode.commons.languageserver.util.Settings; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; +import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServerWrapper; import org.springframework.ide.vscode.commons.util.Assert; import org.springframework.ide.vscode.commons.util.ExceptionUtil; import org.springframework.ide.vscode.commons.util.IOUtil; @@ -111,7 +112,7 @@ import com.google.common.collect.MultimapBuilder; import reactor.core.publisher.Mono; -public class LanguageServerHarness { +public class LanguageServerHarness { //Warning this 'harness' is incomplete. Growing it as needed. @@ -709,10 +710,14 @@ public class LanguageServerHarness { } public void changeConfiguration(Settings settings) { - server.getWorkspaceService().didChangeConfiguration(new DidChangeConfigurationParams(settings)); + getServer().getWorkspaceService().didChangeConfiguration(new DidChangeConfigurationParams(settings)); } - public S getServer() { + public SimpleLanguageServer getServer() { + return server==null ? null : server.getServer(); + } + + public S getServerWrapper() { return server; } diff --git a/headless-services/manifest-yaml-language-server/.classpath b/headless-services/manifest-yaml-language-server/.classpath index fae1a2b37..002ad570e 100644 --- a/headless-services/manifest-yaml-language-server/.classpath +++ b/headless-services/manifest-yaml-language-server/.classpath @@ -15,11 +15,13 @@ + +