java.lang.Object
jdk.jshell.execution.StreamingExecutionControl
- All Implemented Interfaces:
AutoCloseable
,ExecutionControl
- Direct Known Subclasses:
JdiExecutionControl
An implementation of the
ExecutionControl
execution engine SPI which streams requests to a remote agent where
execution takes place.- Since:
- 9
-
Nested Class Summary
Nested classes/interfaces declared in interface jdk.jshell.spi.ExecutionControl
ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, ExecutionControl.UserException
-
Constructor Summary
ConstructorDescriptionStreamingExecutionControl(ObjectOutput out, ObjectInput in)
Creates an instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addToClasspath(String path)
Adds the path to the execution class path.void
close()
Closes the execution engine.extensionCommand(String command, Object arg)
Run a non-standard command (or a standard command from a newer version).Invokes an executable Snippet by calling a method on the specified wrapper class.void
load(ExecutionControl.ClassBytecodes[] cbcs)
Attempts to load new classes.void
redefine(ExecutionControl.ClassBytecodes[] cbcs)
Attempts to redefine previously loaded classes.void
stop()
Interrupts a running invoke.Returns the value of a variable.
-
Constructor Details
-
StreamingExecutionControl
Creates an instance.- Parameters:
out
- the output for commandsin
- the input for command responses
-
-
Method Details
-
load
public void load(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationExceptionDescription copied from interface:ExecutionControl
Attempts to load new classes.- Specified by:
load
in interfaceExecutionControl
- Parameters:
cbcs
- the class name and bytecodes to load- Throws:
ExecutionControl.ClassInstallException
- exception occurred loading the classes, some or all were not loadedExecutionControl.NotImplementedException
- if not implementedExecutionControl.EngineTerminationException
- the execution engine has terminated
-
redefine
public void redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationExceptionDescription copied from interface:ExecutionControl
Attempts to redefine previously loaded classes.- Specified by:
redefine
in interfaceExecutionControl
- Parameters:
cbcs
- the class name and bytecodes to redefine- Throws:
ExecutionControl.ClassInstallException
- exception occurred redefining the classes, some or all were not redefinedExecutionControl.NotImplementedException
- if not implementedExecutionControl.EngineTerminationException
- the execution engine has terminated
-
invoke
public String invoke(String classname, String methodname) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalExceptionDescription copied from interface:ExecutionControl
Invokes an executable Snippet by calling a method on the specified wrapper class. The method must have no arguments and return String.- Specified by:
invoke
in interfaceExecutionControl
- Parameters:
classname
- the class whose method should be invokedmethodname
- the name of method to invoke- Returns:
- the result of the execution or null if no result
- Throws:
ExecutionControl.UserException
- the invoke raised a user exceptionExecutionControl.ResolutionException
- the invoke attempted to directly or indirectly invoke an unresolved snippetExecutionControl.StoppedException
- if theinvoke()
was canceled byExecutionControl.stop()
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurredExecutionControl.RunException
-
varValue
public String varValue(String classname, String varname) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalExceptionDescription copied from interface:ExecutionControl
Returns the value of a variable.- Specified by:
varValue
in interfaceExecutionControl
- Parameters:
classname
- the name of the wrapper class of the variablevarname
- the name of the variable- Returns:
- the value of the variable
- Throws:
ExecutionControl.UserException
- formatting the value raised a user exceptionExecutionControl.ResolutionException
- formatting the value attempted to directly or indirectly invoke an unresolved snippetExecutionControl.StoppedException
- if the formatting the value was canceled byExecutionControl.stop()
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurredExecutionControl.RunException
-
addToClasspath
public void addToClasspath(String path) throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalExceptionDescription copied from interface:ExecutionControl
Adds the path to the execution class path.- Specified by:
addToClasspath
in interfaceExecutionControl
- Parameters:
path
- the path to add- Throws:
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurred
-
stop
public void stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalExceptionDescription copied from interface:ExecutionControl
Interrupts a running invoke.- Specified by:
stop
in interfaceExecutionControl
- Throws:
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurred
-
extensionCommand
public Object extensionCommand(String command, Object arg) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalExceptionDescription copied from interface:ExecutionControl
Run a non-standard command (or a standard command from a newer version).- Specified by:
extensionCommand
in interfaceExecutionControl
- Parameters:
command
- the non-standard commandarg
- the commands argument- Returns:
- the commands return value
- Throws:
ExecutionControl.UserException
- the command raised a user exceptionExecutionControl.ResolutionException
- the command attempted to directly or indirectly invoke an unresolved snippetExecutionControl.StoppedException
- if the command was canceled byExecutionControl.stop()
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.NotImplementedException
- if not implementedExecutionControl.InternalException
- an internal problem occurredExecutionControl.RunException
-
close
public void close()Closes the execution engine. Send an exit command to the remote agent.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceExecutionControl
-