py4j
Class Protocol

java.lang.Object
  extended by py4j.Protocol

public class Protocol
extends 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 within a command. The rational is that the source virtual machine is usually better at determining the type of objects it sends.

There are two protocols defined in this class. The input protocol defines the command parts expected to be received by the Java gateway. The output protocol adds the command parts that can be sent to the source virtual machine (e.g., an error has occurred while executing a command).

TODO:Implement a protocol that discovers the type of parameters in a command. This might be more efficient if the protocol is ever used by weakly typed languages.

Author:
Barthelemy Dagenais

Field Summary
static char BOOLEAN_TYPE
           
static char DOUBLE_TYPE
           
static char END
           
static char ERROR
           
static String ERROR_COMMAND
           
static char INTEGER_TYPE
           
static char LIST_TYPE
           
static char NULL_TYPE
           
static char REFERENCE_TYPE
           
static char STRING_TYPE
           
static char SUCCESS
           
static char VOID
           
 
Constructor Summary
Protocol()
           
 
Method Summary
static boolean getBoolean(String commandPart)
           Assumes that commandPart is not empty.
static double getDouble(String commandPart)
           Assumes that commandPart is not empty.
static int getInteger(String commandPart)
           Assumes that commandPart is not empty.
static Object getNull(String commandPart)
           Method provided for consistency.
static Object getObject(String commandPart)
           
static Object getObject(String commandPart, Gateway gateway)
           
static String getOutputCommand(ReturnObject rObject)
           
static String getOutputErrorCommand()
           
static String getReference(String commandPart)
           Assumes that commandPart is not empty.
static String getString(String commandPart)
           Assumes that commandPart is not empty.
static boolean isBoolean(String commandPart)
           Assumes that commandPart is not empty.
static boolean isDouble(String commandPart)
           Assumes that commandPart is not empty.
static boolean isEmpty(String commandPart)
           
static boolean isEnd(String commandPart)
           Assumes that commandPart is not empty.
static boolean isInteger(String commandPart)
           Assumes that commandPart is not empty.
static boolean isNull(String commandPart)
           Assumes that commandPart is not empty.
static boolean isReference(String commandPart)
           Assumes that commandPart is not empty.
static boolean isString(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

INTEGER_TYPE

public static final char INTEGER_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

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

NULL_TYPE

public static final char NULL_TYPE
See Also:
Constant Field Values

END

public static final char END
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

VOID

public static final char VOID
See Also:
Constant Field Values

ERROR_COMMAND

public static final String ERROR_COMMAND
See Also:
Constant Field Values
Constructor Detail

Protocol

public Protocol()
Method Detail

isEmpty

public static final boolean isEmpty(String commandPart)

isEnd

public static final boolean isEnd(String commandPart)

Assumes that commandPart is not empty.

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

isInteger

public static final boolean isInteger(String commandPart)

Assumes that commandPart is not empty.

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

getInteger

public static final int getInteger(String commandPart)

Assumes that commandPart is not empty.

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

isBoolean

public static final boolean isBoolean(String commandPart)

Assumes that commandPart is not empty.

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

getBoolean

public static final boolean getBoolean(String commandPart)

Assumes that commandPart is not empty.

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

isDouble

public static final boolean isDouble(String commandPart)

Assumes that commandPart is not empty.

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

getDouble

public static final double getDouble(String commandPart)

Assumes that commandPart is not empty.

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

isReference

public static final boolean isReference(String commandPart)

Assumes that commandPart is not empty.

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

getReference

public static final String getReference(String commandPart)

Assumes that commandPart is not empty.

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

isString

public static final boolean isString(String commandPart)

Assumes that commandPart is not empty.

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

getString

public static final String getString(String commandPart)

Assumes that commandPart is not empty.

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

isNull

public static final boolean isNull(String commandPart)

Assumes that commandPart is not empty.

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

getNull

public static final Object getNull(String commandPart)

Method provided for consistency. Just returns null.

Parameters:
commandPart -
Returns:
null.

getObject

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

getObject

public static final Object getObject(String commandPart)

getOutputErrorCommand

public static final String getOutputErrorCommand()

getOutputCommand

public static final String getOutputCommand(ReturnObject rObject)