[
https://issues.jboss.org/browse/WELD-1027?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12650798#comment-12650798
]
Brendan Healey commented on WELD-1027:
--------------------------------------
I'm no longer quite so sure that my problem description is correct. At the
weekend I
had only been able to get this working using private access. However when I
resumed
development and testing on Monday I was getting a NullPointerException even when
using private access. After changing to protected access and doing a clean and
build
it now works.
What seems to be happening is that some builds work, and some don't.
> @Inject'ed protected base class member access problem
> -----------------------------------------------------
>
> Key: WELD-1027
> URL: https://issues.jboss.org/browse/WELD-1027
> Project: Weld
> Issue Type: Bug
> Affects Versions: 1.1.2.Final
> Environment: Glassfish 3.1.1 Chrome browser.
> Reporter: Brendan Healey
>
> In the following code I'm trying to inject a SessionScoped bean into a
> stateless EJB,
> but I want to do the @Inject in an abstract base class of the EJB. According
> to the
> CDI spec it seems to suggest that this should work:
> "4.2. Inheritance of member-level metadata
> Suppose a class X is extended directly or indirectly by the bean class of a
> managed bean or session bean Y.
> If X declares an injected field x then Y inherits x."
> What happens is that I can access the inherited protected member sessionView
> from TestEjb,
> but not from code within the base class. When I say "can access", I mean that
> the injected
> member is accessible at runtime and is not null.
> @Named
> @ViewAccessScoped
> public class JsfBean extends implements Serializable {
> @Inject private TestEjb ejb;
> SessionView s1 = ejb.getSessionViewChild(); // sessionView injected ok
> SessionView s2 = ejb.getSessionViewBase(); // s2 is null
> }
> @Named
> @SessionScoped
> public class SessionView implements Serializable {}
> @Stateless
> public class TestEjb extends BaseClass implements Serializable {
> public SessionView getSessionViewChild() {
> return sessionView;
> }
> }
> public abstract class BaseClass implements Serializable {
> @Inject
> protected SessionView sessionView;
> public SessionView getSessionViewBase() {
> return sessionView;
> }
> }
> What happens is that s1 is a valid SessionView reference, but s2 is null. It
> now
> turns out that if I change the access of sessionView in BaseClass to private,
> it
> works, but only if I clean & build before re-deployment. It will then
> consistently
> work - unless I change it back to protected, in which case it will
> consistently not
> work.
> I am using MyFaces CODI 1.0.1 in conjunction with Weld from Glassfish 3.1.1
> (v20110404-1554). I am also using JDK 7u1. I reported this on the MyFaces
> mailing
> list but Gerhard said this looked like a weld issue.
> Thanks.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
weld-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-issues