From eda9c3fda6822f7c94210ab3047ad5faadcaf1ee Mon Sep 17 00:00:00 2001 From: Florian Angerer <florian.angerer@oracle.com> Date: Wed, 24 May 2017 13:56:52 +0200 Subject: [PATCH] Made ConsoleHandler abstract. --- .../engine/shell/EmbeddedConsoleHandler.java | 14 +------ .../r/engine/shell/JLineConsoleCompleter.java | 1 + .../r/engine/shell/JLineConsoleHandler.java | 14 +------ .../r/engine/shell/StringConsoleHandler.java | 2 +- .../r/runtime/context/ConsoleHandler.java | 37 +++++++++++-------- .../context/DefaultConsoleHandler.java | 13 +------ .../shell/TestJLineConsoleCompleter.java | 13 +------ .../truffle/r/test/generate/FastRSession.java | 13 +------ 8 files changed, 29 insertions(+), 78 deletions(-) diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/EmbeddedConsoleHandler.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/EmbeddedConsoleHandler.java index 28cf90f683..c47155062d 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/EmbeddedConsoleHandler.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/EmbeddedConsoleHandler.java @@ -27,7 +27,6 @@ import com.oracle.truffle.r.runtime.RInterfaceCallbacks; import com.oracle.truffle.r.runtime.RStartParams; import com.oracle.truffle.r.runtime.context.ConsoleHandler; import com.oracle.truffle.r.runtime.context.DefaultConsoleHandler; -import com.oracle.truffle.r.runtime.context.RContext; import com.oracle.truffle.r.runtime.ffi.REmbedRFFI; import com.oracle.truffle.r.runtime.ffi.RFFIFactory; @@ -39,7 +38,7 @@ import com.oracle.truffle.r.runtime.ffi.RFFIFactory; * have be lazy about that. * */ -public class EmbeddedConsoleHandler implements ConsoleHandler { +public class EmbeddedConsoleHandler extends ConsoleHandler { private final RStartParams startParams; /** @@ -48,7 +47,6 @@ public class EmbeddedConsoleHandler implements ConsoleHandler { private ConsoleHandler delegate; private REmbedRFFI rEmbedRFFI; private String prompt; - private RContext ctx; EmbeddedConsoleHandler(RStartParams startParams) { this.startParams = startParams; @@ -149,14 +147,4 @@ public class EmbeddedConsoleHandler implements ConsoleHandler { public String getInputDescription() { return "<embedded input>"; } - - @Override - public void setContext(RContext ctx) { - this.ctx = ctx; - } - - @Override - public RContext getContext() { - return ctx; - } } diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleCompleter.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleCompleter.java index fb3e9cc90d..eaeeb329ea 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleCompleter.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleCompleter.java @@ -67,6 +67,7 @@ public class JLineConsoleCompleter implements Completer { return cursor; } + @SuppressWarnings("try") private int completeImpl(String buffer, int cursor, List<CharSequence> candidates) { if (buffer.isEmpty()) { return cursor; diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleHandler.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleHandler.java index da44616d45..6353be6e9a 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleHandler.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/JLineConsoleHandler.java @@ -33,18 +33,16 @@ import com.oracle.truffle.r.runtime.RSource; import com.oracle.truffle.r.runtime.RStartParams; import com.oracle.truffle.r.runtime.Utils; import com.oracle.truffle.r.runtime.context.ConsoleHandler; -import com.oracle.truffle.r.runtime.context.RContext; import jline.console.ConsoleReader; import jline.console.UserInterruptException; import jline.console.history.FileHistory; import jline.console.history.History; -class JLineConsoleHandler implements ConsoleHandler { +class JLineConsoleHandler extends ConsoleHandler { private final ConsoleReader console; private final boolean isInteractive; private final PrintWriter printWriter; - private RContext ctx; JLineConsoleHandler(RStartParams startParams, InputStream inStream, OutputStream outStream) { try { @@ -142,14 +140,4 @@ class JLineConsoleHandler implements ConsoleHandler { } } } - - @Override - public void setContext(RContext ctx) { - this.ctx = ctx; - } - - @Override - public RContext getContext() { - return ctx; - } } diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/StringConsoleHandler.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/StringConsoleHandler.java index d03bd0b583..271b69345d 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/StringConsoleHandler.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/StringConsoleHandler.java @@ -30,7 +30,7 @@ import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; import com.oracle.truffle.r.runtime.context.ConsoleHandler; import com.oracle.truffle.r.runtime.context.RContext; -class StringConsoleHandler implements ConsoleHandler { +class StringConsoleHandler extends ConsoleHandler { private final PrintStream output; private final List<String> lines; private final String inputDescription; diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/ConsoleHandler.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/ConsoleHandler.java index 1cf687e107..cd21de478b 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/ConsoleHandler.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/ConsoleHandler.java @@ -31,24 +31,27 @@ import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; * implementations for different contexts. Since I/O is involved, all methods are tagged with * {@link TruffleBoundary} as a hint that so should the associated implementation methods. */ -public interface ConsoleHandler { +public abstract class ConsoleHandler { + + private RContext ctx; + /** * Normal output with a new line. */ @TruffleBoundary - void println(String s); + public abstract void println(String s); /** * Normal output without a newline. */ @TruffleBoundary - void print(String s); + public abstract void print(String s); /** * Formatted output. */ @TruffleBoundary - default void printf(String format, Object... args) { + public void printf(String format, Object... args) { print(String.format(format, args)); } @@ -58,20 +61,20 @@ public interface ConsoleHandler { * @param s */ @TruffleBoundary - void printErrorln(String s); + public abstract void printErrorln(String s); /** * Error output without a newline. */ @TruffleBoundary - void printError(String s); + public abstract void printError(String s); /** * Read a line of input, newline is <b>NOT</b> included in result. Returns null if * {@link #isInteractive() == false}. TODO worry about "\r\n"? */ @TruffleBoundary - String readLine(); + public abstract String readLine(); /** * Denote whether the FastR instance is running in 'interactive' mode. This can be set in a @@ -79,31 +82,35 @@ public interface ConsoleHandler { * final once set. */ @TruffleBoundary - boolean isInteractive(); + public abstract boolean isInteractive(); /** * Get the current prompt. */ @TruffleBoundary - String getPrompt(); + public abstract String getPrompt(); /** * Set the R prompt. */ @TruffleBoundary - void setPrompt(String prompt); + public abstract void setPrompt(String prompt); - String getInputDescription(); + public abstract String getInputDescription(); - void setContext(RContext ctx); + public void setContext(RContext ctx) { + this.ctx = ctx; + } - RContext getContext(); + public RContext getContext() { + return ctx; + } - default void setHistoryFrom(@SuppressWarnings("unused") File file) { + public void setHistoryFrom(@SuppressWarnings("unused") File file) { // by default, do nothing } - default void flushHistory() { + public void flushHistory() { // by default, do nothing } } diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/DefaultConsoleHandler.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/DefaultConsoleHandler.java index 14ed4cfb6a..3bb4b182cc 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/DefaultConsoleHandler.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/DefaultConsoleHandler.java @@ -29,12 +29,11 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; -public class DefaultConsoleHandler implements ConsoleHandler { +public class DefaultConsoleHandler extends ConsoleHandler { private final BufferedReader in; private final PrintStream out; private String prompt; - private RContext ctx; public DefaultConsoleHandler(InputStream in, OutputStream out) { this.in = new BufferedReader(new InputStreamReader(in)); @@ -92,14 +91,4 @@ public class DefaultConsoleHandler implements ConsoleHandler { public String getInputDescription() { return "<PolyglotEngine env input>"; } - - @Override - public void setContext(RContext ctx) { - this.ctx = ctx; - } - - @Override - public RContext getContext() { - return ctx; - } } diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/shell/TestJLineConsoleCompleter.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/shell/TestJLineConsoleCompleter.java index 9dab26670e..015fa4ff40 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/shell/TestJLineConsoleCompleter.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/engine/shell/TestJLineConsoleCompleter.java @@ -118,8 +118,7 @@ public class TestJLineConsoleCompleter { } } - private class DummyConsoleHandler implements ConsoleHandler { - private RContext ctx; + private class DummyConsoleHandler extends ConsoleHandler { @Override public void println(String s) { @@ -160,15 +159,5 @@ public class TestJLineConsoleCompleter { public String getInputDescription() { return ""; } - - @Override - public void setContext(RContext ctx) { - this.ctx = ctx; - } - - @Override - public RContext getContext() { - return ctx; - } } } diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java index 0471a49c42..ca61843663 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/FastRSession.java @@ -66,10 +66,9 @@ public final class FastRSession implements RSession { * A (virtual) console handler that collects the output in a {@link StringBuilder} for * comparison. It does not separate error output as the test analysis doesn't need it. */ - public static class TestConsoleHandler implements ConsoleHandler { + public static class TestConsoleHandler extends ConsoleHandler { private final StringBuilder buffer = new StringBuilder(); private final Deque<String> input = new ArrayDeque<>(); - private RContext ctx; public void setInput(String[] lines) { input.clear(); @@ -130,16 +129,6 @@ public final class FastRSession implements RSession { public String getInputDescription() { return "<test input>"; } - - @Override - public void setContext(RContext ctx) { - this.ctx = ctx; - } - - @Override - public RContext getContext() { - return ctx; - } } private static FastRSession singleton; -- GitLab