Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] precedence inside a single aspect

Hi,

Advice ordering rules are discussed here (end of the page):
http://www.eclipse.org/aspectj/doc/released/progguide/semantics-advice.html
(declare precedence can't be used for ordering advice within an aspect)

This ordering will compile:
aspect Precedence {
    pointcut p1() : execution(String Preced.foo());
    pointcut p2() : execution(String Preced.foo());

    String around () : p1(){
        System.err.println("around in");
        proceed();
        System.err.println("around out");
        return "around";
    }

    before () : p1(){
        System.err.println("before");
    }
    after () : p2(){
        System.err.println("after");
    }
    //declare precedence: Precedence.p1, Precedence.p2;
}


cheers
Andy

On 11 February 2012 13:08, Dénes Németh <mr.nemeth.denes@xxxxxxxxx> wrote:
> Hi
>
> The compiler reports that I have circular advice precedence.
> If either before/after/around is commented out it compiles.
>
> If we move after and p2 to a different aspect and define
> precedence between the two aspects it works.
>
> Is it possible to get this working without moving p2 to a different aspect.
>
> best wishes,
> D
>
> Again this is just an example to try out how aspectj works, so please do not
> try to make sense from it.
>
> package info.caforge.aspectj.model.advice;
> public class Preced {
>     public String foo(){
>         System.err.println("foo");
>         return "foor";
>     }
> }
>
> package info.caforge.aspectj.aspects;
> import info.caforge.aspectj.model.advice.Preced;
> public aspect Precedence {
>     pointcut p1() : execution(String Preced.foo());
>     pointcut p2() : execution(String Preced.foo());
>
>     before () : p1(){
>         System.err.println("before");
>     }
>     after () : p2(){
>         System.err.println("after");
>     }
>     String around () : p1(){
>         System.err.println("around in");
>         proceed();
>         System.err.println("around out");
>         return "around";
>     }
>
>     //declare precedence: Precedence.p1, Precedence.p2;
> }
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top