- java.lang.Object
-
- jdk.jshell.execution.DirectExecutionControl
-
- All Implemented Interfaces:
AutoCloseable,ExecutionControl
- Direct Known Subclasses:
LocalExecutionControl,RemoteExecutionControl
public class DirectExecutionControl extends Object implements ExecutionControl
AnExecutionControlimplementation that runs in the current process. May be used directly, or over a channel withUtil.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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidclassesRedefined(ExecutionControl.ClassBytecodes[] cbcs)Notify that classes have been redefined.protected voidclientCodeEnter()Marks entry into user code.protected voidclientCodeLeave()Marks departure from user code.protected Class<?>findClass(String name)Finds the class with the specified binary name.protected Stringinvoke(Method doitMethod)Invoke the specified "doit-method", a static method with no parameters.voidstop()Interrupts a running invoke.protected StringthrowConvertedInvocationException(Throwable cause)Converts incoming exceptions in user code into instances of subtypes ofExecutionControl.ExecutionControlExceptionand throws the converted exception.protected StringthrowConvertedOtherException(Throwable ex)Converts incoming exceptions in agent code into instances of subtypes ofExecutionControl.ExecutionControlExceptionand throws the converted exception.protected static StringvalueString(Object value)Converts theObjectvalue 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 Detail
-
DirectExecutionControl
public DirectExecutionControl(LoaderDelegate loaderDelegate)
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 Detail
-
classesRedefined
protected void classesRedefined(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
Notify 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:
stopin interfaceExecutionControl- Throws:
ExecutionControl.EngineTerminationException- the execution engine has terminatedExecutionControl.InternalException- an internal problem occurred
-
findClass
protected Class<?> findClass(String name) throws ClassNotFoundException
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
protected String invoke(Method doitMethod) throws Exception
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.ExecutionControlExceptionto pass-through.
-
valueString
protected static String valueString(Object value)
Converts theObjectvalue fromExecutionControl.invoke(String, String)orExecutionControl.varValue(String, String)toString.- Parameters:
value- the value to convert- Returns:
- the
Stringrepresentation
-
throwConvertedInvocationException
protected String throwConvertedInvocationException(Throwable cause) throws ExecutionControl.RunException, ExecutionControl.InternalException
Converts incoming exceptions in user code into instances of subtypes ofExecutionControl.ExecutionControlExceptionand 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.InternalException
Converts incoming exceptions in agent code into instances of subtypes ofExecutionControl.ExecutionControlExceptionand 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
protected void clientCodeEnter() throws ExecutionControl.InternalExceptionMarks entry into user code.- Throws:
ExecutionControl.InternalException- in unexpected failure cases
-
clientCodeLeave
protected void clientCodeLeave() throws ExecutionControl.InternalExceptionMarks departure from user code.- Throws:
ExecutionControl.InternalException- in unexpected failure cases
-
-