If you want to use args directly for binding, the normal (not all that pretty) solution right now is:
pointcut havingAConnectionParameter1(Connection conn): call(* *(..)) && args(conn,..); pointcut havingAConnectionParameter2(Connection conn): call(* *(..)) && args(*,conn,.. ); pointcut havingAConnectionParameter3(Connection conn): call(* *(..)) && args(*,*,conn,.. ); pointcut havingAConnectionParameter4(Connection conn): call(* *(..)) && args(*,*,*,conn,.. ); pointcut havingAConnectionParameter5(Connection conn): call(* *(..)) && args(*,*,*,conn,.. ); pointcut havingAConnectionParameter6(Connection conn): call(* *(..)) && args(*,*,*,*,conn,.. ); obviously you need as many variants as the max number of arguments, but more than 6/7 arguments then I think the code you are advising has other problems ;) there are open enhancement requests relating to this. https://bugs.eclipse.org/bugs/show_bug.cgi?id=160509 https://bugs.eclipse.org/bugs/show_bug.cgi?id=233718 The second one is interesting as it discusses a lot of possible syntaxes. cheers, Andy. 2009/6/10 Tahir Akhtar <[email protected]>: > Hi, > Is there a way to declare a pointcut that matches all method calls whose any > parameter is of specific type (say java.sql.Connection). > > I see that following will match methods whose last (or only) parameter is of > type Connection. > > pointcut havingAConnectionParameter(Connection conn): call(* *(..)) && > args(..,conn ); > > And following will match methods whose first (or only) parameter is of type > Connection. > > pointcut havingAConnectionParameter(Connection conn): call(* *(..)) && > args(conn, .. ); > > But how can I match when I don't know the exact position or even number of > parameters in advance? > > > Regards > Tahir Akhtar > > > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
