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 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:
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:
This class should be used only if the user creates new commands.
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 String |
DEFAULT_JVM_OBJECT_ID |
static char |
DOUBLE_TYPE |
static char |
END |
static char |
END_OUTPUT |
static String |
ENTRY_POINT_OBJECT_ID |
static char |
ERROR |
static 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 String |
NO_SUCH_FIELD |
static char |
NULL_TYPE |
static char |
PACKAGE_TYPE |
static String |
PYTHON_INFINITY |
static String |
PYTHON_NAN |
static String |
PYTHON_NEGATIVE_INFINITY |
static char |
PYTHON_PROXY_TYPE |
static char |
REFERENCE_TYPE |
static char |
RETURN_MESSAGE |
static char |
SET_TYPE |
static String |
STATIC_PREFIX |
static char |
STRING_TYPE |
static char |
SUCCESS |
static char |
VOID |
static String |
VOID_COMMAND |
Constructor and Description |
---|
Protocol() |
Modifier and Type | Method and Description |
---|---|
static String |
encodeBytes(byte[] bytes)
Transform the byte array into Base64 characters.
|
static boolean |
getBoolean(String commandPart)
Assumes that commandPart is not empty.
|
static byte[] |
getBytes(String commandPart)
Assumes that commandPart is not empty.
|
static BigDecimal |
getDecimal(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 long |
getLong(String commandPart)
Assumes that commandPart is not empty.
|
static String |
getMemberOutputCommand(char memberType) |
static String |
getMemberOutputCommand(char memberType,
String fqn) |
static String |
getNoSuchFieldOutputCommand() |
static Object |
getNull(String commandPart)
Method provided for consistency.
|
static Object |
getObject(String commandPart,
Gateway gateway) |
static String |
getOutputCommand(ReturnObject rObject) |
static String |
getOutputErrorCommand() |
static String |
getOutputErrorCommand(String errorMessage) |
static String |
getOutputErrorCommand(Throwable throwable) |
static String |
getOutputVoidCommand() |
static char |
getPrimitiveType(Object primitiveObject) |
static Object |
getPythonProxy(String commandPart,
Gateway gateway)
Assumes that commandPart is not empty.
|
static Object |
getPythonProxyHandler(ClassLoader classLoader,
Class[] interfacesToImplement,
String objectId,
Gateway gateway) |
static Object |
getReference(String commandPart,
Gateway gateway)
Assumes that commandPart is not empty.
|
static Object |
getReturnValue(String returnMessage,
Gateway gateway) |
static Throwable |
getRootThrowable(Throwable throwable,
boolean skipInvocation) |
static String |
getString(String commandPart)
Assumes that commandPart is not empty.
|
static String |
getThrowableAsString(Throwable throwable) |
static boolean |
isBoolean(String commandPart)
Assumes that commandPart is not empty.
|
static boolean |
isBytes(String commandPart)
Assumes that commandPart is not empty.
|
static boolean |
isDecimal(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 |
isError(String returnMessage)
Assumes that commandPart is not null.
|
static boolean |
isInteger(String commandPart)
Assumes that commandPart is not empty.
|
static boolean |
isLong(String commandPart)
Assumes that commandPart is not empty.
|
static boolean |
isNull(String commandPart)
Assumes that commandPart is not empty.
|
static boolean |
isPythonProxy(String commandPart)
Assumes that commandPart is not empty.
|
static boolean |
isReference(String commandPart)
Assumes that commandPart is not empty.
|
static boolean |
isReturnMessage(String commandPart) |
static boolean |
isString(String commandPart)
Assumes that commandPart is not empty.
|
public static final char BYTES_TYPE
public static final char INTEGER_TYPE
public static final char LONG_TYPE
public static final char BOOLEAN_TYPE
public static final char DOUBLE_TYPE
public static final char DECIMAL_TYPE
public static final char STRING_TYPE
public static final char REFERENCE_TYPE
public static final char LIST_TYPE
public static final char SET_TYPE
public static final char ARRAY_TYPE
public static final char MAP_TYPE
public static final char ITERATOR_TYPE
public static final char NULL_TYPE
public static final char PYTHON_PROXY_TYPE
public static final char PACKAGE_TYPE
public static final char CLASS_TYPE
public static final char METHOD_TYPE
public static final char NO_MEMBER
public static final char VOID
public static final char RETURN_MESSAGE
public static final char END
public static final char END_OUTPUT
public static final char ERROR
public static final char SUCCESS
public static final String ERROR_COMMAND
public static final String VOID_COMMAND
public static final String NO_SUCH_FIELD
public static final String ENTRY_POINT_OBJECT_ID
public static final String DEFAULT_JVM_OBJECT_ID
public static final String STATIC_PREFIX
public static final String PYTHON_NAN
public static final String PYTHON_INFINITY
public static final String PYTHON_NEGATIVE_INFINITY
public static String encodeBytes(byte[] bytes)
Transform the byte array into Base64 characters.
bytes
- public static final boolean getBoolean(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final byte[] getBytes(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final BigDecimal getDecimal(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final double getDouble(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final int getInteger(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final long getLong(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final String getMemberOutputCommand(char memberType)
public static final String getMemberOutputCommand(char memberType, String fqn)
public static String getNoSuchFieldOutputCommand()
public static final Object getNull(String commandPart)
Method provided for consistency. Just returns null.
commandPart
- public static final String getOutputCommand(ReturnObject rObject)
public static final String getOutputErrorCommand()
public static final String getOutputVoidCommand()
public static char getPrimitiveType(Object primitiveObject)
public static Object getPythonProxy(String commandPart, Gateway gateway)
Assumes that commandPart is not empty.
commandPart
- public static Object getPythonProxyHandler(ClassLoader classLoader, Class[] interfacesToImplement, String objectId, Gateway gateway)
public static final Object getReference(String commandPart, Gateway gateway)
Assumes that commandPart is not empty.
commandPart
- public static final Throwable getRootThrowable(Throwable throwable, boolean skipInvocation)
public static final String getString(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isBoolean(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isReturnMessage(String commandPart)
commandPart
- public static final boolean isBytes(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isDecimal(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isDouble(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isEmpty(String commandPart)
public static final boolean isEnd(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isError(String returnMessage)
Assumes that commandPart is not null.
returnMessage
- public static final boolean isInteger(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isLong(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isNull(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isPythonProxy(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isReference(String commandPart)
Assumes that commandPart is not empty.
commandPart
- public static final boolean isString(String commandPart)
Assumes that commandPart is not empty.
commandPart
- Copyright © 2016. All rights reserved.