Protocol (py4j-java 0.10.0 API)
Date: 2016-04-18

py4j

## Class Protocol

- java.lang.Object
- - py4j.Protocol

-     public class Protocol
      extends java.lang.Object

  This class defines the protocol used to communicate between two virtual machines (e.g., Python and Java).

  Currently, the protocol requires type information (e.g., is this string an integer, an object reference or a boolean?) to be embedded with each command part. The rational is that the source virtual machine is usually better at determining the type of objects it sends.

  An input command is usually composed of:

  - A command name (e.g., c for call)
  - Optionally, a sub command name (e.g., 'a' for concatenate in the list command)
  - A list of command parts (e.g., the name of a method, the value of a parameter, etc.)
  - The End of Command marker (e)

  The various parts of a command are separated by \n characters. These characters are automatically escaped and unescaped in Strings on both sides (Java and Python).

  An output command is usually composed of:

  - A success or error code (y for yes, x for exception)
  - A return value (e.g., n for null, v for void, or any other value like a String)

  This class should be used only if the user creates new commands.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static char` | `ARRAY_TYPE`
    `static char` | `BOOLEAN_TYPE`
    `static char` | `BYTES_TYPE`
    `static char` | `CLASS_TYPE`
    `static char` | `DECIMAL_TYPE`
    `static java.lang.String` | `DEFAULT_JVM_OBJECT_ID`
    `static char` | `DOUBLE_TYPE`
    `static char` | `END`
    `static char` | `END_OUTPUT`
    `static java.lang.String` | `ENTRY_POINT_OBJECT_ID`
    `static char` | `ERROR`
    `static java.lang.String` | `ERROR_COMMAND`
    `static char` | `INTEGER_TYPE`
    `static char` | `ITERATOR_TYPE`
    `static char` | `LIST_TYPE`
    `static char` | `LONG_TYPE`
    `static char` | `MAP_TYPE`
    `static char` | `METHOD_TYPE`
    `static char` | `NO_MEMBER`
    `static java.lang.String` | `NO_SUCH_FIELD`
    `static char` | `NULL_TYPE`
    `static char` | `PACKAGE_TYPE`
    `static java.lang.String` | `PYTHON_INFINITY`
    `static java.lang.String` | `PYTHON_NAN`
    `static java.lang.String` | `PYTHON_NEGATIVE_INFINITY`
    `static char` | `PYTHON_PROXY_TYPE`
    `static char` | `REFERENCE_TYPE`
    `static char` | `RETURN_MESSAGE`
    `static char` | `SET_TYPE`
    `static java.lang.String` | `STATIC_PREFIX`
    `static char` | `STRING_TYPE`
    `static char` | `SUCCESS`
    `static char` | `VOID`
    `static java.lang.String` | `VOID_COMMAND`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Protocol()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static java.lang.String` | `encodeBytes(byte[] bytes)` Transform the byte array into Base64 characters.
    `static boolean` | `getBoolean(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static byte[]` | `getBytes(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static java.math.BigDecimal` | `getDecimal(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static double` | `getDouble(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static int` | `getInteger(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static long` | `getLong(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static java.lang.String` | `getMemberOutputCommand(char memberType)`
    `static java.lang.String` | `getMemberOutputCommand(char memberType, java.lang.String fqn)`
    `static java.lang.String` | `getNoSuchFieldOutputCommand()`
    `static java.lang.Object` | `getNull(java.lang.String commandPart)` Method provided for consistency.
    `static java.lang.Object` | `getObject(java.lang.String commandPart, Gateway gateway)`
    `static java.lang.String` | `getOutputCommand(ReturnObject rObject)`
    `static java.lang.String` | `getOutputErrorCommand()`
    `static java.lang.String` | `getOutputErrorCommand(java.lang.String errorMessage)`
    `static java.lang.String` | `getOutputErrorCommand(java.lang.Throwable throwable)`
    `static java.lang.String` | `getOutputVoidCommand()`
    `static char` | `getPrimitiveType(java.lang.Object primitiveObject)`
    `static java.lang.Object` | `getPythonProxy(java.lang.String commandPart, Gateway gateway)` Assumes that commandPart is not empty.
    `static java.lang.Object` | `getPythonProxyHandler(java.lang.ClassLoader classLoader, java.lang.Class[] interfacesToImplement, java.lang.String objectId, Gateway gateway)`
    `static java.lang.Object` | `getReference(java.lang.String commandPart, Gateway gateway)` Assumes that commandPart is not empty.
    `static java.lang.Object` | `getReturnValue(java.lang.String returnMessage, Gateway gateway)`
    `static java.lang.Throwable` | `getRootThrowable(java.lang.Throwable throwable, boolean skipInvocation)`
    `static java.lang.String` | `getString(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static java.lang.String` | `getThrowableAsString(java.lang.Throwable throwable)`
    `static boolean` | `isBoolean(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isBytes(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isDecimal(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isDouble(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isEmpty(java.lang.String commandPart)`
    `static boolean` | `isEnd(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isError(java.lang.String returnMessage)` Assumes that commandPart is not null.
    `static boolean` | `isInteger(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isLong(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isNull(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isPythonProxy(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isReference(java.lang.String commandPart)` Assumes that commandPart is not empty.
    `static boolean` | `isReturnMessage(java.lang.String commandPart)`
    `static boolean` | `isString(java.lang.String commandPart)` Assumes that commandPart is not empty.

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

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

