Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Improving the pointcut matching?

Hi.

I was debugging an application using Spring AOP to find out why a class was proxied despite not actually matching the pointcut, and found out that KindedPointcut.fastMatch() would only match on an exact type pattern or a type pattern with an exact annotation type pattern, and return "maybe" otherwise.

It seems a bit restrictive, when the conjunctions, disjunctions and negations could probably also be evaluated with the same kind of cost, and help my case, which is a pointcut like:
    execution(* (@Annotation1 !@Annotation2 *).*(..))

Is there any intrinsic reason why that can't be done (outside of the Spring AOP scope for example, when used directly in AspectJ), or is it just a lack of need / time for the implementation?

In the same vein, the patterns seem really disjunct, when they could actually have multiple facets: a WildTypePattern can contain an AnnotationTypePattern, however it's not an AnyWithAnnotationTypePattern. If it were, a possible match could be ruled out using only the annotations (again with exact match, conjunction, disjunction, negation), and not considering the wildcard.

I could probably try and contribute something if it seems feasible, though I know building and testing AspectJ is not that easy.

Regards,
Frank

Back to the top