private String setArray(BufferedReader reader) throws IOException { Object arrayObject = gateway.getObject(reader.readLine()); int index = (Integer) Protocol.getObject(reader.readLine(), gateway); Object objectToSet = Protocol.getObject(reader.readLine(), gateway); // Read end reader.readLine(); Object convertedObject = convertArgument(arrayObject.getClass().getComponentType(), objectToSet); Array.set(arrayObject, index, convertedObject); return RETURN_VOID; }
/** * * @param reader * @return A list of the remaining arguments (converted using * Protocol.getObject) in the reader. Consumes the end of command * part. * @throws IOException */ protected List<Object> getArguments(BufferedReader reader) throws IOException { List<Object> arguments = new ArrayList<Object>(); List<String> stringArguments = getStringArguments(reader); for (String stringArgument : stringArguments) { arguments.add(Protocol.getObject(stringArgument, this.gateway)); } return arguments; }
private String[] getJvmViewNames(String jvmId, BufferedReader reader) throws IOException { String lastSequenceIdString = (String) Protocol.getObject(reader.readLine(), gateway); final int lastSequenceId; if (lastSequenceIdString == null) { lastSequenceId = 0; } else { lastSequenceId = Integer.parseInt(lastSequenceIdString); } JVMView view = (JVMView) Protocol.getObject(jvmId, gateway); int sequenceId = view.getSequenceId(); if (lastSequenceId == sequenceId) { return null; } String[] importedNames = view.getImportedNames(); String[] returnValue = new String[importedNames.length + 1]; returnValue[0] = Integer.toString(sequenceId); System.arraycopy(importedNames, 0, returnValue, 1, importedNames.length); return returnValue; }
public final static Object getReturnValue(String returnMessage, Gateway gateway) throws Throwable { final Object result = getObject(returnMessage.substring(1), gateway); if (isError(returnMessage)) { if (result instanceof Throwable) { throw (Throwable) result; } else { throw new Py4JException("An exception was raised by the Python Proxy. Return Message: " + result); } } else { return result; } }
private String getArray(BufferedReader reader) throws IOException { Object arrayObject = gateway.getObject(reader.readLine()); int index = (Integer) Protocol.getObject(reader.readLine(), gateway); // Read end reader.readLine(); Object getObject = Array.get(arrayObject, index); ReturnObject returnObject = gateway.getReturnObject(getObject); return Protocol.getOutputCommand(returnObject); }
@Override public void execute(String commandName, BufferedReader reader, BufferedWriter writer) throws Py4JException, IOException { String returnCommand = null; Throwable exception = (Throwable) Protocol.getObject(reader.readLine(), this.gateway); // EOQ reader.readLine(); String stackTrace = Protocol.getThrowableAsString(exception); ReturnObject rObject = ReturnObject.getPrimitiveReturnObject(stackTrace); returnCommand = Protocol.getOutputCommand(rObject); logger.finest("Returning command: " + returnCommand); writer.write(returnCommand); writer.flush(); }
private String doImport(BufferedReader reader) throws IOException { String jvmId = reader.readLine(); String importString = StringUtil.unescape(reader.readLine()); reader.readLine(); JVMView view = (JVMView) Protocol.getObject(jvmId, gateway); if (importString.endsWith("*")) { view.addStarImport(importString); } else { view.addSingleImport(importString); } return Protocol.getOutputVoidCommand(); }
@SuppressWarnings("rawtypes") private String count_list(BufferedReader reader) throws IOException { List list1 = (List) gateway.getObject(reader.readLine()); Object objectToCount = Protocol.getObject(reader.readLine(), gateway); // Read end reader.readLine(); int count = Collections.frequency(list1, objectToCount); ReturnObject returnObject = gateway.getReturnObject(count); return Protocol.getOutputCommand(returnObject); }
private String removeImport(BufferedReader reader) throws IOException { String jvmId = reader.readLine(); String importString = StringUtil.unescape(reader.readLine()); reader.readLine(); JVMView view = (JVMView) Protocol.getObject(jvmId, gateway); boolean removed = false; if (importString.endsWith("*")) { removed = view.removeStarImport(importString); } else { removed = view.removeSingleImport(importString); } return Protocol.getOutputCommand(ReturnObject.getPrimitiveReturnObject(removed)); }
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); }
private String getUnknownMember(BufferedReader reader) throws IOException { String fqn = reader.readLine(); String jvmId = reader.readLine(); JVMView view = (JVMView) Protocol.getObject(jvmId, this.gateway); reader.readLine(); String returnCommand = null; try { // TODO APPEND CLASS NAME, because it might not be the fqn, but a // new one because of imports! String fullyQualifiedName = TypeUtil.forName(fqn, view).getName(); returnCommand = Protocol.getMemberOutputCommand(Protocol.CLASS_TYPE, fullyQualifiedName); } catch (ClassNotFoundException e) { returnCommand = Protocol.getMemberOutputCommand(Protocol.PACKAGE_TYPE); } catch (Exception e) { returnCommand = Protocol.getOutputErrorCommand(e); } return returnCommand; }
private String setField(BufferedReader reader) throws IOException { String targetObjectId = reader.readLine(); String fieldName = reader.readLine(); String value = reader.readLine(); reader.readLine(); // read EndOfCommand; Object valueObject = Protocol.getObject(value, this.gateway); Object object = gateway.getObject(targetObjectId); Field field = reflectionEngine.getField(object, fieldName); logger.finer("Setting field " + fieldName); String returnCommand = null; if (field == null) { returnCommand = Protocol.getNoSuchFieldOutputCommand(); } else { reflectionEngine.setFieldValue(object, field, valueObject); returnCommand = Protocol.getOutputVoidCommand(); } return returnCommand; }
private String getHelpObject(BufferedReader reader) throws IOException { String objectId = reader.readLine(); String pattern = (String) Protocol.getObject(reader.readLine(), this.gateway); String shortName = safeReadLine(reader, false); // EoC reader.readLine(); String returnCommand; try { Object obj = gateway.getObject(objectId); Py4JClass clazz = Py4JClass.buildClass(obj.getClass(), true); boolean isShortName = Protocol.getBoolean(shortName); String helpPage = HelpPageGenerator.getHelpPage(clazz, pattern, isShortName); ReturnObject rObject = gateway.getReturnObject(helpPage); returnCommand = Protocol.getOutputCommand(rObject); } catch (Exception e) { returnCommand = Protocol.getOutputErrorCommand(e); } return returnCommand; }
private String getHelpClass(BufferedReader reader) throws IOException { String className = reader.readLine(); String pattern = (String) Protocol.getObject(reader.readLine(), this.gateway); String shortName = safeReadLine(reader, false); // EoC reader.readLine(); String returnCommand; try { Py4JClass clazz = Py4JClass.buildClass(ReflectionUtil.classForName(className), true); boolean isShortName = Protocol.getBoolean(shortName); String helpPage = HelpPageGenerator.getHelpPage(clazz, pattern, isShortName); ReturnObject rObject = gateway.getReturnObject(helpPage); returnCommand = Protocol.getOutputCommand(rObject); } catch (Exception e) { returnCommand = Protocol.getOutputErrorCommand(e); } return returnCommand; }