Интерфейс ExecutionControl

Все суперинтерфейсы:
AutoCloseable
Все известные реализующие классы:
DirectExecutionControl, JdiDefaultExecutionControl, JdiExecutionControl, LocalExecutionControl, RemoteExecutionControl, StreamingExecutionControl
public interface ExecutionControl
extends AutoCloseable

Этот интерфейс определяет функциональность, которая должна быть предоставлена для реализации подключаемого движка выполнения JShell.

Аудитория для этого интерфейса поставщика услуг — инженеры, желающие реализовать собственную версию движка выполнения в поддержку API JShell.

Сниппет компилируется в код, заключенный в 'оберточный класс'. Движок выполнения используется ядром JShell для загрузки и, в случае исполняемых сниппетов, выполнения сниппета.

Методы, определенные в этом интерфейсе, должны вызываться только ядром JShell.

С момента:
9

Вложенные классы

Модификатор и типИнтерфейсОписание
static class ExecutionControl.ClassBytecodes

Объединяет имя класса с байткодами класса.

static class ExecutionControl.ClassInstallException

Установка класса (загрузка или переопределение) столкнулась с проблемой.

static class ExecutionControl.EngineTerminationException

Произошло непредвиденное завершение работы движка выполнения.

static class ExecutionControl.ExecutionControlException

Абстрактный базовый класс всех ExecutionControl исключений.

static class ExecutionControl.InternalException

Произошла внутренняя проблема.

static class ExecutionControl.NotImplementedException

Команда не реализована.

static class ExecutionControl.ResolutionException

Исключение, указывающее на то, что встретился DeclarationSnippet с неразрешенными ссылками.

static class ExecutionControl.RunException

Абстрактный базовый класс исключений, специфичных для выполнения пользовательского кода.

static class ExecutionControl.StoppedException

Исключение, указывающее, что invoke(java.lang.String, java.lang.String) (или теоретически varValue(java.lang.String, java.lang.String)) было прервано stop().

static class ExecutionControl.UserException

Произошло обычное пользовательское исключение.

Методы

Модификатор и типМетодОписание
voidaddToClasspath​(String path)

Добавляет путь в путь класса выполнения.

voidclose()

Завершает работу этого движка выполнения.

ObjectextensionCommand​(String command, Object arg)

Выполняет нестандартную команду (или стандартную команду из более новой версии).

static ExecutionControlgenerate​(ExecutionEnv env, String spec)

Ищет поставщика, затем создаёт и возвращает экземпляр ExecutionControl.

static ExecutionControlgenerate​(ExecutionEnv env, String name, Map<String,​String> parameters)

Ищет поставщика, затем создаёт и возвращает экземпляр ExecutionControl.

Stringinvoke​(String className, String methodName)

Вызывает исполняемый сниппет, вызвав метод в указанном оберточном классе.

voidload​(ExecutionControl.ClassBytecodes[] cbcs)

Попытка загрузить новые классы.

voidredefine​(ExecutionControl.ClassBytecodes[] cbcs)

Попытка переопределить ранее загруженные классы.

voidstop()

Прерывает выполняемый вызов.

StringvarValue​(String className, String varName)

Возвращает значение переменной.

Методы

load

void load(ExecutionControl.ClassBytecodes[] cbcs)
   throws ExecutionControl.ClassInstallException,
          ExecutionControl.NotImplementedException,
          ExecutionControl.EngineTerminationException

Попытка загрузить новые классы.

Параметры:
cbcs - имя класса и байткоды для загрузки
Исключения:
ExecutionControl.ClassInstallException - исключение, произошедшее при загрузке классов, некоторые или все не были загружены
ExecutionControl.NotImplementedException - если не реализовано
ExecutionControl.EngineTerminationException - движок выполнения завершил работу

redefine

void redefine(ExecutionControl.ClassBytecodes[] cbcs)
       throws ExecutionControl.ClassInstallException,
              ExecutionControl.NotImplementedException,
              ExecutionControl.EngineTerminationException

Попытка переопределить ранее загруженные классы.

Параметры:
cbcs - имя класса и байткоды для переопределения
Исключения:
ExecutionControl.ClassInstallException - исключение, произошедшее при переопределении классов, некоторые или все не были переопределены
ExecutionControl.NotImplementedException - если не реализовано
ExecutionControl.EngineTerminationException - движок выполнения завершил работу

invoke

String invoke(String className,
              String methodName)
       throws ExecutionControl.RunException,
              ExecutionControl.EngineTerminationException,
              ExecutionControl.InternalException

