This thread is about the design of task
http://jira.jboss.com/jira/browse/JBAOP-388.
I just couldn't come up with a good approach to implement this task.
Let me show why.
First, I think the specification of the exception would have to do with the pointcut
matching, because it does affects selection of whether that after-throwing advice will be
bound to a specific joinpoint or not. If the joinpoint does not throw that type of
exception, we are not calling the advice. But, besides, this information is also part of
the advice matching algorithm itself. I need to validate the type of exception the advice
is receiving.
After going through these first thoughts, I noticed it would be a bad idea adding this to
pointcut matching, and decided to do the matching on the advisor generation algorithm. For
that, I need to pass this info along with the advice factory created. And notice this will
affect all types of advices and weaving modes, because the advice factory is used
regardless of the advice type and weaving mode. So, I would have to add a field to
AdviceFactory, and this field will be used only in case it is an after-throwing or finally
advice, and only if the user specified the exception type.
On the other hand, if we just do a matching on the type of the exception that the advice
catches, we would get rid of the design problem, and the algorithm would be concentrated
on the advice.annotation package and the JoinPointGenerator class only. I started
considering this approach after reviewing all classes I would have to edit using the
previous approach.
Any thoughts? If the first solution is considered better than the second one, any hint on
a better design is more than welcome :)
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4070679#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...