[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
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