Class ConsoleUtil

java.lang.Object
org.dellroad.jct.core.util.ConsoleUtil

public final class ConsoleUtil extends Object
Utility routines.
  • Method Details

    • getJavaVersion

      public static int getJavaVersion()
      Determine the current JDK version.
      Returns:
      current JDK version as an integer
    • interrruptHandler

      public static org.jline.terminal.Terminal.SignalHandler interrruptHandler(Supplier<? extends ConsoleSession<?,?>> sessionGetter, org.jline.terminal.Terminal.SignalHandler fallthroughHandler)
      Build a Terminal signal handler that interrupt()'s a ConsoleSession when a Terminal.Signal.INT signal is received.

      This is needed when building a Terminal to make Control-C work in a shell session: pass the returned handler to TerminalBuilder.signalHandler().

      For example:

        Terminal terminal = TerminalBuilder.builder()
          .signalHandler(ConsoleUtil.interruptHandler(this::getSession, Terminal.SignalHandler.SIG_DFL))
          // other terminal config...
          .build();
       
      Parameters:
      sessionGetter - finds the session that should be interrupted; this may return null to demure
      fallthroughHandler - handler for signals other than Terminal.Signal.INT, or when sessionGetter returns null; this may be null to do nothing
      Returns:
      new signal handler
      Throws:
      IllegalArgumentException - if sessionGetter is null
    • unclosable

      public static PrintStream unclosable(PrintStream stream)
      Wrap an PrintStream in a new one that ignores close().
      Parameters:
      stream - original PrintStream
      Returns:
      PrintStream that can't be closed
      Throws:
      IllegalArgumentException - if stream is null