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