Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [aspectj-users] [newbie] General help needed here.....

Hi Ron (, Jerry) -

re:
> As a general rule, you probably don't want to use the form of signature 
> you have in that pointcut (which matches based on static types instead 
> of runtime instances). 

I've never heard this rule and I believe it is not correct;
The original form

    execution(ReturnType DeclaringType.methodName(..))

is better than

    execution(ReturnType methodName(..)) && this(DeclaringType)

*because* it can be resolved staticly and requires no dynamic test
(faster compile, faster implementation, and better IDE support).

You might be confusing this situation with the suggestion for
the call pointcut not to use the declaring type in the call.  
This suggestion is because the signature of a call join point
refers to the type of the reference (at the call site), not the 
type of the referent class (at run time).  So when people
write

   call(ReturnType DeclaringType.methodName(..))

they usually mean

   call(ReturnType methodName(..)) && target(DeclaringType)

(hence the suggestion).

Wes

P.S. - If someone does figure out how to configure AspectJ
with Struts, etc, it would be great to contribute back a
description to the mailing list or a bug, for inclusion in
the sample code repository...


> ------------Original Message------------
> From: "Ron Bodkin" <rbodkin@xxxxxxxxxxxxxx>
> To: aspectj-users@xxxxxxxxxxx
> Date: Fri, Jul-16-2004 4:09 PM
> Subject: RE: [aspectj-users] [newbie] General help needed here.....
>
> Jerry,
> 
> A couple of things to try:
> 1) Make sure that you are opening the affected file with the AspectJ 
> editor and not the Java editor. You should go into window | preferences | 
> file associations and make sure that AspectJ is set the the default for 
> .java files
> 2) Try adding this line, to see if the pointcut is matching:
> 
> declare warning: actionCall() : "in action execution";
> 
> As a general rule, you probably don't want to use the form of signature 
> you have in that pointcut (which matches based on static types instead 
> of runtime instances). It should work for executions, but a better 
> version is:
> 
> pointcut actionExecute() : execution(public ActionForward 
> execute(ActionMapping, ActionForm, 
> HttpServletRequest, HttpServletResponse))) && this(Logon_Action);
> 
> Ron
> 
> p.s. there's an already defined, debugged version of a pointcut for 
> struts action execution in the aTrack project: see 
> ajee.component.StrutsPointcuts. aTrack is at https://atrack.dev.java.net/ 
> 
>     public pointcut actionExecute(Action action, ActionMapping mapping, 
> ActionForm form, 
>         HttpServletRequest request, HttpServletResponse response) :
>         execution(ActionForward Action.execute(ActionMapping, 
> ActionForm, 
>             HttpServletRequest, HttpServletResponse)) && this(action) 
> && 
>         args(mapping, form, request, response);
> 
> 
> Ron Bodkin
> Chief Technology Officer
> New Aspects of Software
> o: (415) 824-4690
> m: (415) 509-2895
> 
> > ------------Original Message------------
> > From: "Jerry Jalenak" <Jerry.Jalenak@xxxxxxxxxx>
> > To: "'aspectj-users@xxxxxxxxxxx'" <aspectj-users@xxxxxxxxxxx>
> > Date: Fri, Jul-16-2004 1:07 PM
> > Subject: RE: [aspectj-users] [newbie] General help needed here.....
> > 
> > Another possibility that just occurred to me....
> > 
> > Since Logon_Action extends Action, do I need to 'expose' the
> > org.apache.struts.action.Action class to the aspect?
> > 
> > Jerry Jalenak
> > Development Manager, Web Publishing
> > LabOne, Inc.
> > 10101 Renner Blvd.
> > Lenexa, KS  66219
> > (913) 577-1496
> > 
> > jerry.jalenak@xxxxxxxxxx
> > 
> > 
> > > -----Original Message-----
> > > From: Ramnivas Laddad [mailto:ramnivas@xxxxxxxxxxxxxxx]
> > > Sent: Friday, July 16, 2004 2:29 PM
> > > To: aspectj-users@xxxxxxxxxxx
> > > Subject: Re: [aspectj-users] [newbie] General help needed here.....
> > > 
> > > 
> > > Hi Jerry,
> > > 
> > > Otávio's suggestion of using execution() PCD is the right one.
> > > 
> > > It is okay to use any number of aspects crosscutting a class. 
> > > Just a guess: Do you have every referred type in the pointcut 
> > > definition (in your case ActionMapping, ActionForm, 
> > > HttpServletRequest, HttpServletResponse) appropriately imported.
> > > 
> > > -Ramnivas
> > > 
> > > ===
> > > 
> > > Ramnivas Laddad,
> > > Author, AspectJ in Action
> > > http://ramnivas.com
> > > 
> > > Jerry Jalenak wrote:
> > > 
> > > >Otavio,
> > > >
> > > >Thanks for the reply.  Change the PCD from call to execution 
> > > didn't seem to
> > > >change anything.  However, I starting to think I have 
> > > something else wrong.
> > > >In the AspectJ Visualizer perspective, I am only seeing 
> > > where one aspect has
> > > >been applied (I have two).  Is it not possible to have more 
> > > than one aspect
> > > >class?
> > > >
> > > >Thanks....
> > > >
> > > >Jerry Jalenak
> > > >Development Manager, Web Publishing
> > > >LabOne, Inc.
> > > >10101 Renner Blvd.
> > > >Lenexa, KS  66219
> > > >(913) 577-1496
> > > >
> > > >jerry.jalenak@xxxxxxxxxx
> > > >
> > > >
> > > >  
> > > >
> > > >>-----Original Message-----
> > > >>From: Otávio Augusto Lazzarini Lemos [mailto:oall@xxxxxxxxxxx]
> > > >>Sent: Friday, July 16, 2004 1:31 PM
> > > >>To: aspectj-users@xxxxxxxxxxx
> > > >>Subject: Re: [aspectj-users] [newbie] General help needed 
> here.....
> > > >>
> > > >>
> > > >>You should use an execution PCD. In your example the calls to
> > > >>Logon_action.execute(ActionMapping, ActionForm, 
> HttpServletRequest,
> > > >>    
> > > >>
> > > >>>HttpServletResponse) are the intercepted join points, and 
> > > >>>      
> > > >>>
> > > >>not the actual
> > > >>execution of the method (try to look at the places where you 
> > > >>call the method).
> > > >>Tell me if it works with the execution instead of the call PCD.
> > > >>
> > > >>Otávio
> > > >>
> > > >>Citando Jerry Jalenak <Jerry.Jalenak@xxxxxxxxxx>:
> > > >>
> > > >>    
> > > >>
> > > >>>First, thanks to Rod, Adrian, and Ramnivas for their help 
> > > >>>      
> > > >>>
> > > >>the other day.  I
> > > >>    
> > > >>
> > > >>>think I'm starting to get the hang of this....
> > > >>>
> > > >>>That being said, I'm stuck as to why the following doesn't 
> > > >>>      
> > > >>>
> > > >>work.  I've just
> > > >>    
> > > >>
> > > >>>upgraded to the AJDT 1.1.11 plug-in, if it matters.
> > > >>>
> > > >>>Here's the aspect :
> > > >>>
> > > >>>	public aspect MemberSolutions_BaseActionAspect
> > > >>>	{
> > > >>>	    // ~ Pointcut definitions
> > > >>>	    
> > > >>>	    pointcut actionCall() : 
> > > >>>	        (call(public ActionForward
> > > >>>Logon_Action.execute(ActionMapping, ActionForm, 
> > HttpServletRequest,
> > > >>>HttpServletResponse)));
> > > >>>	    
> > > >>>	    // ~ Advice definitions
> > > >>>    
> > > >>>	    before() : actionCall()
> > > >>>	    {
> > > >>>	        System.out.println("here i am");
> > > >>>	    }
> > > >>>	}
> > > >>>
> > > >>>and the class I'm trying to weave it into :
> > > >>>
> > > >>>	public class Logon_Action extends Action
> > > >>>	{
> > > >>>	    public ActionForward execute(ActionMapping _actionMapping,
> > > >>>	            ActionForm _actionForm, HttpServletRequest 
> _request,
> > > >>>	            HttpServletResponse _response)
> > > >>>	    {
> > > >>>	        Logon_ActionForm form = (Logon_ActionForm) _actionForm;
> > > >>>	        return null;
> > > >>>	    }
> > > >>>	}
> > > >>>
> > > >>>Everything compiles OK (no errors, anyway), but when I 
> > > >>>      
> > > >>>
> > > >>check the class I
> > > >>    
> > > >>
> > > >>>don't see any indication that the aspect is being applied.  
> > > >>>      
> > > >>>
> > > >>I expect to see
> > > >>    
> > > >>
> > > >>>an indicator on the first statement of the class....
> > > >>>
> > > >>>I'm probably being dense on this, and it's something really 
> > > >>>      
> > > >>>
> > > >>stupid, but I
> > > >>    
> > > >>
> > > >>>can't seem to figure it out.  Any help?
> > > >>>
> > > >>>Thanks guys!
> > > >>>
> > > >>>Jerry Jalenak
> > > >>>Development Manager, Web Publishing
> > > >>>LabOne, Inc.
> > > >>>10101 Renner Blvd.
> > > >>>Lenexa, KS  66219
> > > >>>(913) 577-1496
> > > >>>
> > > >>>jerry.jalenak@xxxxxxxxxx
> > > >>>
> > > >>>
> > > >>>This transmission (and any information attached to it) may 
> > > >>>      
> > > >>>
> > > >>be confidential
> > > >>    
> > > >>
> > > >>>and
> > > >>>is intended solely for the use of the individual or entity 
> > > >>>      
> > > >>>
> > > >>to which it is
> > > >>    
> > > >>
> > > >>>addressed. If you are not the intended recipient or the 
> > > >>>      
> > > >>>
> > > >>person responsible
> > > >>    
> > > >>
> > > >>>for
> > > >>>delivering the transmission to the intended recipient, be 
> > > >>>      
> > > >>>
> > > >>advised that you
> > > >>    
> > > >>
> > > >>>have received this transmission in error and that any use, 
> > > >>>      
> > > >>>
> > > >>dissemination,
> > > >>    
> > > >>
> > > >>>forwarding, printing, or copying of this information is 
> > > >>>      
> > > >>>
> > > >>strictly prohibited.
> > > >>    
> > > >>
> > > >>>If you have received this transmission in error, please 
> > > >>>      
> > > >>>
> > > >>immediately notify
> > > >>    
> > > >>
> > > >>>LabOne at the following email address: 
> > > >>>      
> > > >>>
> > > >>securityincidentreporting@xxxxxxxxxx
> > > >>    
> > > >>
> > > >>>_______________________________________________
> > > >>>aspectj-users mailing list
> > > >>>aspectj-users@xxxxxxxxxxx
> > > >>>http://dev.eclipse.org/mailman/listinfo/aspectj-users
> > > >>>
> > > >>>      
> > > >>>
> > > >>_______________________________________________
> > > >>aspectj-users mailing list
> > > >>aspectj-users@xxxxxxxxxxx
> > > >>http://dev.eclipse.org/mailman/listinfo/aspectj-users
> > > >>
> > > >>    
> > > >>
> > > >
> > > >This transmission (and any information attached to it) may 
> > > be confidential and is intended solely for the use of the 
> > > individual or entity to which it is addressed. If you are not 
> > > the intended recipient or the person responsible for 
> > > delivering the transmission to the intended recipient, be 
> > > advised that you have received this transmission in error and 
> > > that any use, dissemination, forwarding, printing, or copying 
> > > of this information is strictly prohibited. If you have 
> > > received this transmission in error, please immediately 
> > > notify LabOne at the following email address: 
> > > securityincidentreporting@xxxxxxxxxx
> > > >
> > > >_______________________________________________
> > > >aspectj-users mailing list
> > > >aspectj-users@xxxxxxxxxxx
> > > >http://dev.eclipse.org/mailman/listinfo/aspectj-users
> > > >
> > > >  
> > > >
> > > 
> > > _______________________________________________
> > > aspectj-users mailing list
> > > aspectj-users@xxxxxxxxxxx
> > > http://dev.eclipse.org/mailman/listinfo/aspectj-users
> > > 
> > 
> > This transmission (and any information attached to it) may be 
> > confidential and is intended solely for the use of the individual or 
> entity to 
> > which it is addressed. If you are not the intended recipient or the 
> > person responsible for delivering the transmission to the intended 
> > recipient, be advised that you have received this transmission in 
> error and 
> > that any use, dissemination, forwarding, printing, or copying of this 
> 
> > information is strictly prohibited. If you have received this 
> transmission 
> > in error, please immediately notify LabOne at the following email 
> > address: securityincidentreporting@xxxxxxxxxx
> > 
> > _______________________________________________
> > aspectj-users mailing list
> > aspectj-users@xxxxxxxxxxx
> > http://dev.eclipse.org/mailman/listinfo/aspectj-users
> > 
> > 
> 
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-users
> 




Back to the top