Re: Re: [aspectwerkz-user] proposed syntax: within construct, feedback wanted
"Alex" <alex-he/e8N7AIe/[email protected]>
| Newsgroups | gmane.comp.java.aspectwerkz.devel |
|---|---|
| Message-ID | <004a01c3d6e8$8b1b6150$6401a8c0@maison> |
Craig the && will off course be maintained as well as || and ! and , or , not are just synonyms as well as AND OR NOT I was arguing that "and" (&& / and / AND) is not suitable to express a "within" concept. It is better to use "within / WITHIN" since the new implementation (in cvs head) allows this. [see http://blogs.codehaus.org/people/avasseur ] Alex ----- Original Message ----- From: "Craig Fleming" <[email protected]> To: <aspectwerkz-devel-81qHHgoATdGxIXFVlbCvtR2eb7JE58TQ@public.gmane.org> Sent: Friday, January 09, 2004 9:46 AM Subject: [aspectwerkz-devel] Re: [aspectwerkz-user] proposed syntax: within construct, feedback wanted > What's wrong with the && operator? What's better about using 'and' and > 'or'? Personally, from years of programming I find &&, || more > readable. > > Also there is precedence for having a Pointcut that is not actually a > pointcut. AspectJ uses args(), target(), this() in multiple contexts. > Obviously this isn't to be taken as "Do it this way because AspectJ is > always right." but I figured I'd point it out. :) > > Craig > > On Fri, 9 Jan 2004 00:26:52 -0800 (PST), Jonas "Bonér" > <jonas_boner-/[email protected]> wrote: > > >Redirecting to devel ML. > > > >This is a great idea, Alex. I like it a lot. > > > >Using this approach we could even write it like this: > > > > /** > > * @Execution int *..*.get*() within foo.bar..* and not within foo.bee..* > > */ > > Pointcut withinFooBar; > > > >E.g. explicitly. > > > >Good, let's settle for 'Filter' instead of 'Pointcut'. > >I prefer the 'not within' instead of the 'outside'. > >I do believe that it should be a weave time filtering. > > > >Care to put your ideas in JIRA? > > > >/Jonas > > > >--- Alex <alex-he/e8N7AIe/[email protected]> wrote: > >> Why use the && operator ? > >> My new jjtree based impl should allow to easily add the "within" operator > >> (and even "outside" if someone needs it or may be better "not within X" = > >> "within( not (X) )". > >> > >> Within will support nested And and nested Or (and not And / not Or) to > >> represent union and intersection [see sample below]) > >> Note also that we might have to solve: > >> (pc within X) or (pc2 within Y) > >> differently from > >> pc within X or within Y = pc within (X or Y) > >> > >> +1 for using a Filter type field in the aspect, so that we avoid confusion > >> with a sort of Class pointcut. But... no way to reuse it as a Class pointcut > >> then... > >> > >> Question: should the within / outside construct be taken into account at > >> weave time or at joinpoint evaluation time ? > >> Its more natural to have it at weave time, to fit a finer grained > >> "transformation scope include / exclude", but it might add more dynamic > >> feature at evaluation time (for the cost of an overhead in out of scoped > >> classes). To be in sync with AJ it seems to be weave time. > >> > >> Alex > >> > >> [taken from Jonas' jira sample ] > >> ... > >> > >> /** > >> * @Within foo.bar.* > >> */ > >> Filter withinFooBar; > >> > >> /** > >> * @Within foo.bar.bee.* > >> */ > >> Filter withinFooBarBee; > >> > >> /** @Filter special.* */ > >> Filter x; > >> > >> And then use it to filter on class level in the other pointcut expressions: > >> > >> /** > >> * @Execution int *..*.get*() within (withinFooBar && ! withinFooBarBee) > >> and not within (x) > >> */ > >> Pointcut withinFooBar; > >> > >> > >> ----- Original Message ----- > >> From: "Jonas Bonér" <jonas_boner-/[email protected]> > >> To: "Craig Fleming" <[email protected]>; > >> <aspectwerkz-user-81qHHgoATdGxIXFVlbCvtR2eb7JE58TQ@public.gmane.org> > >> Sent: Thursday, January 08, 2004 6:36 PM > >> Subject: [aspectwerkz-user] proposed syntax: within construct, feedback > >> wanted > >> > >> > >> > Hi guys. > >> > > >> > I have sketched some on how to support the within construct. Feedback > >> please. > >> > > >> > http://jira.codehaus.org/secure/ViewIssue.jspa?key=AW-119 > >> > > >> > /Jonas > >> > > >> > --- Craig Fleming <[email protected]> wrote: > >> > > On Thu, 8 Jan 2004 00:24:03 -0800 (PST), Jonas "Bonér" > >> > > <jonas_boner-/[email protected]> wrote: > >> > > > >> > > > >> > > >> 1. I'm trying to use the subtype wildcard on return types. > >> > > >> @Execution Object *..*.*(..) - works, but isn't what I want > >> > > >> @Execution Object+ *..*.*(..) - doesn't pick out anything > >> > > >This is a current limitation in AW. I understand that there is a need > >> for this and will add it > >> > > as > >> > > >soon as I get the time. > >> > > > >> > > Cool. A not so efficient way of getting around it is to use > >> > > @Execution * *..*.*(..) > >> > > And then filter by MethodJoinPoint.getReturnType().isPrimitive(). > >> > > Naturally it would be more efficient if this could be filtered out > >> > > sooner than inside the advice itself, but this works nicely. > >> > > > >> > > >You can add within's that is global to the aspect system usint > >> 'transformation scopes': > >> > > > >> >http://aspectwerkz.codehaus.org/definition_issues.html#Transformation%20sco > >> pes > >> > > > > >> > > >If there is a high need for it I guess that it would not be a problem > >> to make this feature more > >> > > >fine-grained. > >> > > > >> > > May be another feature to add to that ever-extending list of yours, > >> > > but in my particular case the transformation scopes are exactly what I > >> > > needed. > >> > > > >> > > >It is not possible to advise advices (or aspects). This is a design > >> choice and could of course > >> > > be > >> > > >discussed. But my belief is that it adds more problems than it solves. > >> > > > > >> > > >cflow support was just recently committed to the CVS (couple of days > >> ago), it is not supported > >> > > in > >> > > >the RC. If you need cflow support before the final 0.9 is released you > >> have to use CVS HEAD. > >> > > > >> > > I was just wondering if I needed to filter out my aspect code, as in > >> > > AspectJ if you don't, you end up with bigger runtime than you actually > >> > > wanted. I am a believer in making the system as flexible as possible, > >> > > and then letting the programmer make his or her own decisions. > >> > > Naturally I'm a Java programmer, and not a C++ programmer (more > >> > > flexible, but so much more ...ugly), so I don't always stick to this, > >> > > but I can't count the number of personal projects where I've been > >> > > thwarted by a final class or private variable. ;) > >> > > > >> > > Don't add this one to your list, I'm not making an argument for it. :) > >> > > > >> > > Thanks, > >> > > Craig > >> > > > >> > > _______________________________________________ > >> > > aspectwerkz-user mailing list > >> > > aspectwerkz-user-81qHHgoATdGxIXFVlbCvtR2eb7JE58TQ@public.gmane.org > >> > > http://lists.codehaus.org/mailman/listinfo/aspectwerkz-user > >> > > >> > > >> > ===== > >> > Jonas > >> > http://blogs.codehaus.org/people/jboner/ > >> > > >> > __________________________________ > >> > Do you Yahoo!? > >> > Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes > >> > http://hotjobs.sweepstakes.yahoo.com/signingbonus > >> > _______________________________________________ > >> > aspectwerkz-user mailing list > >> > aspectwerkz-user-81qHHgoATdGxIXFVlbCvtR2eb7JE58TQ@public.gmane.org > >> > http://lists.codehaus.org/mailman/listinfo/aspectwerkz-user > >> > > >> > > >> > >> _______________________________________________ > >> aspectwerkz-user mailing list > >> aspectwerkz-user-81qHHgoATdGxIXFVlbCvtR2eb7JE58TQ@public.gmane.org > >> http://lists.codehaus.org/mailman/listinfo/aspectwerkz-user > > > > > >===== > >Jonas > >http://blogs.codehaus.org/people/jboner/ > > > >__________________________________ > >Do you Yahoo!? > >Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes > >http://hotjobs.sweepstakes.yahoo.com/signingbonus > > > _______________________________________________ > aspectwerkz-devel mailing list > aspectwerkz-devel-81qHHgoATdGxIXFVlbCvtR2eb7JE58TQ@public.gmane.org > http://lists.codehaus.org/mailman/listinfo/aspectwerkz-devel > >