[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [aspectj-users] More precedence
|
Thanks for answering Erik, I understand the answers to all the questions I
had.
> We probably should add "using a non-aspect type without a +
> in a dominates clause" to our Xlint warnings.
That would be wonderful. Only you might want to change it to:
"using a non-*concrete*-aspect type without a + in a dominates clause"
(since the behavior is the same in either case).
Cheers,
Nick
--- hilsdale@xxxxxxxx wrote:
> Nicholas,
>
> Thanks again for the test case [discussed on the dev list].
> As for your "by the way" question:
>
> In general, if you're dealing with a hierarchy of aspects,
> you'll want to use the + operator. So in your case just
> saying
>
> declare dominates: Super, B;
>
> won't do anything if Super is not a concrete aspect. But
> using
>
> declare dominates: Super+, B;
>
> will be fine.
>
> No error will be shown for putting a non-aspect type into
> the list, specifically to allow using marker interfaces to
> pick out aspects for the list.
>
> interface ReallyImportant {}
>
> aspect ReallyImportantCoordination {
> declare dominates: ReallyImportant+, *;
> }
>
> aspect Roles {
> declare parents:
> Security implements ReallyImportant;
> }
>
> We probably should add "using a non-aspect type without a +
> in a dominates clause" to our Xlint warnings.
>
> -erik
>
> -----Original Message-----
> From: Lesiecki Nicholas [mailto:ndlesiecki@xxxxxxxxx]
> Sent: Tuesday, 31 December, 2002 11:42 am
> Subject: RE: [aspectj-users] More precedence
>
>
> I can try to turn the example into a precedence test
> case. It may take a few days as I'm under a deadline.
>
> By the way, does it have any meaning to put:
>
> aspect Dominates {
> declare dominates : Super, B; // No +
> }
>
> The changes page refered to the fact that only concrete
> aspects are affected by precedence. Does this mean that
> Super (no plus) is illegal or meaningless? Or does it mean
> the same as Super+?
>
> Also, what should happen if you put a non-aspect type into
> the list?
>
> Can I use a marker interface to pick out aspects for the
> list?
>
>
> Cheers,
> Nick
>
> -----Original Message-----
> --- Jim.Hugunin@xxxxxxxx wrote:
>
> This is a bug as Wes says. It's fixed in the current
> version of the compiler in cvs. It was a simple matter of
> using the wrong API for type pattern matching in the
> implementation of declare dominates.
>
> The test suite would benefit from a more extensive test than
> we currently have for this precedence case. If Nick could
> turn his example into something that would throw an
> exception if the precedence was wrong that would be good.
>
> -Jim
>
> -----Original Message-----
> From: isberg@xxxxxxxx [mailto:isberg@xxxxxxxx]
> Sent: Tuesday, December 31, 2002 9:36 AM
> Subject: RE: [aspectj-users] More precedence
>
> It looks to me like
>
> declare dominates : Super+, ...
>
> is just broken now. Anyone care to submit a bug?
>
> Wes
> ------------- DominatesAdvice.java
>
> public class DominatesAdvice {
> public static void main (String[] args) {
> new C().run();
> }
> pointcut run() : target(C) && call(void run());
> static void log(String s) {
> System.out.println(""+s);
> }
> }
>
> class C { void run() {}}
> class Super {}
> aspect A extends Super {
> before () : DominatesAdvice.run() {
> DominatesAdvice.log("A");
> }
> }
> aspect B {
> before () : DominatesAdvice.run() {
> DominatesAdvice.log("B");
> }
>
> aspect Dominates {
> declare dominates : Super+, B; // BUG: produces B, A
> //declare dominates : A, B; // ok: produces A, B
> }
>
>
> -----Original Message-----
> From: Lesiecki Nicholas [mailto:ndlesiecki@xxxxxxxxx]
> Sent: Tuesday, December 31, 2002 8:36 AM
> Subject: RE: [aspectj-users] More precedence
>
>
> Hello All,
>
> Sorry, my message got truncated. Unfortunately I've left the
> sample code at home.
>
> The upshot is that for:
>
> declare dominates : Security+, *;
>
> the precedence appears to be:
>
> Tracing
> Notification
> MoreSecurity
> CustomSecurity
> Security (abstract)
> Security (a second time)
> (JoinPoint)
>
> i.e. Security LAST.
>
> For:
>
> declare dominates : *Security*, *;
>
> The order is:
>
> MoreSecurity
> CustomSecurity
> Security (abstract)
> Security (a second time)
> Tracing
> Notification
> (JoinPoint)
>
> i.e. Security FIRST.
>
> Why should Security+ and *Security* produce different
> results? They both (should) select the same set of Concrete
> aspects (CustomSecurity and MoreSecurity). Am I missing
> something?
>
> BTW, the sample code is ridiculously simple. Each aspect has
> a single piece of before advice that prints what it's doing
> to the console. All of the advice affects call(void
> doSomething()). The only doSomething() method in the
> compilation unit appears in SomeObject.
>
> SomeObject's main:
> main(){
> new SomeObject().doSomething();
> }
>
> Cheers,
> nick
>
>
> -----Original Message-----
> --- isberg@xxxxxxxx wrote:
>
> Did the mailing list clip this question?
> Did you decide against it, after accidental send?
>
> (btw, thanks for the bugs)
>
> Wes
>
> -----Original Message-----
> From: Lesiecki Nicholas [mailto:
> Sent: Monday, December 30, 2002 9:16 PM
>
=== message truncated ===
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com