Skip to main content

[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



Back to the top