3.1.1 thisJoinPoint.variables (get table of local variables and class fileds)
Example of Advice (debug) Code
Object[][] vs = thisJoinPoint.variables;
for(int i=0; i<vs.length; i++){
System.out.println(vs[i][0]+"="+vs[i][1]);
}
(1)
thisJoinPoint.variables -- java.lang.Object[][] type
Express a table of variables existing where debug code inserted
thisJoinPoint.variables[i][0] -- String type name of a variable
thisJoinPoint.variables[i][1] -- Object type value of a variable
thisJoinPoint.variables[i][2] -- String type declare statement of variable
Example:
thisJoinPoint.variables[0][0] = "x"
thisJoinPoint.variables[0][1] = x
thisJoinPoint.variables[0][2] = "local int"
thisJoinPoint.variables[1][0] = "MyClass.i"
thisJoinPoint.variables[1][1] = i
thisJoinPoint.variables[1][2] = "static Integer"
thisJoinPoint.variables[2][0] = "this"
thisJoinPoint.variables[2][1] = this
thisJoinPoint.variables[2][2] = "local MyClass"
thisJoinPoint.variables[3][0] = "this.y"
thisJoinPoint.variables[3][1] = this.y
thisJoinPoint.variables[3][2] = "public final long"
(2)
$writeVariables()
reflect from thisJoinPoint.variables to real variables
Example:
System.out.println(x);//print 100
thisJoinPoint.variables[0][1] = new Integer(9999);
$writeVariables();
System.out.println(x);//print 9909
(3)
$readVariables()
reflect from real variables to thisJoinPoint.variables
Example:
System.out.println(thisJoinPoint.variables[0][1]);//print 100
x = 9999;
$readVariables();
System.out.println(thisJoinPoint.variables[0][1]);//print 9999
