[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