Thanks for the clarification. cheers
On Fri, May 18, 2012 at 2:33 PM, Mark Struberg <[email protected]> wrote: > > > Hi! > > Yup, it got already challenged and should not show up in the CDI-1.1 TCK. > > > As for my statement below regarding 6.4.2: I now talked with a few fellow > CDI EG members and they interpret it as _only_ mean the OuterBean case. So > the OuterBean really gets destroyed immediately after createUser. > > As for the any conatainer created @Dependent parameter please see > https://issues.jboss.org/browse/CDI-228 > > LieGrue, > strub > > > >________________________________ > > From: Nikolai Dokovski <[email protected]> > >To: [email protected]; Mark Struberg <[email protected]> > >Sent: Friday, May 18, 2012 1:23 PM > >Subject: Re: Passivation dependencies of producer method are not validated > > > > > >Aha got it. > >But then the test should be challenged, I suppose. > > > >cheers > > > > > >On Fri, May 18, 2012 at 2:17 PM, Mark Struberg <[email protected]> wrote: > > > > > >> > >>Hi Nikolai! > >> > >>Congratulations, you went pretty deep already ;) > >> > >>please consider the following situation: > >> > >>@Dependent > >>public class OuterBean { > >> private @Inject SomeNotSerializableBean s; > >> > >> @Produces @SessionScoped > >> public User createUser() { > >> return getUserFromDatabase(); > >> } > >>} > >> > >>When somewhere in a code a > >> > >>private @Inject User u; > >>u.getName(); > >> > >>gets executed, the container will create the Contextual Instance for the > user (if there is none in the session already -> 'SessionSingleton'). > >>For doing so the container will > >> > >>a.) create a OuterBean o > >>b.) invoke the o.createUser(); method and store the created User in the > SessionContext. > >>c.) IMPORTANT! As OuterBean is @Dependent, it will IMMEDIATELY destroyed > after createUser() returns! See 6.4.2: > >>"any @Dependent scoped contextual instance created to receive a producer > method, producer field, disposer method or > >>observer method invocation is destroyed when the invocation completes, > and ..." It might not be 100% clear if this means only the parameters of > the producer method or also the containing bean as well though ... I > remember that I talked about this with Pete a year or so ago and I think > Weld also destroys the OuterBean immediately. > >> > >>So why the hack should we check if OuterBean is Serializable or not? It > does NOT end up in the CreationalContext of the User u anyway. At least not > if we assume the outlined interpretation of the spec ;) > >> > >>LieGrue, > >>strub > >> > >> > >> > >>----- Original Message ----- > >>> From: Nikolai Dokovski <[email protected]> > >>> To: [email protected] > >>> Cc: > >>> Sent: Friday, May 18, 2012 12:52 PM > >>> Subject: Passivation dependencies of producer method are not validated > >>> > >> > >>> Hi, > >>> I got JSR 299 TCK (webprofile) running with tomcat and > openwebbeans-1.1.4 > >>> and there is one other test that fails > >>> PassivatingProducerMethodWithNonPassivatingParameterTest > >>> > >>> The case is simple: The container should respond with deployment > exception > >>> when there is bean in passivating scope with dependencies which are > not. > >>> After short debug session I ended up to invocation of > >>> AbstractProducerBeans.validatePassivationDependencies which is left > emty > >>> (no implementation) > >>> with the following comments: > >>> // don't call super.validatePassivationDependencies()! > >>> // the injection points of producers are the parameters of the > >>> producermethod. > >>> // since CDI-1.1 we must not check those for is serializable anymore. > >>> > >>> Is there any particular reason for not implementing this or the check > is > >>> performed elsewhere? > >>> > >>> Regards > >>> Nikolai > >>> > >> > > > > > > >
