Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [aspectj-users] Removing functionality with AspectJ?

Title: Message
Hi Rob,
 
Try "within" to restrict your calls to within the particular class. I am not 100% sure how this will work with an inner class, but try this :
 
pointcut callAction( ) : call(* jade.core.behaviours.Behaviour.action ())

&&

within(apoptotic.bookTrading.BookSellerAgent.CallForOfferServer);
 
HTH,
 
Fintan 
-----Original Message-----
From: aspectj-users-bounces@xxxxxxxxxxx [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Rob Austin
Sent: 06 November 2007 09:39
To: aspectj-users@xxxxxxxxxxx
Subject: Re: [aspectj-users] Removing functionality with AspectJ?

Thanks very much.
 
Actually, my description of my problem was a bit on the rubbish side. What I should have said is that CallForOfferServer  overrides the action() method in jade.core.behaviours.Behaviour, and that I do want to advise "when method action() is called from within
CallForOfferServer"
 
So sorry about that. Anyway, it seems that this works:
 

pointcut callAction( ) : call(* jade.core.behaviours.Behaviour.action ())

&&

target(apoptotic.bookTrading.BookSellerAgent$CallForOfferServer);

Thanks very much for your help

Rob

 

 

 


 

 



On 06/11/2007, Bora Erbas <bora.erbas@xxxxxxxxx> wrote:
I assume when you say "when it is called from the class
CallForOfferServer", you mean
"when object A uses an object of type CallForOfferServer to call
action() method", right?
I mean you don't mean "when method action() is called from within
CallForOfferServer"?

Anyway, if my assumption is correct then what I would do is:
pointcut callAction() : call(* jade.core.behaviours.Behaviour.action ());

And in the advice use thisJoinPoint.getTarget().getClass() or
instanceof to check against CallForOfferServer.
I am not sure if it would work but anyway give it a try..



On Nov 6, 2007 10:35 AM, Rob Austin <austirob@xxxxxxxxxxxxxx> wrote:
> Thanks very much Fintan, I'm close to getting it working, but no cigar.
>
> I think this is because the method I am targetting is inherited.
>
> I have a class called CallForOfferServer which inherits the method  action()
> from a class called Behaviour as follows:
>
> Behaviour
> ^
> SimpleBehaviour
> ^
> LifeCycle
> ^
> CallForOfferServer
>
> I am trying to advise the action() method only when it is called from the
> class CallForOfferServer, but just can't nail it.
>
> Any help would be great. This is my failing code:
>
>
> pointcut callAction() : call(* jade.core.behaviours.Behaviour.action ()) &&
> target(apoptotic.bookTrading.BookSellerAgent.CallForOfferServer );
>
>
>
>
>
>
>
> void around( ): callAction()
>
> {
>
>
>
>  \\ do something
>
> }
> Really appreciate your help
>
> Thanks
>
> Rob
>
>
>
>
>
> On 05/11/2007, Fintan Conway <Fintan.Conway@xxxxxx> wrote:
> >
> >
> > Hi Rob,
> >
> > Instead of a "before" advice, use an "around" advice.  With an around
> advice you need to call the method proceed() to run the original method.
> Thus in your advice if the security test allows the method to proceed you
> call the proceed() keyword, otherwise skip.
> >
> > Regards,
> >
> > Fintan
> >
> >
> >
> > -----Original Message-----
> > From: aspectj-users-bounces@xxxxxxxxxxx
> [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Rob Austin
> > Sent: 05 November 2007 11:44
> > To: aspectj-users@xxxxxxxxxxx
> > Subject: [aspectj-users] Removing functionality with AspectJ?
> >
> >
> > Hi there,
> >
> > I'm completely new to AspectJ and was wondering if there is anyway to
> cause a method to be "skipped" with AspectJ.
> >
> > Apologies if the question sounds silly, but I am using AspectJ to monitor
> what is going on in an object for security purposes.
> >
> > If certain conditions have been met, a rule engine implemented in a before
> advice determines that the code in that method should be skipped. Naturally,
> for this to be in anyway feasible, the method in question would need not to
> return anything, something like
> >
> > publicvoid action()
> >
> > I guess I need something like a  decorator pattern that removes
> functionality rather than adds it. The only way I can currently think do to
> this is to use my aspect to change the value of a boolean variable in the
> target method which causes the code to exit without doing anything.
> >
> > Really appreciate your help
> >
> > Thanks
> >
> > Rob
> >
> >
> >
> >  * ** *** ** * ** *** ** * ** *** ** *
> > This email and any files transmitted with it are confidential and
> > intended solely for the use of the individual or entity to whom they
> > are addressed.
> > Any views or opinions presented are solely those of the author, and do not
> necessarily
> > represent those of ESB.
> > If you have received this email in error please notify the sender.
> >
> > Although ESB scans e-mail and attachments for viruses, it does not
> guarantee
> > that either are virus-free and accepts no liability for any damage
> sustained
> > as a result of viruses.
> >
> > Company Registration Information: http://www.esb.ie/companies
> > * ** *** ** * ** *** ** * ** *** ** *
> >
> >
> >
> > _______________________________________________
> > 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

* ** *** ** * ** *** ** * ** *** ** *
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed.
Any views or opinions presented are solely those of the author, and do not necessarily
represent those of ESB.
If you have received this email in error please notify the sender.

Although ESB scans e-mail and attachments for viruses, it does not guarantee
that either are virus-free and accepts no liability for any damage sustained
as a result of viruses.

Company Registration Information: http://www.esb.ie/companies
* ** *** ** * ** *** ** * ** *** ** *


Back to the top