Class Gateway
- java.lang.Object
-
- py4j.Gateway
-
public class Gateway extends java.lang.ObjectA Gateway manages various states: entryPoint, references to objects returned to a Python program, etc.
This class is not intended to be directly accessed by users.
-
-
Constructor Summary
Constructors Constructor Description Gateway(java.lang.Object entryPoint)Gateway(java.lang.Object entryPoint, Py4JPythonClient cbClient)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcloseConnection()Called when a connection is closed.java.lang.ObjectcreateProxy(java.lang.ClassLoader classLoader, java.lang.Class[] interfacesToImplement, java.lang.String objectId)Creates a proxy implementing the provided interfaces with the provided class loader.protected PythonProxyHandlercreatePythonProxyHandler(java.lang.String id)voiddeleteObject(java.lang.String objectId)protected java.util.concurrent.atomic.AtomicIntegergetArgCounter()java.util.Map<java.lang.String,java.lang.Object>getBindings()Py4JPythonClientgetCallbackClient()JVMViewgetDefaultJVMView()java.lang.ObjectgetEntryPoint()protected java.lang.StringgetNextObjectId()protected java.util.concurrent.atomic.AtomicIntegergetObjCounter()java.lang.ObjectgetObject(java.lang.String objectId)protected java.lang.ObjectgetObjectFromId(java.lang.String targetObjectId)ReflectionEnginegetReflectionEngine()ReturnObjectgetReturnObject(java.lang.Object object)ReturnObjectinvoke(java.lang.String methodName, java.lang.String targetObjectId, java.util.List<java.lang.Object> args)Invokes a method.ReturnObjectinvoke(java.lang.String fqn, java.util.List<java.lang.Object> args)Invokes a constructor and returned the constructed object.protected booleanisArray(java.lang.Object object)protected booleanisDecimalObject(java.lang.Object object)protected booleanisList(java.lang.Object object)protected booleanisMap(java.lang.Object object)protected booleanisPrimitiveObject(java.lang.Object object)protected booleanisSet(java.lang.Object object)booleanisStarted()java.lang.StringputNewObject(java.lang.Object object)Adds a new object to the gateway bindings and return the generated ID.java.lang.ObjectputObject(java.lang.String id, java.lang.Object object)voidresetCallbackClient(java.net.InetAddress pythonAddress, int pythonPort)Replace the callback client with the new one which connects to the given address and port.voidsetStarted(boolean isStarted)voidshutdown()Releases all objects that were referenced by this Gateway and shuts down the CallbackClient.voidshutdown(boolean shutdownCallbackClient)Releases all objects that were referenced by this Gateway and optionally shut down the callback client.voidstartup()
-
-
-
Constructor Detail
-
Gateway
public Gateway(java.lang.Object entryPoint)
-
Gateway
public Gateway(java.lang.Object entryPoint, Py4JPythonClient cbClient)
-
-
Method Detail
-
resetCallbackClient
public void resetCallbackClient(java.net.InetAddress pythonAddress, int pythonPort)Replace the callback client with the new one which connects to the given address and port. This method is useful if for some reason your CallbackServer changes its address or you come to know of the address after Gateway has already instantiated.
This method is not thread-safe! Make sure that only one thread calls this method.
- Parameters:
pythonAddress- The address used by a PythonProxyHandler to connect to a Python gateway.pythonPort- The port used by a PythonProxyHandler to connect to a Python gateway. Essentially the port used for Python callbacks.
-
closeConnection
public void closeConnection()
Called when a connection is closed.
-
deleteObject
public void deleteObject(java.lang.String objectId)
-
getArgCounter
protected java.util.concurrent.atomic.AtomicInteger getArgCounter()
-
getBindings
public java.util.Map<java.lang.String,java.lang.Object> getBindings()
- Returns:
- The bindings of the Gateway. Should never be called by other classes except subclasses and testing classes.
-
getCallbackClient
public Py4JPythonClient getCallbackClient()
-
getDefaultJVMView
public JVMView getDefaultJVMView()
-
getEntryPoint
public java.lang.Object getEntryPoint()
-
getNextObjectId
protected java.lang.String getNextObjectId()
-
getObjCounter
protected java.util.concurrent.atomic.AtomicInteger getObjCounter()
-
getObject
public java.lang.Object getObject(java.lang.String objectId)
- Parameters:
objectId-- Returns:
- The object associated with the id or null if the object id is unknown.
-
getObjectFromId
protected java.lang.Object getObjectFromId(java.lang.String targetObjectId)
-
getReflectionEngine
public ReflectionEngine getReflectionEngine()
-
getReturnObject
public ReturnObject getReturnObject(java.lang.Object object)
-
invoke
public ReturnObject invoke(java.lang.String fqn, java.util.List<java.lang.Object> args)
Invokes a constructor and returned the constructed object.
- Parameters:
fqn- The fully qualified name of the class.args-- Returns:
-
invoke
public ReturnObject invoke(java.lang.String methodName, java.lang.String targetObjectId, java.util.List<java.lang.Object> args)
Invokes a method.
- Parameters:
methodName-targetObjectId-args-- Returns:
-
isArray
protected boolean isArray(java.lang.Object object)
-
isDecimalObject
protected boolean isDecimalObject(java.lang.Object object)
-
isList
protected boolean isList(java.lang.Object object)
-
isMap
protected boolean isMap(java.lang.Object object)
-
isPrimitiveObject
protected boolean isPrimitiveObject(java.lang.Object object)
-
isSet
protected boolean isSet(java.lang.Object object)
-
isStarted
public boolean isStarted()
-
putNewObject
public java.lang.String putNewObject(java.lang.Object object)
Adds a new object to the gateway bindings and return the generated ID. Should NEVER be called by other classes except subclasses and testing classes.
- Parameters:
object-- Returns:
-
putObject
public java.lang.Object putObject(java.lang.String id, java.lang.Object object)
-
setStarted
public void setStarted(boolean isStarted)
-
createProxy
public java.lang.Object createProxy(java.lang.ClassLoader classLoader, java.lang.Class[] interfacesToImplement, java.lang.String objectId)Creates a proxy implementing the provided interfaces with the provided class loader.
This method is part of the Gateway instance to allow overriding or customizing per Gateway instance.
- Parameters:
classLoader-interfacesToImplement-objectId-- Returns:
-
createPythonProxyHandler
protected PythonProxyHandler createPythonProxyHandler(java.lang.String id)
-
shutdown
public void shutdown()
Releases all objects that were referenced by this Gateway and shuts down the CallbackClient.
-
shutdown
public void shutdown(boolean shutdownCallbackClient)
Releases all objects that were referenced by this Gateway and optionally shut down the callback client.
- Parameters:
shutdownCallbackClient- Shuts down the CallbackClient instance if true.
-
startup
public void startup()
-
-