[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Match all method calls with a specific parameter type at any position
|
This should work for you. All 3 method calls below are advised, but
the sysout call is *not* advised.
public aspect ParameterMatcher {
before() : call(* *(..,String,..)) {
System.out.println('S');
}
}
public class HasParameters {
static void doNothing(int x, int y, String z) { }
static void doNothing(int x, String y, int z) { }
static void doNothing(String x, int y, int z) { }
public static void main(String[] args) {
doNothing(0, 0, "");
doNothing(0, "", 0);
doNothing("", 0, 0);
}
}
And then you can write an additional clause in the before advice to
capture the args.
On Wed, Jun 10, 2009 at 4:32 AM, Tahir Akhtar<tahir@xxxxxxxxxxxxxxxxxxx> wrote:
> One somewhat limited solution I see is to use an annotation on the methods
> with thisJoinPoint.getArgs().
>
> Tahir Akhtar wrote:
>>
>> 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
>> 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
>