org.apache.felix.gogo.runtime

## Class CommandSessionImpl

- java.lang.Object
- - org.apache.felix.gogo.runtime.CommandSessionImpl

All Implemented Interfaces:
  AutoCloseable, CommandSession, Converter

    public class CommandSessionImpl
    extends Object
    implements CommandSession, Converter

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.apache.felix.service.command.CommandSession

`CommandSession.Utils`

### Field Summary

Fields
`protected Channel[]` `channels`
`static String` `COMMANDS`
`static String` `CONSTANTS`
`protected OutputStream` `err`
`protected InputStream` `in`
`protected OutputStream` `out`
`protected PrintStream` `perr`
`protected PrintStream` `pout`
`static String` `SESSION_CLOSED`
`protected ConcurrentMap<String,Object>` `variables`
`static String` `VARIABLES`

### Fields inherited from interface org.apache.felix.service.command.CommandSession

`OPTION_NO_GLOB`

### Fields inherited from interface org.apache.felix.service.command.Converter

`CONVERTER_CLASSES, INSPECT, LINE, PART`

### Constructor Summary

Constructors
`protected` `CommandSessionImpl(CommandProcessorImpl shell, CommandSessionImpl parent)`
`protected` `CommandSessionImpl(CommandProcessorImpl shell, InputStream in, OutputStream out, OutputStream err)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`ClassLoader` `classLoader()`
`void` `classLoader(ClassLoader classLoader)`
`void` `close()` Close this command session.
`Object` `convert(Class<?> desiredType, Object in)` Convert an object to another type.
`org.apache.felix.gogo.runtime.CommandSessionImpl.JobImpl` `createJob(CharSequence command)`
`Path` `currentDir()`
`void` `currentDir(Path path)`
`static org.apache.felix.gogo.runtime.CommandSessionImpl.JobImpl` `currentJob()`
`Object` `doConvert(Class<?> desiredType, Object in)`
`Object` `execute(CharSequence commandline)` Execute a program in this session.
`Object` `expr(CharSequence expr)`
`org.apache.felix.gogo.runtime.CommandSessionImpl.JobImpl` `foregroundJob()` Get the current foreground job or null.
`CharSequence` `format(Object result, int inspect)` Convert an object to string form (CharSequence).
`CharSequence` `format(Object target, int level, Converter escape)` Convert an objet to a CharSequence object in the requested format.
`Object` `get(String name)` Get the value of a variable.
`PrintStream` `getConsole()` Return the PrintStream for the console.
`InputStream` `getKeyboard()` Return the input stream that is the first of the pipeline.
`ConcurrentMap<String,Object>` `getVariables()`
`Object` `invoke(Object target, String name, List<Object> args)`
`List<Job>` `jobs()` List jobs.
`CommandProcessor` `processor()`
`Object` `put(String name, Object value)` Set the value of a variable.
`Path` `redirect(Path path, int mode)`
`void` `setJobListener(JobListener listener)` Set the job listener for this session.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### SESSION_CLOSED

    public static final String SESSION_CLOSED

See Also:
  Constant Field Values

#### VARIABLES

    public static final String VARIABLES

See Also:
  Constant Field Values

#### COMMANDS

    public static final String COMMANDS

See Also:
  Constant Field Values

#### CONSTANTS

    public static final String CONSTANTS

See Also:
  Constant Field Values

#### in

    protected InputStream in

#### out

    protected OutputStream out

#### pout

    protected PrintStream pout

#### err

    protected OutputStream err

#### perr

    protected PrintStream perr

#### channels

    protected Channel[] channels

#### variables

    protected final ConcurrentMap<String,Object> variables

### Constructor Detail

#### CommandSessionImpl

    protected CommandSessionImpl(CommandProcessorImpl shell,
                                 CommandSessionImpl parent)

#### CommandSessionImpl

    protected CommandSessionImpl(CommandProcessorImpl shell,
                                 InputStream in,
                                 OutputStream out,
                                 OutputStream err)

### Method Detail

#### processor

    public CommandProcessor processor()

#### getVariables

    public ConcurrentMap<String,Object> getVariables()

#### currentDir

    public Path currentDir()

Specified by:
  `currentDir` in interface `CommandSession`

#### currentDir

    public void currentDir(Path path)

Specified by:
  `currentDir` in interface `CommandSession`

#### classLoader

    public ClassLoader classLoader()

Specified by:
  `classLoader` in interface `CommandSession`

#### classLoader

    public void classLoader(ClassLoader classLoader)

Specified by:
  `classLoader` in interface `CommandSession`

#### close

    public void close()

Description copied from interface: `CommandSession`
Close this command session. After the session is closed, it will throw IllegalStateException when it is used.

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `CommandSession`

#### execute

    public Object execute(CharSequence commandline)
                   throws Exception

Description copied from interface: `CommandSession`
Execute a program in this session.

Specified by:
  `execute` in interface `CommandSession`
Parameters:
  `commandline` - the commandline
Returns:
  the result of the execution
Throws:
  `Exception` - on exception

#### getKeyboard

    public InputStream getKeyboard()

Description copied from interface: `CommandSession`
Return the input stream that is the first of the pipeline. This stream is sometimes necessary to communicate directly to the end user. For example, a "less" or "more" command needs direct input from the keyboard to control the paging.

Specified by:
  `getKeyboard` in interface `CommandSession`
Returns:
  InpuStream used closest to the user or null if input is from a file.

#### get

    public Object get(String name)

Description copied from interface: `CommandSession`
Get the value of a variable.

Specified by:
  `get` in interface `CommandSession`
Parameters:
  `name` - the name
Returns:
  Object

#### put

    public Object put(String name,
                      Object value)

Description copied from interface: `CommandSession`
Set the value of a variable.

Specified by:
  `put` in interface `CommandSession`
Parameters:
  `name` - Name of the variable.
  `value` - Value of the variable
Returns:
  Object

#### getConsole

    public PrintStream getConsole()

Description copied from interface: `CommandSession`
Return the PrintStream for the console. This must always be the stream "closest" to the user. This stream can be used to post messages that bypass the piping. If the output is piped to a file, then the object returned must be null.

Specified by:
  `getConsole` in interface `CommandSession`
Returns:
  PrintStream the console print stream

#### format

    public CharSequence format(Object target,
                               int level,
                               Converter escape)
                        throws Exception

Description copied from interface: `Converter`
Convert an objet to a CharSequence object in the requested format. The format can be INSPECT, LINE, or PART. Other values must throw IllegalArgumentException.

Specified by:
  `format` in interface `Converter`
Parameters:
  `target` - The object to be converted to a String
  `level` - One of INSPECT, LINE, or PART.
  `escape` - Use this object to format sub ordinate objects.
Returns:
  A printed object of potentially multiple lines
Throws:
  `Exception` - on exception

#### convert

    public Object convert(Class<?> desiredType,
                          Object in)

Description copied from interface: `CommandSession`
Convert an object to another type.

Specified by:
  `convert` in interface `CommandSession`
Specified by:
  `convert` in interface `Converter`
Parameters:
  `desiredType` - the type
  `in` - the instance
Returns:
  Object

#### doConvert

    public Object doConvert(Class<?> desiredType,
                            Object in)

#### format

    public CharSequence format(Object result,
                               int inspect)

Description copied from interface: `CommandSession`
Convert an object to string form (CharSequence). The level is defined in the Converter interface, it can be one of INSPECT, LINE, PART. This function always returns a non null value. As a last resort, toString is called on the Object.

Specified by:
  `format` in interface `CommandSession`
Parameters:
  `result` - the target
  `inspect` - the level
Returns:
  CharSequence

#### expr

    public Object expr(CharSequence expr)

#### invoke

    public Object invoke(Object target,
                         String name,
                         List<Object> args)
                  throws Exception

Throws:
  `Exception`

#### redirect

    public Path redirect(Path path,
                         int mode)

#### jobs

    public List<Job> jobs()

Description copied from interface: `CommandSession`
List jobs. Always return a non-null list.

Specified by:
  `jobs` in interface `CommandSession`
Returns:
  List<Job>

#### currentJob

    public static org.apache.felix.gogo.runtime.CommandSessionImpl.JobImpl currentJob()

#### foregroundJob

    public org.apache.felix.gogo.runtime.CommandSessionImpl.JobImpl foregroundJob()

Description copied from interface: `CommandSession`
Get the current foreground job or null.

Specified by:
  `foregroundJob` in interface `CommandSession`
Returns:
  Job

#### setJobListener

    public void setJobListener(JobListener listener)

Description copied from interface: `CommandSession`
Set the job listener for this session.

Specified by:
  `setJobListener` in interface `CommandSession`
Parameters:
  `listener` - the listener

#### createJob

    public org.apache.felix.gogo.runtime.CommandSessionImpl.JobImpl createJob(CharSequence command)