mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-15 16:28:56 +00:00
[ls] Added a launching option to enable/disable tracing
Signed-off-by: Anton Kosiakov <anton.kosyakov@typefox.io>
This commit is contained in:
parent
a74a9108f1
commit
5bfb9dfdeb
2 changed files with 63 additions and 20 deletions
|
@ -27,29 +27,40 @@ class ServerLauncher {
|
|||
|
||||
public static val OPTION_PREFIX = '-Dorg.eclipse.xtext.ide.server.'
|
||||
public static val LOG_STANDARD_STREAMS = OPTION_PREFIX + 'logStandardStreams'
|
||||
public static val TRACE = OPTION_PREFIX + 'trace'
|
||||
|
||||
def static void main(String[] args) {
|
||||
val stdin = System.in
|
||||
val stdout = System.out
|
||||
redirectStandardStreams(args)
|
||||
val trace = args.trace
|
||||
|
||||
val launcher = Guice.createInjector(new ServerModule).getInstance(ServerLauncher)
|
||||
launcher.start(stdin, stdout)
|
||||
launcher.start(stdin, stdout, trace)
|
||||
}
|
||||
|
||||
@Inject LanguageServerImpl languageServer
|
||||
|
||||
def void start(InputStream in, OutputStream out) {
|
||||
println("Starting Xtext Language Server.")
|
||||
val launcher = Launcher.createLauncher(languageServer, LanguageClient, in, out, true,
|
||||
new PrintWriter(System.out))
|
||||
def void start(InputStream in, OutputStream out, PrintWriter trace) {
|
||||
println("Xtext Language Server is starting.")
|
||||
val launcher = Launcher.createLauncher(languageServer, LanguageClient, in, out, true, trace)
|
||||
languageServer.connect(launcher.remoteProxy)
|
||||
val future = launcher.startListening
|
||||
println("started.")
|
||||
println("Xtext Language Server has been started.")
|
||||
while (!future.done) {
|
||||
Thread.sleep(10_000l)
|
||||
}
|
||||
}
|
||||
|
||||
def static PrintWriter getTrace(String[] args) {
|
||||
if (shouldTrace(args))
|
||||
return createTrace
|
||||
}
|
||||
|
||||
def static PrintWriter createTrace() {
|
||||
return new PrintWriter(System.out)
|
||||
}
|
||||
|
||||
def static redirectStandardStreams(String[] args) {
|
||||
redirectStandardStreams(ServerLauncher.name, args)
|
||||
}
|
||||
|
@ -62,12 +73,20 @@ class ServerLauncher {
|
|||
}
|
||||
}
|
||||
|
||||
def static boolean shouldLogStandardStreams(String[] args) {
|
||||
return args.exists[shouldLogStandardStreams]
|
||||
def static boolean shouldTrace(String[] args) {
|
||||
return args.testArg(TRACE)
|
||||
}
|
||||
|
||||
def static boolean shouldLogStandardStreams(String arg) {
|
||||
return arg == LOG_STANDARD_STREAMS || arg == 'debug'
|
||||
def static boolean shouldLogStandardStreams(String[] args) {
|
||||
return args.testArg(LOG_STANDARD_STREAMS, 'debug')
|
||||
}
|
||||
|
||||
def static boolean testArg(String[] args, String ... values) {
|
||||
return args.exists[testArg(values)]
|
||||
}
|
||||
|
||||
def static boolean testArg(String arg, String ... values) {
|
||||
return values.exists[value|value === arg]
|
||||
}
|
||||
|
||||
def static void logStandardStreams(String prefix) {
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
*/
|
||||
package org.eclipse.xtext.ide.server;
|
||||
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Inject;
|
||||
|
@ -38,26 +37,28 @@ public class ServerLauncher {
|
|||
|
||||
public final static String LOG_STANDARD_STREAMS = (ServerLauncher.OPTION_PREFIX + "logStandardStreams");
|
||||
|
||||
public final static String TRACE = (ServerLauncher.OPTION_PREFIX + "trace");
|
||||
|
||||
public static void main(final String[] args) {
|
||||
final InputStream stdin = System.in;
|
||||
final PrintStream stdout = System.out;
|
||||
ServerLauncher.redirectStandardStreams(args);
|
||||
final PrintWriter trace = ServerLauncher.getTrace(args);
|
||||
ServerModule _serverModule = new ServerModule();
|
||||
final ServerLauncher launcher = Guice.createInjector(_serverModule).<ServerLauncher>getInstance(ServerLauncher.class);
|
||||
launcher.start(stdin, stdout);
|
||||
launcher.start(stdin, stdout, trace);
|
||||
}
|
||||
|
||||
@Inject
|
||||
private LanguageServerImpl languageServer;
|
||||
|
||||
public void start(final InputStream in, final OutputStream out) {
|
||||
public void start(final InputStream in, final OutputStream out, final PrintWriter trace) {
|
||||
try {
|
||||
InputOutput.<String>println("Starting Xtext Language Server.");
|
||||
PrintWriter _printWriter = new PrintWriter(System.out);
|
||||
final Launcher<LanguageClient> launcher = Launcher.<LanguageClient>createLauncher(this.languageServer, LanguageClient.class, in, out, true, _printWriter);
|
||||
InputOutput.<String>println("Xtext Language Server is starting.");
|
||||
final Launcher<LanguageClient> launcher = Launcher.<LanguageClient>createLauncher(this.languageServer, LanguageClient.class, in, out, true, trace);
|
||||
this.languageServer.connect(launcher.getRemoteProxy());
|
||||
final Future<?> future = launcher.startListening();
|
||||
InputOutput.<String>println("started.");
|
||||
InputOutput.<String>println("Xtext Language Server has been started.");
|
||||
while ((!future.isDone())) {
|
||||
Thread.sleep(10_000l);
|
||||
}
|
||||
|
@ -66,6 +67,18 @@ public class ServerLauncher {
|
|||
}
|
||||
}
|
||||
|
||||
public static PrintWriter getTrace(final String[] args) {
|
||||
boolean _shouldTrace = ServerLauncher.shouldTrace(args);
|
||||
if (_shouldTrace) {
|
||||
return ServerLauncher.createTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static PrintWriter createTrace() {
|
||||
return new PrintWriter(System.out);
|
||||
}
|
||||
|
||||
public static void redirectStandardStreams(final String[] args) {
|
||||
ServerLauncher.redirectStandardStreams(ServerLauncher.class.getName(), args);
|
||||
}
|
||||
|
@ -79,15 +92,26 @@ public class ServerLauncher {
|
|||
}
|
||||
}
|
||||
|
||||
public static boolean shouldTrace(final String[] args) {
|
||||
return ServerLauncher.testArg(args, ServerLauncher.TRACE);
|
||||
}
|
||||
|
||||
public static boolean shouldLogStandardStreams(final String[] args) {
|
||||
return ServerLauncher.testArg(args, ServerLauncher.LOG_STANDARD_STREAMS, "debug");
|
||||
}
|
||||
|
||||
public static boolean testArg(final String[] args, final String... values) {
|
||||
final Function1<String, Boolean> _function = (String it) -> {
|
||||
return Boolean.valueOf(ServerLauncher.shouldLogStandardStreams(it));
|
||||
return Boolean.valueOf(ServerLauncher.testArg(values));
|
||||
};
|
||||
return IterableExtensions.<String>exists(((Iterable<String>)Conversions.doWrapArray(args)), _function);
|
||||
}
|
||||
|
||||
public static boolean shouldLogStandardStreams(final String arg) {
|
||||
return (Objects.equal(arg, ServerLauncher.LOG_STANDARD_STREAMS) || Objects.equal(arg, "debug"));
|
||||
public static boolean testArg(final String arg, final String... values) {
|
||||
final Function1<String, Boolean> _function = (String value) -> {
|
||||
return Boolean.valueOf((value == arg));
|
||||
};
|
||||
return IterableExtensions.<String>exists(((Iterable<String>)Conversions.doWrapArray(values)), _function);
|
||||
}
|
||||
|
||||
public static void logStandardStreams(final String prefix) {
|
||||
|
|
Loading…
Reference in a new issue