How to access 'this' [message #45111] |
Mon, 20 December 2004 19:22 |
Eclipse User |
|
|
|
Originally posted by: sekar.gopinathan.fhlbny.com
Hi
I am trying to create an aspect for auditing within our application.
Usually our application has a service object and the service object passes
itself to the auditing service object. So in effect our service object
code would look like
serviceA{
....
execute(...){
//Do the task
auditService.execute(this)
}
Now I want to put the 'auditService.execute(this) into an aspect.
Inside my aspect can I write something like?
public aspect DoAudit {
pointcut doAudit():execution(* AbstractBusinessService.execute);
after():doAudit(){
auditStep.execute(thisJoinPoint.getThis());
}
}
When I was reading the API spec, I read that for perfomance reasons
getThis should not be used. Is my understanding correct? Or is there
any other way to do the same task. I am not sure if I missed something
from the manual. I appreciate if someone can point me in the right
direction.
Thanks
|
|
|
Re: How to access 'this' [message #45145 is a reply to message #45111] |
Mon, 20 December 2004 22:50 |
Eclipse User |
|
|
|
Originally posted by: newsserver_mails.bodden.de
On Mon, 20 Dec 2004 19:22:51 +0000 (UTC), Sekar Gopinathan wrote:
> public aspect DoAudit {
>
> pointcut doAudit():execution(* AbstractBusinessService.execute);
>
> after():doAudit(){
> auditStep.execute(thisJoinPoint.getThis());
> }
> }
>
> When I was reading the API spec, I read that for perfomance reasons
> getThis should not be used. Is my understanding correct? Or is there
> any other way to do the same task. I am not sure if I missed something
> from the manual. I appreciate if someone can point me in the right
> direction.
Indeed. correct it to:
public aspect DoAudit {
pointcut doAudit(serviceA s):
execution(* AbstractBusinessService.execute(serviceA)) && this(s);
after(serviceA sa):doAudit(sa){
auditStep.execute(sa);
}
}
Then in the pointcut, "this" is bound to the formal s. In the piece of
advice, "sa" is bound to that very instance.
Eric
--
Eric Bodden, ICQ: 12656220, http://www.bodden.de, PGP: BB465582
Active Desktop Wallpaper Changer: That's what it is...
http://bodden.de/projects/wpchanger/
|
|
|
Re: How to access 'this' [message #45176 is a reply to message #45145] |
Tue, 21 December 2004 00:28 |
Eclipse User |
|
|
|
Originally posted by: sekar.gopinathan.fhlbny.com
Eric,
It worked.
AOP requries one to think very differently. I am getting there.
Thanks you.
Eric Bodden wrote:
> On Mon, 20 Dec 2004 19:22:51 +0000 (UTC), Sekar Gopinathan wrote:
>> public aspect DoAudit {
>>
>> pointcut doAudit():execution(* AbstractBusinessService.execute);
>>
>> after():doAudit(){
>> auditStep.execute(thisJoinPoint.getThis());
>> }
>> }
>>
>> When I was reading the API spec, I read that for perfomance reasons
>> getThis should not be used. Is my understanding correct? Or is there
>> any other way to do the same task. I am not sure if I missed something
>> from the manual. I appreciate if someone can point me in the right
>> direction.
> Indeed. correct it to:
> public aspect DoAudit {
> pointcut doAudit(serviceA s):
> execution(* AbstractBusinessService.execute(serviceA)) && this(s);
> after(serviceA sa):doAudit(sa){
> auditStep.execute(sa);
> }
> }
> Then in the pointcut, "this" is bound to the formal s. In the piece of
> advice, "sa" is bound to that very instance.
> Eric
|
|
|
|
Re: How to access 'this' [message #585378 is a reply to message #45145] |
Tue, 21 December 2004 00:28 |
Eclipse User |
|
|
|
Originally posted by: sekar.gopinathan.fhlbny.com
Eric,
It worked.
AOP requries one to think very differently. I am getting there.
Thanks you.
Eric Bodden wrote:
> On Mon, 20 Dec 2004 19:22:51 +0000 (UTC), Sekar Gopinathan wrote:
>> public aspect DoAudit {
>>
>> pointcut doAudit():execution(* AbstractBusinessService.execute);
>>
>> after():doAudit(){
>> auditStep.execute(thisJoinPoint.getThis());
>> }
>> }
>>
>> When I was reading the API spec, I read that for perfomance reasons
>> getThis should not be used. Is my understanding correct? Or is there
>> any other way to do the same task. I am not sure if I missed something
>> from the manual. I appreciate if someone can point me in the right
>> direction.
> Indeed. correct it to:
> public aspect DoAudit {
> pointcut doAudit(serviceA s):
> execution(* AbstractBusinessService.execute(serviceA)) && this(s);
> after(serviceA sa):doAudit(sa){
> auditStep.execute(sa);
> }
> }
> Then in the pointcut, "this" is bound to the formal s. In the piece of
> advice, "sa" is bound to that very instance.
> Eric
|
|
|
Powered by
FUDForum. Page generated in 0.02800 seconds