On 3/8/07, Chad Schoettger <[EMAIL PROTECTED]> wrote:
I would like to propose a solution for BEEHIVE-1076:
"interceptors for annotations don't get wired into generated control
beans if the annotation is at the class level"
Just to be clear this is not a bug, it is an enhancement to existing
functionality. Since this work introduces new functionality it
becomes necessary to clearly define the behavior of class-level
interceptors in Beehive.
I prefer a simple design which is intuitive for Beehive developers, so
here's what I am proposing:
1) Use the existing Beehive annotation @InterceptorAnnotation to meta-annotate
class-level interceptor annotations. The only difference between a
class-level and method-level interceptor annotation would be the type it
annotates. This would allow a developer to create a single interceptor
annotation which could be used at the class or method level.
2) A class-level interceptor gets applied to each method in the class
(including inherited methods).
3) If a method within an class is annotated with the same interceptor
annotation as the class only the method's interceptor is fired.
4) Interceptor prioritization does not change, method-level and class-level
interceptor priorities could still be defined in the same manner by
controls-interceptors.config file.
Questions/Comments? Any input is greatly appreciated.
+1, seems straightforward. Just to clarify #3 -- I'm reading your
proposal as "if a given method is somehow parameterized by the same
interceptor annotation multiple times (via some combination of
annotated inheritance and/or annotation at both type and method
level), then the most specific (most inherited, method level) instance
of the annotation wins". Sound right?
- Thanks, Chad