[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Join Point Static Part

Thank you both. I was trying to access the NAMES and MethodSignature
works for me.

On Fri, May 28, 2010 at 8:21 AM, Simone Gianni <simoneg@xxxxxxxxxx> wrote:
> Hi Bhaskar and Mohan,
> I think Bhaskar is trying to access method NAMES, not actual values. You can
> access method names in AspectJ, using MethodSignature.getParameterNames ..
> for example:
>
> void around() : test(){
>   Signature s = thisJoinPointStaticPart.getSignature();
>   // Warning, this means you are weaving a method, otherwise there will be
> of another subclass of Signature
>   MethodSignature m = (MethodSignature)s;
>   String[] names = m.getParameterName();
>   Object[] values = thisJoinPoint.getArgs();
>   for (int i = 0; i < names.length; i++) {
>     System.out.println(names[i] + " : " + values[i]);
>   }
>   proceed();
> }
>
> Names are present only if target code (the class you are weaving) has been
> compiled with debug symbols, which is true for 99% of java code actually
> available, but still could happen that you are weaving into a third party
> library which has been compiled without debug symbols.
>
> Simone
>
> 2010/5/28 Mohan Radhakrishnan <radhakrishnan.mohan@xxxxxxxxx>
>>
>> Hi Bhaskar,
>>
>> I am using a simple around advice. The argument is printed. Is this
>> simiilar to what you are looking for ?
>>
>>        pointcut test() : call( * com.test.TestClass.test1(..) );
>>
>>        void around() : test(){
>>
>>                System.out.println( thisJoinPoint.getArgs()[ 0 ] );
>>
>>                proceed();
>>        }
>>
>>
>>        public void test1( int i){
>>        }
>>
>> Thanks,
>> Mohan
>>
>> On Thu, May 27, 2010 at 3:35 AM, Bhaskar Maddala <maddalab@xxxxxxxxx>
>> wrote:
>> > Hello,
>> >
>> >    I am trying to write a logging aspect. Something that logs method
>> > arguments when the method executed. I was looking up the reflection
>> > apis for aspectj and did not find anything in either StaticPart,
>> > ProceedingJoinPoint or Signature that would give me the method
>> > arguments names.
>> >
>> > As as example
>> >    @Pointcut("execution(@Unit * *(..)) && @annotation(u) &&
>> > @within(ct) && this(cinstance)")
>> >    public void unit(Auditable cinstance, Container ct, Unit u) {
>> >    }
>> >
>> >    @Around(unit(ct, u))
>> >    public void do(ProceedingJoinPoint pjp, Auditable cinstance,
>> > Container ct, Unit u){
>> >      pjp.getMethodArgNames(); //???
>> >    }
>> >
>> >  Any ideas on where I can get the method argument names?
>> >
>> > Thanks
>> > Bhaskar
>> > _______________________________________________
>> > aspectj-users mailing list
>> > aspectj-users@xxxxxxxxxxx
>> > https://dev.eclipse.org/mailman/listinfo/aspectj-users
>> >
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>