[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Need advice on how to craft a pointcut ... a real challenge :)
|
Unfortunately, this is not possible in AspectJ.
On Thu, Feb 19, 2009 at 8:54 AM, Pavlovich, Peter
<Peter.Pavlovich@xxxxxxxxxx> wrote:
>
>
> A) The process() method must be defined on this class (and each
> subclass) individually (cannot rely on superclass to provide
> implementation).
Can't look for this. You can't match on the lack of a joinpoint.
>
> B) Every public attribute (defined directly on the class in question --
> the one implementing the interface) as well as every private attribute with
> a public or protected accessor method (again, defined directly on the class
> implementing the interface) must satisfy one of the following:
>
> i) The attribute is marked with the "OkToIgnore" annotation.
>
> ii) The attribute (if public) or the public getter must be
> called/accessed within the scope of the "process()" method defined on this
> class.
>
>
This is not possible either. I originally wrote the following,
thinking it might work, but it will fail if there is any call to a
shouldn't ignore method outside of the process method.
pointcut shouldntIgnore() : within(MyProcessor+) && call(
(!@OkToIgnore) (public || protected) *.*(..));
pointcut inProcess() : withincode(public void MyProcessor+.process())
&& call(* *.*(..));
declare error : shouldntIgnore() && !inProcess() : "Fail!";
Again, the problem here is that you can't discover the lack of a joinpoint.
>
> If one of (i) or (ii) is not satisfied, then I want to fail compilation or
> log a message or some similar action to be implemented in the advice. The
> action is not that important at this point – my challenge is with defining
> the pointcut.
>
>
>
> Note that the same rules must also apply to subclasses of any class
> implementing the interface -- but these subclasses must define the process()
> method themselves and must "process" their own attributes (the ones defined
> directly on themselves) within that process method.
>
>
>
> Is this even possible? If so, any help on how to define the best pointcut
> for this scenario would be greatly appreciated! I am open to any reasonable
> refactoring that might need to be done to enable this sort of checking as
> well if that would help. I'd prefer not to have to refactor or add extra
> code to the classes if at all possible though.
>
>
>
> I look forward to your help with this challenge!!! Thanks in advance!
>
>
>
> Peter
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>