Gateway svc = new Gateway(); GatewaySOAP port = svc.getGatewaySOAP(); MyRequestClass rq = new MyRequestClass(); rq.setSomething(2); MyResponseClass rs = port.doMyVeryOwnJob(rq); System.out.println("Result is: " + rs.getSomethingElse());
/** * <p> * Legacy method. Please use Gateway.createProxy. * </p> * @param classLoader * @param interfacesToImplement * @param objectId * @param gateway * @return * @deprecated */ public static Object getPythonProxyHandler(ClassLoader classLoader, Class[] interfacesToImplement, String objectId, Gateway gateway) { return gateway.createProxy(classLoader, interfacesToImplement, objectId); }
/** * <p> * Creates a proxy implementing the provided interfaces with the provided class loader. * </p> * <p> * This method is part of the Gateway instance to allow overriding or customizing per Gateway instance. * </p> * @param classLoader * @param interfacesToImplement * @param objectId * @return */ public Object createProxy(ClassLoader classLoader, @SuppressWarnings("rawtypes") Class[] interfacesToImplement, String objectId) { return Proxy.newProxyInstance(classLoader, interfacesToImplement, createPythonProxyHandler(objectId)); }
@SuppressWarnings({ "rawtypes", "unchecked" }) private String concat_list(BufferedReader reader) throws IOException { List list1 = (List) gateway.getObject(reader.readLine()); List list2 = (List) gateway.getObject(reader.readLine()); // Read end reader.readLine(); List list3 = new ArrayList(list1); list3.addAll(list2); ReturnObject returnObject = gateway.getReturnObject(list3); return Protocol.getOutputCommand(returnObject); }
private String sliceArray(BufferedReader reader) throws IOException { Object arrayObject = gateway.getObject(reader.readLine()); List<Object> indices = getArguments(reader); int size = indices.size(); Object newArray = gateway.getReflectionEngine().createArray(arrayObject.getClass().getComponentType().getName(), new int[] { size }); for (int i = 0; i < size; i++) { int index = (Integer) indices.get(i); Array.set(newArray, i, Array.get(arrayObject, index)); } ReturnObject returnObject = gateway.getReturnObject(newArray); return Protocol.getOutputCommand(returnObject); } }
GatewayServer(Object entryPoint, int port, InetAddress address, int connectTimeout, int readTimeout, List<Class<? extends Command>> customCommands, Py4JPythonClient cbClient, ServerSocketFactory sSocketFactory, String authToken) { super(); this.port = port; this.address = address; this.connectTimeout = connectTimeout; this.readTimeout = readTimeout; this.gateway = new Gateway(entryPoint, cbClient); this.pythonPort = cbClient.getPort(); this.pythonAddress = cbClient.getAddress(); this.gateway.putObject(GATEWAY_SERVER_ID, this); if (customCommands != null) { this.customCommands = customCommands; } else { this.customCommands = new ArrayList<Class<? extends Command>>(); } this.listeners = new CopyOnWriteArrayList<GatewayServerListener>(); this.sSocketFactory = sSocketFactory; this.authToken = authToken; }
Object targetObject = getObjectFromId(targetObjectId); logger.finer("Calling: " + methodName); Object[] parameters = args.toArray(); returnObject = getReturnObject(object); } catch (Py4JJavaException je) { String id = putNewObject(je.getCause()); returnObject = ReturnObject.getErrorReferenceReturnObject(id); } catch (Py4JException pe) {
protected Object getObjectFromId(String targetObjectId) { if (targetObjectId.startsWith(Protocol.STATIC_PREFIX)) { return null; } else { return getObject(targetObjectId); } }
private GatewayServer(Gateway gateway, int port, InetAddress address, int connectTimeout, int readTimeout, List<Class<? extends Command>> customCommands, ServerSocketFactory sSocketFactory, String authToken) { super(); this.port = port; this.address = address; this.connectTimeout = connectTimeout; this.readTimeout = readTimeout; this.gateway = gateway; this.pythonPort = gateway.getCallbackClient().getPort(); this.pythonAddress = gateway.getCallbackClient().getAddress(); this.gateway.putObject(GATEWAY_SERVER_ID, this); if (customCommands != null) { this.customCommands = customCommands; } else { this.customCommands = new ArrayList<Class<? extends Command>>(); } this.listeners = new CopyOnWriteArrayList<GatewayServerListener>(); this.sSocketFactory = sSocketFactory; this.authToken = authToken; }
private String createArray(BufferedReader reader) throws IOException { String fqn = (String) Protocol.getObject(reader.readLine(), gateway); List<Object> dimensions = getArguments(reader); int size = dimensions.size(); int[] dimensionsInt = new int[size]; for (int i = 0; i < size; i++) { dimensionsInt[i] = (Integer) dimensions.get(i); } Object newArray = gateway.getReflectionEngine().createArray(fqn, dimensionsInt); ReturnObject returnObject = gateway.getReturnObject(newArray); return Protocol.getOutputCommand(returnObject); }
@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { logger.fine("Method " + method.getName() + " called on Python object " + id); StringBuilder sBuilder = new StringBuilder(); sBuilder.append(CALL_PROXY_COMMAND_NAME); sBuilder.append(id); sBuilder.append("\n"); sBuilder.append(method.getName()); sBuilder.append("\n"); if (args != null) { for (Object arg : args) { sBuilder.append(gateway.getReturnObject(arg).getCommandPart()); sBuilder.append("\n"); } } sBuilder.append("e\n"); String returnCommand = gateway.getCallbackClient().sendCommand(sBuilder.toString()); Object output = Protocol.getReturnValue(returnCommand, gateway); Object convertedOutput = convertOutput(method, output); return convertedOutput; }
@Override public void init(Gateway gateway, Py4JServerConnection connection) { super.init(gateway, connection); rEngine = gateway.getReflectionEngine(); }
public Py4JPythonClient getCallbackClient() { return gateway.getCallbackClient(); }
/** * <p> * 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. * </p> * * @param object * @return */ public String putNewObject(Object object) { String id = getNextObjectId(); bindings.put(id, object); return id; }
private String deleteObject(BufferedReader reader) throws IOException { String objectId = reader.readLine(); // EoC reader.readLine(); if (objectId != Protocol.ENTRY_POINT_OBJECT_ID && objectId != Protocol.DEFAULT_JVM_OBJECT_ID && objectId != Protocol.GATEWAY_SERVER_ID) { gateway.deleteObject(objectId); } return Protocol.getOutputVoidCommand(); }
private String lenArray(BufferedReader reader) throws IOException { Object arrayObject = gateway.getObject(reader.readLine()); // Read end reader.readLine(); int length = Array.getLength(arrayObject); ReturnObject returnObject = gateway.getReturnObject(length); return Protocol.getOutputCommand(returnObject); }
@Override public void init(Gateway gateway, Py4JServerConnection connection) { super.init(gateway, connection); this.gatewayServer = (Py4JJavaServer) gateway.getObject(GatewayServer.GATEWAY_SERVER_ID); }
@Override public void init(Gateway gateway, Py4JServerConnection connection) { super.init(gateway, connection); reflectionEngine = gateway.getReflectionEngine(); }
@Override protected void finalize() throws Throwable { try { if (gateway.getCallbackClient().isMemoryManagementEnabled() && this.id != Protocol.ENTRY_POINT_OBJECT_ID) { logger.fine("Finalizing python proxy id " + this.id); gateway.getCallbackClient().sendCommand(finalizeCommand, false); } } catch (Exception e) { logger.warning("Python Proxy ID could not send a finalize message: " + this.id); } finally { super.finalize(); } }
@SuppressWarnings({ "rawtypes", "unchecked" }) private String slice_list(BufferedReader reader) throws IOException { List list1 = (List) gateway.getObject(reader.readLine()); List<Object> arguments = getArguments(reader); List slice = new ArrayList(); for (Object argument : arguments) { slice.add(list1.get((Integer) argument)); } ReturnObject returnObject = gateway.getReturnObject(slice); return Protocol.getOutputCommand(returnObject); }