- - ### Field Detail

    - #### BYTES_TYPE

          public static final char BYTES_TYPE

      See Also:
        Constant Field Values

    - #### INTEGER_TYPE

          public static final char INTEGER_TYPE

      See Also:
        Constant Field Values

    - #### LONG_TYPE

          public static final char LONG_TYPE

      See Also:
        Constant Field Values

    - #### BOOLEAN_TYPE

          public static final char BOOLEAN_TYPE

      See Also:
        Constant Field Values

    - #### DOUBLE_TYPE

          public static final char DOUBLE_TYPE

      See Also:
        Constant Field Values

    - #### DECIMAL_TYPE

          public static final char DECIMAL_TYPE

      See Also:
        Constant Field Values

    - #### STRING_TYPE

          public static final char STRING_TYPE

      See Also:
        Constant Field Values

    - #### REFERENCE_TYPE

          public static final char REFERENCE_TYPE

      See Also:
        Constant Field Values

    - #### LIST_TYPE

          public static final char LIST_TYPE

      See Also:
        Constant Field Values

    - #### SET_TYPE

          public static final char SET_TYPE

      See Also:
        Constant Field Values

    - #### ARRAY_TYPE

          public static final char ARRAY_TYPE

      See Also:
        Constant Field Values

    - #### MAP_TYPE

          public static final char MAP_TYPE

      See Also:
        Constant Field Values

    - #### ITERATOR_TYPE

          public static final char ITERATOR_TYPE

      See Also:
        Constant Field Values

    - #### NULL_TYPE

          public static final char NULL_TYPE

      See Also:
        Constant Field Values

    - #### PYTHON_PROXY_TYPE

          public static final char PYTHON_PROXY_TYPE

      See Also:
        Constant Field Values

    - #### PACKAGE_TYPE

          public static final char PACKAGE_TYPE

      See Also:
        Constant Field Values

    - #### CLASS_TYPE

          public static final char CLASS_TYPE

      See Also:
        Constant Field Values

    - #### METHOD_TYPE

          public static final char METHOD_TYPE

      See Also:
        Constant Field Values

    - #### NO_MEMBER

          public static final char NO_MEMBER

      See Also:
        Constant Field Values

    - #### VOID

          public static final char VOID

      See Also:
        Constant Field Values

    - #### RETURN_MESSAGE

          public static final char RETURN_MESSAGE

      See Also:
        Constant Field Values

    - #### END

          public static final char END

      See Also:
        Constant Field Values

    - #### END_OUTPUT

          public static final char END_OUTPUT

      See Also:
        Constant Field Values

    - #### ERROR

          public static final char ERROR

      See Also:
        Constant Field Values

    - #### SUCCESS

          public static final char SUCCESS

      See Also:
        Constant Field Values

    - #### ERROR_COMMAND

          public static final java.lang.String ERROR_COMMAND

      See Also:
        Constant Field Values

    - #### VOID_COMMAND

          public static final java.lang.String VOID_COMMAND

      See Also:
        Constant Field Values

    - #### NO_SUCH_FIELD

          public static final java.lang.String NO_SUCH_FIELD

      See Also:
        Constant Field Values

    - #### ENTRY_POINT_OBJECT_ID

          public static final java.lang.String ENTRY_POINT_OBJECT_ID

      See Also:
        Constant Field Values

    - #### DEFAULT_JVM_OBJECT_ID

          public static final java.lang.String DEFAULT_JVM_OBJECT_ID

      See Also:
        Constant Field Values

    - #### STATIC_PREFIX

          public static final java.lang.String STATIC_PREFIX

      See Also:
        Constant Field Values

    - #### PYTHON_NAN

          public static final java.lang.String PYTHON_NAN

      See Also:
        Constant Field Values

    - #### PYTHON_INFINITY

          public static final java.lang.String PYTHON_INFINITY

      See Also:
        Constant Field Values

    - #### PYTHON_NEGATIVE_INFINITY

          public static final java.lang.String PYTHON_NEGATIVE_INFINITY

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Protocol

          public Protocol()

  - ### Method Detail

    - #### encodeBytes

          public static java.lang.String encodeBytes(byte[] bytes)

      Transform the byte array into Base64 characters.

      Parameters:
        `bytes` -
      Returns:

    - #### getBoolean

          public static final boolean getBoolean(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        The boolean value corresponding to this command part.

    - #### getBytes

          public static final byte[] getBytes(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        The byte array corresponding to this command part.

    - #### getDecimal

          public static final java.math.BigDecimal getDecimal(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        The decimal value corresponding to this command part.

    - #### getDouble

          public static final double getDouble(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        The double value corresponding to this command part.

    - #### getInteger

          public static final int getInteger(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        The integer value corresponding to this command part.

    - #### getLong

          public static final long getLong(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        The long value corresponding to this command part.

    - #### getMemberOutputCommand

          public static final java.lang.String getMemberOutputCommand(char memberType)

    - #### getMemberOutputCommand

          public static final java.lang.String getMemberOutputCommand(char memberType,
                                                                      java.lang.String fqn)

    - #### getNoSuchFieldOutputCommand

          public static java.lang.String getNoSuchFieldOutputCommand()

    - #### getNull

          public static final java.lang.Object getNull(java.lang.String commandPart)

      Method provided for consistency. Just returns null.

      Parameters:
        `commandPart` -
      Returns:
        null.

    - #### getObject

          public static final java.lang.Object getObject(java.lang.String commandPart,
                                                         Gateway gateway)

    - #### getOutputCommand

          public static final java.lang.String getOutputCommand(ReturnObject rObject)

    - #### getOutputErrorCommand

          public static final java.lang.String getOutputErrorCommand()

    - #### getOutputErrorCommand

          public static final java.lang.String getOutputErrorCommand(java.lang.String errorMessage)

    - #### getOutputErrorCommand

          public static final java.lang.String getOutputErrorCommand(java.lang.Throwable throwable)

    - #### getOutputVoidCommand

          public static final java.lang.String getOutputVoidCommand()

    - #### getPrimitiveType

          public static char getPrimitiveType(java.lang.Object primitiveObject)

    - #### getPythonProxy

          public static java.lang.Object getPythonProxy(java.lang.String commandPart,
                                                        Gateway gateway)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        A Python proxy specified in this command part.

    - #### getPythonProxyHandler

          public static java.lang.Object getPythonProxyHandler(java.lang.ClassLoader classLoader,
                                                               java.lang.Class[] interfacesToImplement,
                                                               java.lang.String objectId,
                                                               Gateway gateway)

    - #### getReference

          public static final java.lang.Object getReference(java.lang.String commandPart,
                                                            Gateway gateway)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        The object referenced in this command part.

    - #### getReturnValue

          public static final java.lang.Object getReturnValue(java.lang.String returnMessage,
                                                              Gateway gateway)

    - #### getRootThrowable

          public static final java.lang.Throwable getRootThrowable(java.lang.Throwable throwable,
                                                                   boolean skipInvocation)

    - #### getString

          public static final java.lang.String getString(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        The reference contained in this command part.

    - #### getThrowableAsString

          public static final java.lang.String getThrowableAsString(java.lang.Throwable throwable)

    - #### isBoolean

          public static final boolean isBoolean(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is a boolean

    - #### isReturnMessage

          public static final boolean isReturnMessage(java.lang.String commandPart)

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is a return message

    - #### isBytes

          public static final boolean isBytes(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is a byte array

    - #### isDecimal

          public static final boolean isDecimal(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is a decimal

    - #### isDouble

          public static final boolean isDouble(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is a double

    - #### isEmpty

          public static final boolean isEmpty(java.lang.String commandPart)

    - #### isEnd

          public static final boolean isEnd(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is the end token

    - #### isError

          public static final boolean isError(java.lang.String returnMessage)

      Assumes that commandPart is not null.

      Parameters:
        `returnMessage` -
      Returns:
        True if the return message is an error

    - #### isInteger

          public static final boolean isInteger(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is an integer

    - #### isLong

          public static final boolean isLong(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is a long

    - #### isNull

          public static final boolean isNull(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is null

    - #### isPythonProxy

          public static final boolean isPythonProxy(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is a python proxy

    - #### isReference

          public static final boolean isReference(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is a reference

    - #### isString

          public static final boolean isString(java.lang.String commandPart)

      Assumes that commandPart is not empty.

      Parameters:
        `commandPart` -
      Returns:
        True if the command part is a reference