[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[aspectj-users] around aspects on fields
|
Hi,
I was experimenting with aspectJ - couldnt get it to run on Eclipse 2.1,
so got the older 2.0. I was trying this :
aspect A {
pointcut getVar(Object whatever): get(* Person.name) &&
target(whatever);
pointcut getVarInt(int whatever): get(* Person.age) && target(whatever);
int around(int whatever): getVarInt(whatever) {
System.out.println("in around(int)");
return -1;
}
Object around(Object whatever): getVar(whatever) {
System.out.println("in around");
return "HELLO";
}
}
where the Person class is :
public class Person {
public int age;
public String name;
}
Here is a sample testcase which I started with, in order to "exercise" the
aspects :
public class VarAspectTest extends TestCase {
public VarAspectTest(String arg0) {
super(arg0);
}
public void testVarGet() {
System.out.println("Accessing Person.name..." + new Person().name);
System.out.println("Accessing Person.age..." + new Person().age);
}
}
The result seems weird- although I am able to get "HELLO" as the name, the
age shows up as 0 - i.e. the aspect on the int member wasn't triggered.
Next, I tried :
pointcut getVar(Object whatever): get(* Person.String) &&
target(whatever);
pointcut getVarInt(int whatever): get(* Person.int) && target(whatever);
This too had the same results. I'm actually looking for a way to process all
string and int members. If I do this :
pointcut getVar(Object whatever): get(* Person.*) && target(whatever);
I am able to trap everything, but the primitive types give a class-cast
exception. So, another question is - is it possible to handle primitive
types in aspectJ ?
I am new to aspects, so I might probably be doing something wrong.
Thanks in advance for any suggestions.
Regards,
Somik