py4j.commands

## Class AbstractCommand

- java.lang.Object
- - py4j.commands.AbstractCommand

- All Implemented Interfaces:
    Command
  Direct Known Subclasses:
    ArrayCommand, CallCommand, ConstructorCommand, DirCommand, ExceptionCommand, FieldCommand, HelpPageCommand, JVMViewCommand, ListCommand, MemoryCommand, ReflectionCommand, ShutdownGatewayServerCommand

      public abstract class AbstractCommand
      extends Object
      implements Command

  Abstract base class for commands. Provides useful methods allowing the parsing of command arguments.

  Author:
    Barthelemy Dagenais

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected String` | `commandName`
    `protected Gateway` | `gateway`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractCommand()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract void` | `execute(String commandName, BufferedReader reader, BufferedWriter writer)`
    `protected List<Object>` | `getArguments(BufferedReader reader)`
    `String` | `getCommandName()`
    `protected List<String>` | `getStringArguments(BufferedReader reader)`
    `void` | `init(Gateway gateway)` Called when a command instance is created and assigned to a connection.
    `protected ReturnObject` | `invokeMethod(String methodName, String targetObjectId, List<Object> arguments)` Convenient shortcut to invoke a method dynamically.

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

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

- - ### Field Detail

    - #### gateway

          protected Gateway gateway

    - #### commandName

          protected String commandName

  - ### Constructor Detail

    - #### AbstractCommand

          public AbstractCommand()

  - ### Method Detail

    - #### execute

          public abstract void execute(String commandName,
                                       BufferedReader reader,
                                       BufferedWriter writer)
                                throws Py4JException,
                                       IOException

      Specified by:
        `execute` in interface `Command`
      Parameters:
        `commandName` - The command name that was extracted of the command.
        `reader` - The reader from which to read the command parts. Each command part are expected to be on a separate line and readable through `BufferedReader.readLine()`.
        `writer` - The writer to which the return value should be written.
      Throws:
        `Py4JException` - If an error occurs while executing the command. All exceptions except IOException caused by the reader and the writer should be wrapper in a `Py4JException` instance.
        `IOException` - If an error occurs while using the reader or the writer.

    - #### getArguments

          protected List<Object> getArguments(BufferedReader reader)
                                       throws IOException

      Parameters:
        `reader` -
      Returns:
        A list of the remaining arguments (converted using Protocol.getObject) in the reader. Consumes the end of command part.
      Throws:
        `IOException`

    - #### getCommandName

          public String getCommandName()

      Specified by:
        `getCommandName` in interface `Command`

    - #### getStringArguments

          protected List<String> getStringArguments(BufferedReader reader)
                                             throws IOException

      Parameters:
        `reader` -
      Returns:
        A list of the remaining arguments (as strings) in the reader. Consumes the end of command part.
      Throws:
        `IOException`

    - #### init

          public void init(Gateway gateway)

      Description copied from interface: `Command`

      Called when a command instance is created and assigned to a connection.

      Specified by:
        `init` in interface `Command`

    - #### invokeMethod

          protected ReturnObject invokeMethod(String methodName,
                                              String targetObjectId,
                                              List<Object> arguments)

      Convenient shortcut to invoke a method dynamically.

      Parameters:
        `methodName` -
        `targetObjectId` -
        `arguments` -
      Returns: