Hi, all.
I was wondering how ajc handles the precedence order of boolean operators in
pointcut expressions. Do "AND" (&&) and "OR" (||) operators have the same
precedence? In the example below, extracted from Laddad's AspectJ in Action
book, the original expression compiles with no errors, while the modified
version results in "multiple bindings" errors (the full aspect code is
attached). That means "AND" and "OR" have the same precedence, right?
Original pointcut expression:
pointcut accountActivity(Account account, float amount) :
( (execution(void Account.credit(float)) || execution(void
Account.debit(float))) && this(account) && args(amount) )
||
( execution(void CheckClearanceSystem.*(Account, float)) && args(account,
amount) );
Modified pointcut expression:
pointcut accountActivity (Account account, float amount) :
(execution(void Account.credit(float)) || execution(void
Account.debit(float))) && this(account) && args(amount)
||
execution(void CheckClearanceSystem.*(Account, float)) && args(account,
amount);
Cheers,
Fabiano Ferrari.
//Listing 12.14 An aspect that logs account activities
package banking;
import logging.*;
public aspect LogAccountActivities extends IndentedLogging {
declare precedence : LogAccountActivities, *;
pointcut accountActivity(Account account, float amount) :
( (execution(void Account.credit(float))
|| execution(void Account.debit(float))
)
&& this(account)
&& args(amount))
|| (execution(void CheckClearanceSystem.*(Account, float))
&& args(account, amount));
protected pointcut loggedOperations() : accountActivity(Account, float);
void around(Account account, float amount) : accountActivity(account, amount) {
try {
System.out.println("[" +
thisJoinPointStaticPart.getSignature().toShortString()
+ "] " + account + " " + amount);
System.out.println("Before: " + account.getBalance());
proceed(account, amount);
} finally {
System.out.println("After: " + account.getBalance());
}
}
}
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users