Class 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 Classes

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

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.

Methods

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 of ExecutionControl.ExecutionControlException and throws the converted exception.

protected String throwConvertedOtherException​(Throwable ex)

Converts incoming exceptions in agent code into instances of subtypes of ExecutionControl.ExecutionControlException and throws the converted exception.

protected static String valueString​(Object value)

Converts the Object value from ExecutionControl.invoke(String, String) or ExecutionControl.varValue(String, String) to String.

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

Constructors

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.

Methods

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 implemented
ExecutionControl.EngineTerminationException - the execution engine has terminated

stop

public void stop()
          throws ExecutionControl.EngineTerminationException,
                 ExecutionControl.InternalException

Interrupts a running invoke.

Not supported.

Specified by:
stop in interface ExecutionControl
Throws:
ExecutionControl.EngineTerminationException - the execution engine has terminated
ExecutionControl.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. The ExecutionControl.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 by Method.invoke(Object, Object...) or any ExecutionControl.ExecutionControlException to pass-through.

valueString

protected static String valueString(Object value)

Converts the Object value from ExecutionControl.invoke(String, String) or ExecutionControl.varValue(String, String) to String.

Parameters:
value - the value to convert
Returns:
the String representation

throwConvertedInvocationException

protected String throwConvertedInvocationException(Throwable cause)
                                            throws ExecutionControl.RunException,
                                                   ExecutionControl.InternalException

Converts incoming exceptions in user code into instances of subtypes of ExecutionControl.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 occurrences
ExecutionControl.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 of ExecutionControl.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 occurrences
ExecutionControl.InternalException - for internal problems

clientCodeEnter

protected void clientCodeEnter()
                        throws ExecutionControl.InternalException

Marks entry into user code.

Throws:
ExecutionControl.InternalException - in unexpected failure cases

clientCodeLeave

protected void clientCodeLeave()
                        throws ExecutionControl.InternalException

Marks departure from user code.

Throws:
ExecutionControl.InternalException - in unexpected failure cases

© 1993, 2020, 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/11/docs/api/jdk.jshell/jdk/jshell/execution/DirectExecutionControl.html