Unfortunately, this is not possible in AspectJ.
On Thu, Feb 19, 2009 at 8:54 AM, Pavlovich, Peter <[email protected]> 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 > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > > _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
