Example: fieldGetter and fieldSetter
Below are a short example of fieldGetter and fieldSetter and a larger example showing the script context.
Short example
RemoteInvocation RemoteInvocation2 = (RemoteInvocation) JavaHTTP.readObject(RemoteInvocationBA0); RemoteInvocation.methodName="applyToSchool"; Student student=RemoteInvocation.arguments[0]; //grades is a private member of Student Map grades=lr2.fieldGetter(student,"grades"); grades.put("Math","95"); //Student class inherits the name field from Person. name field is a string lr2.fieldSetter(student,"super.name","Tom"); //Student class inherits the ID field from Person. ID field is an int lr2.fieldSetter(student,"super.ID","98764321"); RemoteInvocationResult RemoteInvocationResult_ArrayList2 = (RemoteInvocationResult) JavaHTTP.sendSerialized( RemoteInvocation2, 2, "ObjectsDeserializerDefaultImpl"0;
Sample script
import lrapi.lr2; import java.util.Arrays; import java.util.LinkedList; import java.util.List; public class Actions { public int init() throws Throwable { return 0; }//end of init public int action() throws Throwable { //part1 { ExObj1 exObj1 = new ExObj1(0); System.out.println(exObj1); lr2.fieldSetter(exObj1, "dbl", "1.23"); lr2.fieldSetter(exObj1, "integer", "1234"); List<String> lst = (List<String>) lr2.fieldGetter(exObj1, "list"); lst.add("four"); System.out.println(exObj1); } //part2 ExObj2 exObj2 = new ExObj2(); ExObj3 exObj3 = new ExObj3(); System.out.println(exObj3); lr2.fieldSetter(exObj3, "super.privateObj", "parent access!"); lr2.fieldSetter(exObj2, "objArray[1]", "array access"); lr2.fieldSetter(exObj2, "objArray[2].privateObj", "through array & access to private field"); lr2.fieldSetter(exObj2, "objArray[2].publicObj", new Object[20]); lr2.fieldSetter(exObj2, "objArray[2].publicObj[10]", new Object[10]); lr2.fieldSetter(exObj2, "objArray[2].publicObj[10][5]", new Object[5]); lr2.fieldSetter(exObj2, "objArray[2].publicObj[10][5][2]", exObj3); lr2.fieldSetter(exObj2, "objArray[2].publicObj[10][5][2].privateObj", "set from outside!"); lr2.fieldSetter(exObj2, "objArray[2].publicObj[10][5][2].super.privateObj", "super set from outside!"); System.out.println(exObj3); return 0; }//end of action public int end() throws Throwable { return 0; }//end of end class ExObj1 { private String str = "preset string"; private double dbl; private int integer; private List<String> list = new LinkedList<String>(); public ExObj1(int integer) { this.integer = integer; list.addAll(Arrays.asList("one", "two", "three")); } public String toString() { String ans = this.getClass().getName() + "\n" + "\tinteger:{\n\t" + integer + "\n\t}\n" + "\tdbl:{\n\t" + dbl + "\n\t}\n"; ans += "\tlist:{\n\t"; for (String str : list) { ans += str + "\n\t"; } ans += "}\n"; return ans; } } static class ExObj2 { public Object publicObj; private Object privateObj; public static Object[] objArray = new Object[]{"1", "12", new ExObj2()}; public String toString() { return this.getClass().getName() + "\n" + "\t{publicObj:\t" + publicObj + "\n\tprivateObj:" + privateObj + "\n\t}\n"; } } class ExObj3 extends ExObj2 { private Object privateObj; public Object publicObj; public String toString() { return this.getClass().getName() + "\n" + "\t{publicObj:" + publicObj + "\n\tprivateObj:" + privateObj + "\n\t" + super.toString() + "}\n"; } } }