From ffe5675bcb54ab0b2cc28758819060965029cd4f Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Fri, 6 Jul 2018 12:31:45 -0700 Subject: [PATCH] Fix https://www.pivotaltracker.com/story/show/158853750 --- ...4LanguageServerProcessStreamConnector.java | 23 +++++++++++-------- .../console/LanguageServerConsoles.java | 12 +++++----- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageServerProcessStreamConnector.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageServerProcessStreamConnector.java index e5f40eda9..b2da3875d 100644 --- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageServerProcessStreamConnector.java +++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageServerProcessStreamConnector.java @@ -31,23 +31,26 @@ import org.springframework.tooling.ls.eclipse.commons.console.preferences.Langua public class STS4LanguageServerProcessStreamConnector extends ProcessStreamConnectionProvider { private static LanguageServerProcessReaper processReaper = new LanguageServerProcessReaper(); - + private Supplier consoles = null; - + public STS4LanguageServerProcessStreamConnector(ServerInfo server) { this.consoles = LanguageServerConsoles.getConsoleFactory(server); } - + @Override public void start() throws IOException { super.start(); Process process = LanguageServerProcessReaper.getProcess(this); processReaper.addProcess(process); if (consoles!=null) { - forwardTo(getLanguageServerLog(), consoles.get().out); + Console console = consoles.get(); + if (console!=null) { + forwardTo(getLanguageServerLog(), console.out); + } } } - + @Override protected ProcessBuilder createProcessBuilder() { if (consoles==null) { @@ -59,7 +62,7 @@ public class STS4LanguageServerProcessStreamConnector extends ProcessStreamConne //builder.redirectError(ProcessBuilder.Redirect.INHERIT); return builder; } - + private void forwardTo(InputStream is, OutputStream os) { Job consoleJob = new Job("Forward Language Server log output to console") { @Override @@ -78,7 +81,7 @@ public class STS4LanguageServerProcessStreamConnector extends ProcessStreamConne } return Status.OK_STATUS; } - + void pipe(InputStream input, OutputStream output) throws IOException { try { byte[] buf = new byte[1024*4]; @@ -101,15 +104,15 @@ public class STS4LanguageServerProcessStreamConnector extends ProcessStreamConne private InputStream getLanguageServerLog() { return super.getErrorStream(); } - + @Override public void stop() { super.stop(); processReaper.removeProcess(LanguageServerProcessReaper.getProcess(this)); } - + protected String getWorkingDirLocation() { return System.getProperty("user.dir"); } - + } diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/console/LanguageServerConsoles.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/console/LanguageServerConsoles.java index 129345e20..f9f83faec 100644 --- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/console/LanguageServerConsoles.java +++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/console/LanguageServerConsoles.java @@ -22,11 +22,8 @@ import com.google.common.base.Supplier; public class LanguageServerConsoles { private static Map> managers; - + public static synchronized Supplier getConsoleFactory(ServerInfo server) { - if (!isConsoleEnabled(server)) { - return null; - } if (managers==null) { managers = new HashMap<>(); } @@ -34,10 +31,13 @@ public class LanguageServerConsoles { ConsoleUtil consoleMgr = new ConsoleUtil(); //one console manager per language server type. This way each has their // own history (which limits number of open consoles per type) int consoleCounter = 0; - + @Override public Console get() { - return consoleMgr.getConsole(server.label+" Language Server "+consoleCounter()); + if (isConsoleEnabled(server)) { + return consoleMgr.getConsole(server.label+" Language Server "+consoleCounter()); + } + return null; } private synchronized int consoleCounter() {