[seam-dev] Seam3: Will injection become available with in final methods?
Michael Schütz
michaelschuetz83 at gmail.com
Thu Jun 3 05:17:56 EDT 2010
OK,
in CDI it's disallowed by spec:
" 5.4.1.Unproxyable bean types
Certain legal bean types cannot be proxied by the container:
•classes which don't have a non-private constructor with no parameters,
•classes which are declared final or have final methods
If an injection point whose declared type cannot be proxied by the container
resolves to a bean with a normal scope, the
container automatically detects the problem and treats it as a deployment
problem."
Anyway, the NPE in Seam2 is misleading. A cglib exception is swallowed.
Correct?
Michael
2010/6/3 Michael Schütz <michaelschuetz83 at gmail.com>
> Hi to all,
>
> in Seam2, using injected member within final method will cause an NPE at
> Runtime. The reason for that is, that Seam2 uses cglib for dynamic proxying
> und subclassing is not possible for final methods.
>
> Example:
> @Name("simpleSeamComp")
> public class SimpleSeamComponent {
> public String getName() {
> return "Sam";
> }
> }
>
> @Name("finalSeamComp")
> public class FinalSeamComponent {
>
> @In(create = true)
> private SimpleSeamComponent simpleSeamComp;
>
> // causes NullPointerException
> public final String getHello() {
> return simpleSeamComp.getName();
> }
> }
>
>
> How will Seam3/CDI behave in that case?
>
>
>
> Thanks and regards
> Michael
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/seam-dev/attachments/20100603/6d15b976/attachment.html
More information about the seam-dev
mailing list