# Class LocalExecutionControl

java.lang.Object
jdk.jshell.execution.DirectExecutionControl
jdk.jshell.execution.LocalExecutionControl

All Implemented Interfaces:
  `AutoCloseable, ExecutionControl`

public class LocalExecutionControl extends DirectExecutionControl
An implementation of `ExecutionControl` which executes in the same JVM as the JShell-core.

Since:
  9

## Nested Class Summary

### Nested classes/interfaces declared in interface ExecutionControl

`ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, ExecutionControl.UserException`
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 `ExecutionControl.invoke(java.lang.String, java.lang.String)` (or theoretically a `ExecutionControl.varValue(java.lang.String, java.lang.String)`) has been interrupted by a `ExecutionControl.stop()`.
`static class`
`ExecutionControl.UserException`
A 'normal' user exception occurred.

## Constructor Summary

Constructors
Constructor
Description
`LocalExecutionControl()`
Create an instance using the default class loading, which delegates to the system class loader.
`LocalExecutionControl(ClassLoader parent)`
Create an instance using the default class loading, but delegating to the specified parent class loader.
`LocalExecutionControl(LoaderDelegate loaderDelegate)`
Creates an instance, delegating loader operations to the specified delegate.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`clientCodeEnter()`
Marks entry into user code.
`protected void`
`clientCodeLeave()`
Marks departure from user code.

### Methods declared in class DirectExecutionControl

`addToClasspath, classesRedefined, close, extensionCommand, findClass, invoke, invoke, load, redefine, stop, throwConvertedInvocationException, throwConvertedOtherException, valueString, varValue`
Modifier and Type
Method
Description
`void`
`addToClasspath(String cp)`
Adds the path to the execution class path.
`protected void`
`classesRedefined(ExecutionControl.ClassBytecodes[] cbcs)`
Notify that classes have been redefined.
`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).
`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.
`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.
`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`.
`String`
`varValue(String className, String varName)`
Returns the value of a variable.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Constructor Details

### LocalExecutionControl

public LocalExecutionControl(LoaderDelegate loaderDelegate)
Creates an instance, delegating loader operations to the specified delegate.

Parameters:
  `loaderDelegate` - the delegate to handle loading classes

### LocalExecutionControl

public LocalExecutionControl()
Create an instance using the default class loading, which delegates to the system class loader.

### LocalExecutionControl

public LocalExecutionControl(ClassLoader parent)
Create an instance using the default class loading, but delegating to the specified parent class loader.

Parameters:
  `parent` - parent class loader
Since:
  22

## Method Details

### clientCodeEnter

protected void clientCodeEnter()
Description copied from class: `DirectExecutionControl`
Marks entry into user code.

Overrides:
  `clientCodeEnter` in class `DirectExecutionControl`

### clientCodeLeave

protected void clientCodeLeave()
Description copied from class: `DirectExecutionControl`
Marks departure from user code.

Overrides:
  `clientCodeLeave` in class `DirectExecutionControl`