Class Util

java.lang.Object
jdk.jshell.execution.Util

public class Util extends Object
Miscellaneous utility methods for setting-up implementations of ExecutionControl. Particularly implementations with remote execution.
Since:
9
  • Method Details

    • forwardExecutionControl

      public static void forwardExecutionControl(ExecutionControl ec, ObjectInput in, ObjectOutput out)
      Forward commands from the input to the specified ExecutionControl instance, then responses back on the output.
      Parameters:
      ec - the direct instance of ExecutionControl to process commands
      in - the command input
      out - the command response output
    • forwardExecutionControlAndIO

      public static void forwardExecutionControlAndIO(ExecutionControl ec, InputStream inStream, OutputStream outStream, Map<String, Consumer<OutputStream>> outputStreamMap, Map<String, Consumer<InputStream>> inputStreamMap) throws IOException
      Forward commands from the input to the specified ExecutionControl instance, then responses back on the output.
      Parameters:
      ec - the direct instance of ExecutionControl to process commands
      inStream - the stream from which to create the command input
      outStream - the stream that will carry any specified auxiliary channels (like System.out and System.err), and the command response output.
      outputStreamMap - a map between names of additional streams to carry and setters for the stream. Names starting with '$' are reserved for internal use.
      inputStreamMap - a map between names of additional streams to carry and setters for the stream. Names starting with '$' are reserved for internal use.
      Throws:
      IOException - if there are errors using the passed streams
    • remoteInputOutput

      public static ExecutionControl remoteInputOutput(InputStream input, OutputStream output, Map<String, OutputStream> outputStreamMap, Map<String, InputStream> inputStreamMap, BiFunction<ObjectInput, ObjectOutput, ExecutionControl> factory) throws IOException
      Creates an ExecutionControl for given packetized input and output. The given InputStream is de-packetized, and content forwarded to ObjectInput and given OutputStreams. The ObjectOutput and values read from the given InputStream are packetized and sent to the given OutputStream.
      Parameters:
      input - the packetized input stream
      output - the packetized output stream
      outputStreamMap - a map between stream names and the output streams to forward. Names starting with '$' are reserved for internal use.
      inputStreamMap - a map between stream names and the input streams to forward. Names starting with '$' are reserved for internal use.
      factory - to create the ExecutionControl from ObjectInput and ObjectOutput.
      Returns:
      the created ExecutionControl
      Throws:
      IOException - if setting up the streams raised an exception
    • detectJdiExitEvent

      public static void detectJdiExitEvent(VirtualMachine vm, Consumer<String> unbiddenExitHandler)
      Monitor the JDI event stream for VMDeathEvent and VMDisconnectEvent. If encountered, invokes unbiddenExitHandler.
      Parameters:
      vm - the virtual machine to check
      unbiddenExitHandler - the handler, which will accept the exit information