Skip to main content

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

OK, I'll start by filing a bug with Spring AOP, because its exclusive reliance on the fast match means I have a class advised when it shouldn't, and I won't have time to do more on the subject before september anyway.

Regarding the impact of supporting more cases, since the annotations are already retrieved in case of an exact match, I'm pretty sure a more complex match based on combinations of exact matches could be applied at a similar cost, but that would need to be benchmarked of course. Hopefully a simple test case could be set up for JMH (Java Micro Harness, http://openjdk.java.net/projects/code-tools/jmh/) to compare more complex matches against an simple, exact one.

Regards,
Frank

2015-08-06 16:55 GMT+02:00 Andy Clement <andrew.clement@xxxxxxxxx>:
Fast match could be improved but we’d need to be very confident we aren’t damaging the notion of fast. I’d be happy to see other cases covered - annotation based matching cases are pretty prevalent these days so it’d be good to cover some of those. How fast is it to retrieve the annotations in order to quickly perform this extra fast matching? I’m not sure without testing.

Personally I find if you are in Eclipse then building/testing is pretty easy after the initial setup - but i know the lack of a maven type build doesn’t help. Certainly people have contributed from an IntelliJ environment but I have less skills to help them get setup with that. If you want to get setup and develop some of this, I can help you.

cheers,
Andy

> On Aug 5, 2015, at 2:40 PM, Frank Pavageau <frank.pavageau@xxxxxxxxx> wrote:
>
> 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
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
> https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users


Back to the top