Вызывает исполняемый сниппет, вызвав метод в указанном оберточном классе. Метод не должен принимать аргументов и возвращать String.

Параметры:
className - класс, метод которого должен быть вызван
methodName - имя вызываемого метода
Возвращает:
результат выполнения или null, если результат отсутствует
Исключения:
ExecutionControl.UserException - вызов вызвал пользовательское исключение
ExecutionControl.ResolutionException - вызов попытался напрямую или косвенно вызвать неразрешенный сниппет
ExecutionControl.StoppedException - если invoke() был отменен stop()
ExecutionControl.EngineTerminationException - движок выполнения завершил работу
ExecutionControl.InternalException - произошла внутренняя проблема
ExecutionControl.RunException

varValue

String varValue(String className,
                String varName)
         throws ExecutionControl.RunException,
                ExecutionControl.EngineTerminationException,
                ExecutionControl.InternalException

Возвращает значение переменной.

Параметры:
className - имя оберточного класса переменной
varName - имя переменной
Возвращает:
значение переменной
Исключения:
ExecutionControl.UserException - форматирование значения вызвало пользовательское исключение
ExecutionControl.ResolutionException - форматирование значения попыталось напрямую или косвенно вызвать неразрешенный сниппет
ExecutionControl.StoppedException - если форматирование значения было отменено stop()
ExecutionControl.EngineTerminationException - движок выполнения завершил работу
ExecutionControl.InternalException - произошла внутренняя проблема
ExecutionControl.RunException

addToClasspath

void addToClasspath(String path)
             throws ExecutionControl.EngineTerminationException,
                    ExecutionControl.InternalException

Добавляет путь в путь класса выполнения.

Параметры:
path - путь для добавления
Исключения:
ExecutionControl.EngineTerminationException - движок выполнения завершил работу
ExecutionControl.InternalException - произошла внутренняя проблема

stop

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

Прерывает выполняемый вызов.

Исключения:
ExecutionControl.EngineTerminationException - движок выполнения завершил работу
ExecutionControl.InternalException - произошла внутренняя проблема

extensionCommand

Object extensionCommand(String command,
                        Object arg)
                 throws ExecutionControl.RunException,
                        ExecutionControl.EngineTerminationException,
                        ExecutionControl.InternalException

Выполняет нестандартную команду (или стандартную команду из более новой версии).

Параметры:
command - нестандартная команда
arg - аргумент команды
Возвращает:
значение возврата команды
Исключения:
ExecutionControl.UserException - команда вызвала пользовательское исключение
ExecutionControl.ResolutionException - команда попыталась напрямую или косвенно вызвать неразрешенный сниппет
ExecutionControl.StoppedException - если команда была отменена stop()
ExecutionControl.EngineTerminationException - движок выполнения завершил работу
ExecutionControl.NotImplementedException - если не реализовано
ExecutionControl.InternalException - произошла внутренняя проблема
ExecutionControl.RunException

close

void close()

Завершает работу этого движка выполнения. Реализация должна освободить все ресурсы, удерживаемые этим движком выполнения.

После вызова close не следует вызывать другие методы этого интерфейса.

Определено в:
close в интерфейсе AutoCloseable

generate

static ExecutionControl generate(ExecutionEnv env,
                                 String name,
                                 Map<String,​String> parameters)
                          throws Throwable

Ищет поставщика, затем создаёт и возвращает экземпляр ExecutionControl.

Параметры:
env - среда выполнения (предоставляется JShell)
name - имя поставщика
parameters - карта параметров.
Возвращает:
движок выполнения
Исключения:
Throwable - исключение, произошедшее при поиске или создании движка выполнения.
IllegalArgumentException - если у ExecutionControlProvider нет указанного name и parameters.

generate

static ExecutionControl generate(ExecutionEnv env,
                                 String spec)
                          throws Throwable

Ищет поставщика, затем создаёт и возвращает экземпляр ExecutionControl.

Параметры:
env - среда выполнения (предоставляется JShell)
spec - спецификация ExecutionControl, которая описана в документации данного пакета.
Возвращает:
движок выполнения
Исключения:
Throwable - исключение, произошедшее при поиске или создании движка выполнения.
IllegalArgumentException - если у ExecutionControlProvider нет указанного name и parameters.
IllegalArgumentException - если spec имеет неправильный формат

© 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/spi/ExecutionControl.html

Spec-Zone .ru
спецификации, руководства, описания, API