# Class JdiExecutionControlProvider

java.lang.Object
jdk.jshell.execution.JdiExecutionControlProvider

All Implemented Interfaces:
  `ExecutionControlProvider`

public class JdiExecutionControlProvider extends Object implements ExecutionControlProvider
A provider of remote JDI-controlled execution engines.

Since:
  9

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`PARAM_HOST_NAME`
The local hostname to connect to.
`static final String`
`PARAM_LAUNCH`
Should JDI-controlled launching be used?
`static final String`
`PARAM_REMOTE_AGENT`
The remote agent to launch.
`static final String`
`PARAM_TIMEOUT`
Milliseconds before connect timeout.

## Constructor Summary

Constructors
Constructor
Description
`JdiExecutionControlProvider()`
Create an instance.
`JdiExecutionControlProvider(JdiDefaultExecutionControl.JdiStarter starter)`
Create an instance.

## Method Summary

Modifier and Type
Method
Description
`Map<String,String>`
`defaultParameters()`
Create and return the default parameter map for this `ExecutionControlProvider`.
`ExecutionControl`
`generate(ExecutionEnv env, Map<String,String> parameters)`
Create and return the `ExecutionControl` instance.
`String`
`name()`
The unique name of this `ExecutionControlProvider`.

### 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.

## Field Details

### PARAM_REMOTE_AGENT

public static final String PARAM_REMOTE_AGENT
The remote agent to launch.

See Also:
  - Constant Field Values

### PARAM_TIMEOUT

public static final String PARAM_TIMEOUT
Milliseconds before connect timeout.

See Also:
  - Constant Field Values

### PARAM_HOST_NAME

public static final String PARAM_HOST_NAME
The local hostname to connect to.

See Also:
  - Constant Field Values

### PARAM_LAUNCH

public static final String PARAM_LAUNCH
Should JDI-controlled launching be used?

See Also:
  - Constant Field Values

## Constructor Details

### JdiExecutionControlProvider

public JdiExecutionControlProvider()
Create an instance. An instance can be used to generate an `ExecutionControl` instance that uses the Java Debug Interface as part of the control of a remote process.

### JdiExecutionControlProvider

public JdiExecutionControlProvider(JdiDefaultExecutionControl.JdiStarter starter)
Create an instance. An instance can be used to generate an `ExecutionControl` instance that uses the Java Debug Interface as part of the control of a remote process. The provided `start` will be used to start the remote process.

Parameters:
  `starter` - starter that will create the remote process
Since:
  22

## Method Details

### name

public String name()
The unique name of this `ExecutionControlProvider`.

Specified by:
  `name` in interface `ExecutionControlProvider`
Returns:
  "jdi"

### defaultParameters

public Map<String,String> defaultParameters()
Create and return the default parameter map for this `ExecutionControlProvider`. The map can optionally be modified; Modified or unmodified it can be passed to `generate(jdk.jshell.spi.ExecutionEnv, java.util.Map)`.

Parameters
Parameter | Description | Constant Field
--- | --- | ---
remoteAgent | the remote agent to launch | `PARAM_REMOTE_AGENT`
timeout | milliseconds before connect timeout | `PARAM_TIMEOUT`
launch | "true" for JDI controlled launch | `PARAM_LAUNCH`
hostname | connect to the named of the local host ("" for discovered) | `PARAM_HOST_NAME`

Specified by:
  `defaultParameters` in interface `ExecutionControlProvider`
Returns:
  the default parameter map

### generate

public ExecutionControl generate(ExecutionEnv env, Map<String,String> parameters) throws IOException
Description copied from interface: `ExecutionControlProvider`
Create and return the `ExecutionControl` instance.

Specified by:
  `generate` in interface `ExecutionControlProvider`
Parameters:
  `env` - the execution environment, provided by JShell
  `parameters` - the default or modified parameter map.
Returns:
  the execution engine
Throws:
  `IOException`