Simplify LanguageServerRunner dependency

It doesn't need to have a 'server factory'. It just needs a server.
This commit is contained in:
Kris De Volder
2018-10-04 10:44:18 -07:00
parent eda67f8c7c
commit 45d2daee3c
2 changed files with 8 additions and 16 deletions

View File

@@ -25,8 +25,6 @@ import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.function.Function;
import javax.inject.Provider;
import org.eclipse.lsp4j.jsonrpc.Launcher;
import org.eclipse.lsp4j.jsonrpc.MessageConsumer;
import org.eclipse.lsp4j.services.LanguageClient;
@@ -38,7 +36,6 @@ import org.springframework.boot.CommandLineRunner;
import org.springframework.ide.vscode.commons.languageserver.config.LanguageServerProperties;
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
import org.springframework.ide.vscode.commons.util.Log;
import org.springframework.util.Assert;
/**
* A CommandLineRunner that launches a language server. This meant to be used as a Spring bean
@@ -77,13 +74,13 @@ public class LanguageServerRunner implements CommandLineRunner {
private LanguageServerProperties properties;
private final String name;
private final Provider<SimpleLanguageServer> languageServerFactory;
private final SimpleLanguageServer languageServer;
public LanguageServerRunner(String name, LanguageServerProperties properties, Provider<SimpleLanguageServer> languageServerFactory) {
public LanguageServerRunner(String name, LanguageServerProperties properties, SimpleLanguageServer languageServer) {
super();
this.name = name;
this.properties = properties;
this.languageServerFactory = languageServerFactory;
this.languageServer = languageServer;
}
public void start() throws Exception {
@@ -96,7 +93,7 @@ public class LanguageServerRunner implements CommandLineRunner {
}
}
protected static class Connection {
private static class Connection {
final InputStream in;
final OutputStream out;
final Socket socket;
@@ -132,7 +129,7 @@ public class LanguageServerRunner implements CommandLineRunner {
}
}
public void startAsClient() throws IOException {
private void startAsClient() throws IOException {
Log.info("Starting LS");
Connection connection = null;
try {
@@ -169,7 +166,6 @@ public class LanguageServerRunner implements CommandLineRunner {
return result;
};
SimpleLanguageServer languageServer = createServer();
Launcher<STS4LanguageClient> launcher = createSocketLauncher(languageServer, STS4LanguageClient.class,
new InetSocketAddress("localhost", serverPort), createServerThreads(), wrapper);
@@ -219,8 +215,8 @@ public class LanguageServerRunner implements CommandLineRunner {
}
}
protected Future<Void> runAsync(Connection connection) throws Exception {
LanguageServer server = createServer();
private Future<Void> runAsync(Connection connection) throws Exception {
LanguageServer server = this.languageServer;
ExecutorService executor = createServerThreads();
Function<MessageConsumer, MessageConsumer> wrapper = (MessageConsumer consumer) -> {
return (msg) -> {
@@ -248,8 +244,4 @@ public class LanguageServerRunner implements CommandLineRunner {
return launcher.startListening();
}
final SimpleLanguageServer createServer() {
return languageServerFactory.get();
}
}

View File

@@ -27,7 +27,7 @@ public class LanguageServerAutoconf {
@Bean public LanguageServerRunner serverApp(
@Qualifier("serverName") String serverName,
LanguageServerProperties properties,
Provider<SimpleLanguageServer> languageServerFactory
SimpleLanguageServer languageServerFactory
) {
return new LanguageServerRunner(serverName, properties, languageServerFactory);
}