This commit is contained in:
@@ -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<Console> 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");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -22,11 +22,8 @@ import com.google.common.base.Supplier;
|
||||
public class LanguageServerConsoles {
|
||||
|
||||
private static Map<String, Supplier<Console>> managers;
|
||||
|
||||
|
||||
public static synchronized Supplier<Console> 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() {
|
||||
|
||||
Reference in New Issue
Block a user