Re: [aspectwerkz-user] Is there a way to get a pointcut name from within an around advic e?

Alexandre Vasseur <[email protected]>
Newsgroups gmane.comp.java.aspectwerkz.user
Message-ID <[email protected]>
Hi

Can you explain some more what seems wrong there / what you are
expecting. I don't really get the question.
Alex

On Apr 8, 2005 5:06 PM, Krasheninnikov, Konstantin
<[email protected]> wrote:
> Alex,
> 
> Thank you for the reply.
> 
> I could not find how to get to the pointcut name but I can specify it as
> parameter to an advice, e.g.
> 
>        <aspect  name="1" class="HelloWorldHijacker">
> 
>          <param name="pointcutName" value="greetMethod"/>
>                  <pointcut name="greetMethod" expression="execution(*
> testAOP.HelloWorld2.greet(..))"/>
>                  <advice name="yellifyier" type="around"
> bind-to="greetMethod"/>
> 
>        </aspect>
> 
>         <aspect name="2" class="HelloWorldHijacker">
> 
>             <param name="pointcutName" value="fooMethod"/>
>             <pointcut name="fooMethod" expression="execution(*
> testAOP.HelloWorld2.foo(..))"/>
>             <advice name="yellifyier" type="around" bind-to="fooMethod"/>
> 
>         </aspect>
> 
> Btw, just wanted to let you know that the following does not work for
> "fooMethod" (no match)
> 
>        <aspect class="HelloWorldHijacker">
> 
>            <pointcut name="greetMethod" expression="execution(*
> testAOP.HelloWorld2.greet(..))"/>
>            <advice name="yellifyier" type="around" bind-to="greetMethod"/>
> 
>          <pointcut name="fooMethod" expression="execution(*
> testAOP.HelloWorld2.foo(..))"/>
>          <advice name="yellifyier" type="around" bind-to="fooMethod"/>
> 
>        </aspect>
> 
> (See the program output below) Is it a bug or a feature?
> 
> -krosh-
> 
> ----------------------
> 
> AspectWerkz - INFO - Pre-processor
> org.codehaus.aspectwerkz.transform.AspectWerkzPreProcessor loaded and
> initialized
> sun.misc.Launcher$AppClassLoader@67ac19@6794265:testAOP.HelloWorld2[main]
> ******************************************************************
> * ClassLoader = sun.misc.Launcher$ExtClassLoader@53ba3d@5487165
> * SystemID = virtual_5487165, 1 aspects.
> ******************************************************************
> ******************************************************************
> * ClassLoader = sun.misc.Launcher$AppClassLoader@67ac19@6794265
> * SystemID = AspectWerkzExample, 2 aspects.
> * SystemID = virtual_6794265, 1 aspects.
> * file:/home/krashk/aspectwerkz/projects/test01/aop.xml
> ******************************************************************
> [TRACE - earlymatch: greetMethod @
> AspectWerkzExample/testAOP.HelloWorldHijacker/yellifyier
> [       for          testAOP.HelloWorld2
> [       within       testAOP.HelloWorld2
> [       type         execution
> [TRACE - earlymatch: greetMethod @
> AspectWerkzExample/testAOP.HelloWorldHijacker/yellifyier
> [       for          testAOP.HelloWorld2
> [       within       testAOP.HelloWorld2
> [       type         within
> [TRACE - earlymatch: greetMethod @
> AspectWerkzExample/testAOP.HelloWorldHijacker/yellifyier
> [       for          testAOP.HelloWorld2
> [       within       testAOP.HelloWorld2
> [       type         within
> [TRACE - earlymatch: greetMethod @
> AspectWerkzExample/testAOP.HelloWorldHijacker/yellifyier
> [       for          testAOP.HelloWorld2
> [       within       testAOP.HelloWorld2
> [       type         within
> [TRACE - match: greetMethod @
> AspectWerkzExample/testAOP.HelloWorldHijacker/yellifyier
> [       for     testAOP.HelloWorld2.greet()Ljava/lang/String;
> [       within  testAOP.HelloWorld2.greet()Ljava/lang/String;
> [       type    execution
> sun.misc.Launcher$AppClassLoader@67ac19@6794265:testAOP.HelloWorldHijacker[m
> ain]
> HelloWorldHijacker is constructed!
> RTTI name: greet Signature: greet
> Method name: greet
> Return type: java.lang.String
> --> testAOP.HelloWorld2::greet
> <-- testAOP.HelloWorld2::greet
> <yell>Hello World!</yell>
> Foo
> 
> -----Original Message-----
> From: Alexandre Vasseur [mailto:[email protected]]
> Sent: Friday, April 08, 2005 9:41 AM
> To: [email protected]
> Subject: Re: [aspectwerkz-user] Is there a way to get a pointcut name from
> within an around advic e?
> 
> Hi
> 
> You may have an aspect constructor that accepts
> org.codehaus.aspectwerkz.AspectContext as single parameter.
> From that instance you can access the AspectDefinition that should contain
> what you need.
> 
> Another option would be to use Annotation defined aspect and access the
> annotation using the AspectWerkz Annotations.* API (works on Java
> 1.4 as well).
> 
> Last, another option would be to use
> SystemDefinitionContainer.getDefinition(uuid, ClassLoader) that should
> contain the AspectDefinitions of the deployed aspects.
> 
> Alex
> 
> On Apr 8, 2005 3:31 PM, Krasheninnikov, Konstantin
> <[email protected]> wrote:
> >
> >
> > Hello,
> >
> > Given
> >
> > ...
> >        <aspect class="HelloWorldHijacker">
> >             <pointcut name="greetMethod" expression="execution(*
> > testAOP.HelloWorld2.greet(..))"/>
> >             <advice name="yellifyier" type="around"
> bind-to="greetMethod"/>
> >        </aspect>
> >
> > ...and
> >
> > public class HelloWorldHijacker {
> >     public Object yellifyier( JoinPoint joinPoint )   {
> >         String ret = null;
> >         try  {
> >
> >             // How to get to the pointcut name (which is
> > "greetMethod") here ??
> >
> >             Object greeting = joinPoint.proceed();
> >             ret = "<yell>" + greeting + "</yell>";
> >         }
> >         catch( Throwable e ) {
> >             e.printStackTrace();
> >         }
> >         return ret;
> >     }
> > }
> >
> > Q: Is there a way to get the pointcut name from within the around advice?
> >
> > Thanks in advance,
> >
> > -krosh-
> >
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.