Andy, Thanks for the response. -S-
On Mon, Jan 5, 2009 at 9:28 PM, Andy Clement <[email protected]>wrote: > My first observation would be to change it so that you aren't advising your > advice. Within the advice you access 'e' and that matches "get(* > TestClass.e)" at that point this() is the aspect - and so the > classcastexceptions occur because the cast to TestClass fails and that makes > the output confusing. If I add a bit to the pointcut "&& > !within(NullAspect)" and run it (I'm only using the first piece of advice > here) I get: > > C:\aspectj163>java TestClass > O is: ev...@9304b1 > It is NOT null > O is: null > It is null > O is: ev...@190d11 > It is NOT null > > Is that the output you want? If it isn't - please say what you are > expecting. > > cheers, > Andy. > > 2009/1/4 100ji <[email protected]> > >> Hi all, >> >> In my tracing application, I only want to trace a field when it's value is >> non-null. But for some reason when I compare the value of the field in the >> advice, it doesn't seem to work. I understand that null is not an object, >> but I can't seem to find any documentation that says that null should be >> treated specially. Can anyone point out what I am missing? The code below >> illustrates what I am doing: >> >> --------------- >> public class TestClass { >> >> Event e; >> >> TestClass() { >> e = new Event(); >> } >> >> public void setNull() { >> e = null; >> } >> >> public void createE() { >> e = new Event(); >> } >> >> public static void main(String[] args) { >> TestClass t = new TestClass(); >> >> t.isNull(); >> t.setNull(); >> t.isNull(); >> t.createE(); >> t.isNull(); >> } >> >> public void isNull() { >> if (e == null) { >> System.out.println("It is null"); >> } else { >> System.out.println("It is NOT null"); >> } >> } >> } >> >> ---------------------- >> >> >> public class Event { >> public Integer number; >> } >> >> >> -------------------- >> >> public privileged aspect NullAspect { >> pointcut p1(Object o) : this(o) && get(* TestClass.e); >> >> before(Object o) : p1(o) { >> try { >> System.out.println("O is: " + ((TestClass)o).e); >> } catch (NullPointerException ne){ >> System.out.println(ne); >> System.out.println("o is null"); >> } catch (Exception e) { >> System.out.println(e); >> System.out.println("o is not null"); >> } >> } >> >> // I have also tried: >> >> before(Object o) : p1(o) { >> if (o != null) { >> System.out.println("o is not null"); >> } else { >> System.out.println("o is null"); >> } >> } >> ---------------------- >> >> TIA, >> -S- >> >> >> _______________________________________________ >> aspectj-users mailing list >> [email protected] >> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> >> > > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > >
_______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
