Description
The code generated static initialization code that does version checking for ControlBeans could be made better in a couple of ways:
- the code generated by the enforceVersionRequired macro should be selectively generated. There is no reason to generate class load time version checking if there is no @VersionRequired annotation on the associated ControlExtension.
- the ControlInterface to version check against can be (and should) be determined at codegen time and not runtime. The call to ControlBean.getMostDerivedInterface can be replaced by directly injecting the (versioned) ControlInterface class name. This is a) simpler, and b) safer, because having the class you are version checking against be dynamic doesn't really make sense.