AutoCloseable
DirectExecutionControl
, JdiDefaultExecutionControl
, JdiExecutionControl
, LocalExecutionControl
, RemoteExecutionControl
, StreamingExecutionControl
public interface ExecutionControl extends AutoCloseable
The audience for this Service Provider Interface is engineers wishing to implement their own version of the execution engine in support of the JShell API.
A Snippet is compiled into code wrapped in a 'wrapper class'. The execution engine is used by the core JShell implementation to load and, for executable Snippets, execute the Snippet.
Methods defined in this interface should only be called by the core JShell implementation.
Modifier and Type | Interface | Description |
---|---|---|
static final class |
ExecutionControl.ClassBytecodes |
Bundles class name with class bytecodes. |
static class |
ExecutionControl.ClassInstallException |
A class install (load or redefine) encountered a problem. |
static class |
ExecutionControl.EngineTerminationException |
Unbidden execution engine termination has occurred. |
static class |
ExecutionControl.ExecutionControlException |
The abstract base of all ExecutionControl exceptions. |
static class |
ExecutionControl.InternalException |
An internal problem has occurred. |
static class |
ExecutionControl.NotImplementedException |
The command is not implemented. |
static class |
ExecutionControl.ResolutionException |
An exception indicating that a DeclarationSnippet with unresolved references has been encountered. |
static class |
ExecutionControl.RunException |
The abstract base of of exceptions specific to running user code. |
static class |
ExecutionControl.StoppedException |
An exception indicating that an invoke(java.lang.String, java.lang.String) (or theoretically a varValue(java.lang.String, java.lang.String) ) has been interrupted by a stop() . |
static class |
ExecutionControl.UserException |
A 'normal' user exception occurred. |
Modifier and Type | Method | Description |
---|---|---|
void |
addToClasspath |
Adds the path to the execution class path. |
void |
close() |
Shuts down this execution engine. |
Object |
extensionCommand |
Run a non-standard command (or a standard command from a newer version). |
static ExecutionControl |
generate |
Search for a provider, then create and return the ExecutionControl instance. |
static ExecutionControl |
generate |
Search for a provider, then create and return the ExecutionControl instance. |
String |
invoke |
Invokes an executable Snippet by calling a method on the specified wrapper class. |
void |
load |
Attempts to load new classes. |
void |
redefine |
Attempts to redefine previously loaded classes. |
void |
stop() |
Interrupts a running invoke. |
String |
varValue |
Returns the value of a variable. |
void load(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
cbcs
- the class name and bytecodes to loadExecutionControl.ClassInstallException
- exception occurred loading the classes, some or all were not loadedExecutionControl.NotImplementedException
- if not implementedExecutionControl.EngineTerminationException
- the execution engine has terminatedvoid redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
cbcs
- the class name and bytecodes to redefineExecutionControl.ClassInstallException
- exception occurred redefining the classes, some or all were not redefinedExecutionControl.NotImplementedException
- if not implementedExecutionControl.EngineTerminationException
- the execution engine has terminatedString invoke(String className, String methodName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
className
- the class whose method should be invokedmethodName
- the name of method to invokeExecutionControl.UserException
- the invoke raised a user exceptionExecutionControl.ResolutionException
- the invoke attempted to directly or indirectly invoke an unresolved snippetExecutionControl.StoppedException
- if the invoke()
was canceled by stop()
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurredExecutionControl.RunException
String varValue(String className, String varName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
className
- the name of the wrapper class of the variablevarName
- the name of the variableExecutionControl.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 by stop()
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurredExecutionControl.RunException
void addToClasspath(String path) throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
path
- the path to addExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurredvoid stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurredObject extensionCommand(String command, Object arg) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
command
- the non-standard commandarg
- the commands argumentExecutionControl.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 by stop()
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.NotImplementedException
- if not implementedExecutionControl.InternalException
- an internal problem occurredExecutionControl.RunException
void close()
No calls to methods on this interface should be made after close.
close
in interface AutoCloseable
static ExecutionControl generate(ExecutionEnv env, String name, Map<String,String> parameters) throws Throwable
ExecutionControl
instance.env
- the execution environment (provided by JShell)name
- the name of providerparameters
- the parameter map.Throwable
- an exception that occurred attempting to find or create the execution engine.IllegalArgumentException
- if no ExecutionControlProvider has the specified name
and parameters
.static ExecutionControl generate(ExecutionEnv env, String spec) throws Throwable
ExecutionControl
instance.env
- the execution environment (provided by JShell)spec
- the ExecutionControl
spec, which is described in the documentation of this package documentation.Throwable
- an exception that occurred attempting to find or create the execution engine.IllegalArgumentException
- if no ExecutionControlProvider has the specified name
and parameters
.IllegalArgumentException
- if spec
is malformed
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/jdk.jshell/jdk/jshell/spi/ExecutionControl.html