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 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(String path) |
Adds the path to the execution class path.
|
void |
close() |
Shuts down this execution engine.
|
Object |
extensionCommand(String command,
Object arg) |
Run a non-standard command (or a standard command from a newer version).
|
static ExecutionControl |
generate(ExecutionEnv env,
String spec) |
Search for a provider, then create and return the
ExecutionControl instance. |
static ExecutionControl |
generate(ExecutionEnv env,
String name,
Map<String,String> parameters) |
Search for a provider, then create and return the
ExecutionControl instance. |
String |
invoke(String className,
String methodName) |
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.
|
String |
varValue(String className,
String varName) |
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 Submit a bug or feature
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 2015, 2017, Oracle and/or its affiliates. 500 Oracle Parkway
Redwood Shores, CA 94065 USA. All rights reserved.
DRAFT 9-Ubuntu+0-9b161-1