java.lang.Object
jdk.jshell.execution.DirectExecutionControl
- All Implemented Interfaces:
AutoCloseable
,ExecutionControl
- Direct Known Subclasses:
LocalExecutionControl
,RemoteExecutionControl
public class DirectExecutionControl extends Object implements ExecutionControl
An
ExecutionControl
implementation that runs in the current process.
May be used directly, or over a channel with
Util.forwardExecutionControl(ExecutionControl, java.io.ObjectInput, java.io.ObjectOutput)
.- 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
Constructors Constructor Description DirectExecutionControl()
Create an instance using the default class loading.DirectExecutionControl(LoaderDelegate loaderDelegate)
Creates an instance, delegating loader operations to the specified delegate. -
Method Summary
Modifier and Type Method Description protected void
classesRedefined(ExecutionControl.ClassBytecodes[] cbcs)
Notify that classes have been redefined.protected void
clientCodeEnter()
Marks entry into user code.protected void
clientCodeLeave()
Marks departure from user code.protected Class<?>
findClass(String name)
Finds the class with the specified binary name.protected String
invoke(Method doitMethod)
Invoke the specified "doit-method", a static method with no parameters.void
stop()
Interrupts a running invoke.protected String
throwConvertedInvocationException(Throwable cause)
Converts incoming exceptions in user code into instances of subtypes ofExecutionControl.ExecutionControlException
and throws the converted exception.protected String
throwConvertedOtherException(Throwable ex)
Converts incoming exceptions in agent code into instances of subtypes ofExecutionControl.ExecutionControlException
and throws the converted exception.protected static String
valueString(Object value)
Converts theObject
value fromExecutionControl.invoke(String, String)
orExecutionControl.varValue(String, String)
toString
.Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface jdk.jshell.spi.ExecutionControl
addToClasspath, close, extensionCommand, invoke, load, redefine, varValue
-
Constructor Details
-
DirectExecutionControl
Creates an instance, delegating loader operations to the specified delegate.- Parameters:
loaderDelegate
- the delegate to handle loading classes
-
DirectExecutionControl
public DirectExecutionControl()Create an instance using the default class loading.
-
-
Method Details
-
classesRedefined
protected void classesRedefined(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationExceptionNotify that classes have been redefined.- Parameters:
cbcs
- the class name and bytecodes to redefine- Throws:
ExecutionControl.NotImplementedException
- if not implementedExecutionControl.EngineTerminationException
- the execution engine has terminated
-
stop
public void stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalExceptionInterrupts a running invoke.Not supported.
- Specified by:
stop
in interfaceExecutionControl
- Throws:
ExecutionControl.EngineTerminationException
- the execution engine has terminatedExecutionControl.InternalException
- an internal problem occurred
-
findClass
Finds the class with the specified binary name.- Parameters:
name
- the binary name of the class- Returns:
- the Class Object
- Throws:
ClassNotFoundException
- if the class could not be found
-
invoke
Invoke the specified "doit-method", a static method with no parameters. TheExecutionControl.invoke(java.lang.String, java.lang.String)
in this class will call this to invoke.- Parameters:
doitMethod
- the Method to invoke- Returns:
- the value or null
- Throws:
Exception
- any exceptions thrown byMethod.invoke(Object, Object...)
or anyExecutionControl.ExecutionControlException
to pass-through.
-
valueString
Converts theObject
value fromExecutionControl.invoke(String, String)
orExecutionControl.varValue(String, String)
toString
.- Parameters:
value
- the value to convert- Returns:
- the
String
representation
-
throwConvertedInvocationException
protected String throwConvertedInvocationException(Throwable cause) throws ExecutionControl.RunException, ExecutionControl.InternalExceptionConverts incoming exceptions in user code into instances of subtypes ofExecutionControl.ExecutionControlException
and throws the converted exception.- Parameters:
cause
- the exception to convert- Returns:
- never returns as it always throws
- Throws:
ExecutionControl.RunException
- for normal exception occurrencesExecutionControl.InternalException
- for internal problems
-
throwConvertedOtherException
protected String throwConvertedOtherException(Throwable ex) throws ExecutionControl.RunException, ExecutionControl.InternalExceptionConverts incoming exceptions in agent code into instances of subtypes ofExecutionControl.ExecutionControlException
and throws the converted exception.- Parameters:
ex
- the exception to convert- Returns:
- never returns as it always throws
- Throws:
ExecutionControl.RunException
- for normal exception occurrencesExecutionControl.InternalException
- for internal problems
-
clientCodeEnter
Marks entry into user code.- Throws:
ExecutionControl.InternalException
- in unexpected failure cases
-
clientCodeLeave
Marks departure from user code.- Throws:
ExecutionControl.InternalException
- in unexpected failure cases
-