Interface ICliSession
- All Known Implementing Classes:
CliSessionImpl
-
Method Summary
Modifier and TypeMethodDescriptionvoid
criticalSection
(Runnable task) Runs code in a critical section.<T> T
criticalSection
(Callable<T> task) Runs code in a critical section.Returns the unparsed command line which is being executed now.Returns the name of the command being executed.Returns the current namespace for this session.Returns the current session's working directory.Returns exception of the last executed command.Returns result of the last executed command.Returns the raw (unprocessed) arguments of the command being executed.getVariable
(String name) Get the value of a variable.<T> T
getVariable
(String name, Class<T> clazz) Get the value of a variable casted to the given class.Returns all variable names.putVariable
(String name, Object value) Set the value of a variable.Reads a line of user input from the console:void
setCurrentNamespace
(String namespace) Sets the new current namespace for this session.void
setCurrentWorkDir
(Path path) Sets the new current working directory for this session.
-
Method Details
-
criticalSection
Runs code in a critical section. Command execution will not be terminated by timeout while inside of a critical section. The timeout restarts when the execution leaves the critical section.- Type Parameters:
T
- critical section return type.- Parameters:
task
- task to run in a critical section. It will run in the same thread.- Returns:
- return value of the task.
- Throws:
Exception
- if the task throws exception, it will be thrown from this method.- See Also:
-
criticalSection
Runs code in a critical section. Command execution will not be terminated by timeout while inside of a critical section. The timeout restarts when the execution leaves the critical section.- Parameters:
task
- task to run in a critical section. It will run in the same thread.- Throws:
RuntimeException
- if the task throws exception, it will be thrown from this method.- See Also:
-
readLine
Reads a line of user input from the console:String userName = session.readLine("Please enter your name: "); ...
This method prints the optional message to console and blocks until the user presses Enter. Then it returns the line user entered. This method does not count to the command's timeout. Do not wrap it in
criticalSection(Callable)
.- Parameters:
printMessage
- optional message to print to the user before waiting for their input. May benull
.- Returns:
- A String containing the contents of the line user entered, not including any line-termination characters.
May be
null
, if the end of the console stream has been reached without reading any characters. - Throws:
IOException
-
getVariable
Get the value of a variable.- Parameters:
name
- name of the variable.- Returns:
- variable value, or
null
.
-
getVariable
Get the value of a variable casted to the given class.- Type Parameters:
T
- class to cast to.- Parameters:
name
- name of the variable.clazz
- class to cast to.- Returns:
- variable value, or
null
. - Throws:
CliCommandException
- if failed to cast.
-
getVariables
Returns all variable names.- Returns:
- variable names, never
null
.
-
putVariable
Set the value of a variable.- Parameters:
name
- name of the variable.value
- value of the variable. Usenull
to delete variable.- Returns:
- previous value of the variable, or
null
.
-
getCommandLine
String getCommandLine()Returns the unparsed command line which is being executed now.- Returns:
- command line, never
null
.
-
getCommandName
String getCommandName()Returns the name of the command being executed.- Returns:
- command name, never
null
.
-
getRawCommandArguments
Returns the raw (unprocessed) arguments of the command being executed. The types of them may differ from what the command method received.- Returns:
- map of raw (unprocessed) arguments of the command being executed, never
null
. Keys are the command line keys of the arguments, values are the raw (unprocessed) values. For keyless (positional) argument (if any), the empty string is used for the key.
-
getCurrentWorkDir
Path getCurrentWorkDir()Returns the current session's working directory. You should resolve all relative paths against this directory (except for workspace relative paths).This is not the workspace directory. Initially this value is set to be the directory the 1C:EDT CLI process is executed from. But the user (or other commands) can change it later for each session separately either by calling the builtin
cd
command, or by changing the_cwd
session variable.Because of this you should not rely on the JVM process working directory (
System.getProperty("user.dir")
orFile.getAbsolutePath()
or other methods like this).- Returns:
- the current working directory of the current session. Never
null
. - See Also:
-
setCurrentWorkDir
Sets the new current working directory for this session.Internally this is done by setting the
_cwd
session variable. SeegetCurrentWorkDir()
for the details about what the current session's working directory is and how to use it.- Parameters:
path
- new current working dir, cannot benull
. Must be absolute.- See Also:
-
getCurrentNamespace
String getCurrentNamespace()Returns the current namespace for this session.- Returns:
- the current namespace, never
null
.
-
setCurrentNamespace
Sets the new current namespace for this session.Internally this is done by setting the
SCOPE
session variable.- Parameters:
namespace
- new namespace, cannot benull
.- See Also:
-
getLastCommandException
Throwable getLastCommandException()Returns exception of the last executed command.- Returns:
- exception of the last executed command, may be
null
.
-
getLastCommandResult
Object getLastCommandResult()Returns result of the last executed command.- Returns:
- result of the last executed command, may be
null
.
-