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, StreamCommand

      public abstract class AbstractCommand
      extends java.lang.Object
      implements Command

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

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.lang.String` | `commandName`
    `protected Py4JServerConnection` | `connection`
    `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(java.lang.String commandName, java.io.BufferedReader reader, java.io.BufferedWriter writer)`
    `protected java.util.List<java.lang.Object>` | `getArguments(java.io.BufferedReader reader)`
    `java.lang.String` | `getCommandName()`
    `protected java.util.List<java.lang.String>` | `getStringArguments(java.io.BufferedReader reader)`
    `void` | `init(Gateway gateway, Py4JServerConnection connection)` Called when a command instance is created and assigned to a connection.
    `protected ReturnObject` | `invokeMethod(java.lang.String methodName, java.lang.String targetObjectId, java.util.List<java.lang.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 java.lang.String commandName

    - #### connection

          protected Py4JServerConnection connection

  - ### Constructor Detail

    - #### AbstractCommand

          public AbstractCommand()

  - ### Method Detail

    - #### execute

          public abstract void execute(java.lang.String commandName,
                                       java.io.BufferedReader reader,
                                       java.io.BufferedWriter writer)
                                throws Py4JException,
                                       java.io.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.
        `java.io.IOException` - If an error occurs while using the reader or the writer.

    - #### getArguments

          protected java.util.List<java.lang.Object> getArguments(java.io.BufferedReader reader)
                                                           throws java.io.IOException

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

    - #### getCommandName

          public java.lang.String getCommandName()

      Specified by:
        `getCommandName` in interface `Command`

    - #### getStringArguments

          protected java.util.List<java.lang.String> getStringArguments(java.io.BufferedReader reader)
                                                                 throws java.io.IOException

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

    - #### init

          public void init(Gateway gateway,
                           Py4JServerConnection connection)

      Description copied from interface: `Command`

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

      Specified by:
        `init` in interface `Command`
        `connection` - the `Py4JServerConnection` this socket is assigned to

    - #### invokeMethod

          protected ReturnObject invokeMethod(java.lang.String methodName,
                                              java.lang.String targetObjectId,
                                              java.util.List<java.lang.Object> arguments)

      Convenient shortcut to invoke a method dynamically.

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