yep, you can add a test on "enterprise" as well.
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com> 2016-09-29 14:38 GMT+02:00 Xavier Dury <[email protected]>: > something like this? https://gist.github.com/kalgon/ > c1ccffff45540a629314f615b90f944f > > > > > > > From: Romain Manni-Bucau <[email protected]> > Sent: Thursday, September 29, 2016 11:43 AM > To: [email protected] > Subject: Re: OpenEJB and EL > > think it is doable with a custom ELResolver without having to hold this map > which can be wrong for pseudo scoped beans. > > > Romain Manni-Bucau > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > > Romain Manni-Bucau (@rmannibucau) | Twitter > twitter.com > The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) / > Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: > https://t.co/0VnvWwbedt . Blog ... > <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog > > > RBlog: the RManniBucau v2 Blog > blog-rmannibucau.rhcloud.com > RBlog: Romain Manni-Bucau Blog about Java, JavaEE, TomEE, Angular, Open > Source, Code and geeky topics... > <http://rmannibucau.wordpress.com> | Github <https://github.com/ > rmannibucau> | > > > [old blog] new RManniBucau().blog() > rmannibucau.wordpress.com > New blog on: https://blog-rmannibucau.rhcloud.com/ > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber > <http://www.tomitribe.com> | JavaEE Factory > <https://javaeefactory-rmannibucau.rhcloud.com> > > 2016-09-29 11:38 GMT+02:00 Xavier Dury <[email protected]>: > > > Thanks, now I understand better why it is not implemented in OWB. > > > > Funny, I came to the same conclusion and was busy implementing an > > @ApplicationScoped @Named Beans (which implements Map<String, Object> so > I > > can do #{beans['javax.enteprise.context.conversation']}. > > > > Xavier > > > > > > > > > > > > > > From: Mark Struberg <[email protected]> > > Sent: Thursday, September 29, 2016 10:32 AM > > To: [email protected] > > Subject: Re: OpenEJB and EL > > > > Yea, now you probably understand my 'oh boy' reaction ;) > > > > > > My initial reaction when discovering this problem back then (a few years > > ago) was to simply replace the dots with underlines -> > > javax_enterprise_context_conversation > > > > But this solution wasn't choosen. > > > > > > The reason why I don't like to implement it in OWB is that CDI is sadly > > _not_ the only spec which defined such. E.g. the Servlet specifies that > > there is a request parameter 'javax.servlet.request.key_size' or > > 'javax.servlet.error.message' and others. > > > > But despite all servlet request parameters are available via an > ELResolver > > it is also _not_ possible to simply write "#{javax.servlet.request.key_ > > size}". > > > > While in the servlet spec this was primarily targetted to be > > programmatically available from the request attriubute (and EL is only an > > implicit way), it is a 'first class citizen' in CDI. But still doesn't > work. > > > > You could provide the following which is probably even more straight > > forward than the producer: > > > > > > @ApplicationScoped > > @Named > > public class NameResolver { > > > > private @Inject BeanManager bm; > > > > > > public Object get(String beanName) { > > Set<Bean> beans = bm.getBeans(beanName); > > Bean bean = bm.resolve(beans); > > return bm.getReference(bean, bean.getType() or so, > > bm.createCreationalContext()); > > > > } > > } > > > > > > (of course with null checks etc, just sketched that wo trying). > > That should be available as #{nameResolver.get("javax. > enterprise.context. > > conversation")} > > > > > > LieGrue, > > strub > > > > > On Thursday, 29 September 2016, 9:21, Romain Manni-Bucau < > > [email protected]> wrote: > > > > 2016-09-29 9:15 GMT+02:00 Xavier Dury <[email protected]>: > > > > > >> Indeed, @Named != named... got it! :-) > > >> > > >> But I still fail to understand _where_ the workaround for > > > 'javax...' is > > >> actually implemented: > > >> > > >> > > > nowhere cause it introduces other issues in EL so the workaround is > only > > a > > > workaround not a nasty way to get a feature. > > > > > > > > >> 1) if it is implemented in OWB then why is > > > 'elContext.addELResolver(beanManager.getELResolver());' > > >> not working? I would expect the returned el resolver to contain the > > >> workaround. > > >> 2) if it is implemented elsewhere (TomEE for example), I don't > > > understand > > >> why as this requirement comes from the CDI spec and should be > > implemented > > >> in OWB... so back to (1) > > >> > > >> I am stuck in an infinite loop ;-) > > >> > > >> > > >> > > >> > > >> From: Romain Manni-Bucau <[email protected]> > > >> Sent: Thursday, September 29, 2016 8:54 AM > > >> To: [email protected] > > >> Subject: Re: OpenEJB and EL > > >> > > >> 2016-09-29 8:32 GMT+02:00 Xavier Dury <[email protected]>: > > >> > > >> > @Mark > > >> > > > >> > thanks, it works when adding any other qualifier! > > >> > > > >> > btw, do you think it would hurt to qualify the built-in > conversation > > > bean > > >> > with @Named("javax.enterprise.context.conversation") in OWB? > > > That way I > > >> > could inject the built-in with @Inject @Named("javax.enteprise. > > >> context.conversation") > > >> > and expose it via @Produces @Named("conversation") without > > > resorting to > > >> > some extra qualifier. > > >> > > > >> > @Romain > > >> > > > >> > I was wondering where exactly is your hacky el resolver > implemented? > > > If > > >> > the "javax.enterprise.context.conversation" name is a > > > requirement coming > > >> > from the CDI spec, then I would suppose it is implemented in OWB > (in > > > the > > >> > resolver you get from the BeanManager) but as my tests with > OEJB+OWB > > >> fail, > > >> > I suppose it is not there (or not enabled in some way). On the > > > contrary, > > >> if > > >> > the requirement comes from the java EE spec, then I suppose it is > > >> > implemented in TomEE and that would explain why my tests fail. > > >> > > > >> > > > >> The name is built it in openwebbeans: > > >> https://github.com/apache/openwebbeans/blob/trunk/ > > >> webbeans-impl/src/main/java/org/apache/webbeans/component/ > > >> ConversationBean.java#L54 > > >> > > >> The spec states: > > >> > > >> "The container provides a built-in bean with bean type Conversation, > > > scope > > >> @RequestScoped, and qualifier@Default, named > > >> javax.enterprise.context.conversation." > > >> > > >> So no qualifier @Named but a Bean<?> name (no comment ;)) > > >> > > >> > > >> > Xavier > > >> > > > >> > > > >> > > > >> > > > >> > From: Mark Struberg <[email protected]> > > >> > Sent: Thursday, September 29, 2016 12:12 AM > > >> > To: [email protected] > > >> > Subject: Re: OpenEJB and EL > > >> > > > >> > @Default is always assumed when you don't add a specific Qualifier > > > other > > >> > than @Named and @Any. > > >> > > > >> > Xavier, can you please add any random qualifier? E.g. @Destroyed. > > >> > > > >> > This will stop CDI from complaining but EL should work. > > >> > > > >> > LieGrue, > > >> > strub > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > On Thursday, 29 September 2016, 0:04, Xavier Dury > > > <[email protected]> > > >> > wrote: > > >> > > > > > > https://gist.github.com/kalgon/fbf529dc9c9764c115433cfb2f0f82bf > > > > > > > > OpenEjbElTest.java > > gist.github.com > > property= > > >> > > >> > > >> > > >> OpenEjbElTest.java > > >> gist.github.com > > >> property= > > >> > > > >> > > > >> > > > >> > OpenEjbElTest.java > > >> > gist.github.com > > >> > property= > > >> > > > > >> > > > > >> > > > > >> > > From: Xavier Dury <[email protected]> > > >> > > Sent: Wednesday, September 28, 2016 11:54 PM > > >> > > To: [email protected] > > >> > > Subject: Re: OpenEJB and EL > > >> > > > > >> > > No, I didn't add the @Default to the @Produces method. > > >> > > > > >> > > I verified: > > >> > > > > >> > > @RequestScoped > > >> > > public class ConversationWrapper { > > >> > > > > >> > > private @Inject Conversation conv; > > >> > > > > >> > > @Produces > > >> > > @Dependent > > >> > > @Named("conv") > > >> > > public Conversation getConv() { > > >> > > return conv; > > >> > > } > > >> > > } > > >> > > > > >> > > result: > > >> > > > > >> > > Caused by: javax.enterprise.inject.AmbiguousResolutionException: > > > There > > >> > is more > > >> > > than one Bean with type javax.enterprise.context. > > >> ConversationQualifiers: > > >> > > [@javax.enterprise.inject.Default()] > > >> > > for injection into Field Injection Point, field name : conv, > > > Bean > > >> Owner > > >> > : > > >> > > [ConversationWrapper, WebBeansType:MANAGED, Name:null, API > > >> > > Types:[java.lang.Object,eg.ConversationWrapper], > > >> > > Qualifiers:[javax.enterprise.inject.Default,javax. > > >> > enterprise.inject.Any]] > > >> > > found beans: > > >> > > ConversationImpl, WebBeansType:CONVERSATION, > > >> > > Name:javax.enterprise.context.conversation, API > > >> > > Types:[java.lang.Object,org.apache.webbeans.conversation. > > >> > ConversationImpl,javax.enterprise.context.Conversation], > > >> > > Qualifiers:[javax.enterprise.inject.Default,javax. > > >> enterprise.inject.Any] > > >> > from > > >> > > jar:file:/C:/Users/xavier/.m2/repository/org/apache/ > > >> > openwebbeans/openwebbeans-impl/1.6.3/openwebbeans-impl- > > >> > 1.6.3.jar!/org/apache/webbeans/conversation/ConversationImpl.class > > >> > > Conversation, WebBeansType:PRODUCERMETHOD, Name:conv, API > > >> > > Types:[java.lang.Object,javax.enterprise.context.Conversation], > > >> > > Qualifiers:[javax.enterprise.inject.Default,javax. > > >> > enterprise.inject.Any,javax.inject.Named] > > >> > > from > > >> > > > > > file:/D:/development/workspaces/openejb-el/target/test-classes/eg/ > > >> > ConversationWrapper.class > > >> > > > > >> > > > > >> > > > > >> > > > > >> > > From: Romain Manni-Bucau <[email protected]> > > >> > > Sent: Wednesday, September 28, 2016 11:47 PM > > >> > > To: [email protected] > > >> > > Subject: Re: OpenEJB and EL > > >> > > > > >> > > Conversation, WebBeansType:PRODUCERMETHOD, Name:conv, API > > >> > > Types:[java.lang.Object,javax.enterprise.context.Conversation], > > >> > > Qualifiers:[javax.enterprise.inject.Default,javax. > > >> > > enterprise.inject.Any,javax.inject.Named] from > > > file:/D:/development/ > > >> > > > > > workspaces/openejb-el/target/test-classes/eg/ConversationWrapper.class > > >> > > > > >> > > Why is there @Default there? producer should only have the @Named > > > you > > >> set > > >> > > > > >> > > > > >> > > Romain Manni-Bucau > > >> > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > > > > Romain Manni-Bucau (@rmannibucau) | Twitter > > twitter.com > > The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) > / > > Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: > > https://t.co/0VnvWwbedt . Blog ... > > >> > > >> > > >> > > >> Romain Manni-Bucau (@rmannibucau) | Twitter > > >> twitter.com > > >> The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / > > Java(EE) / > > >> Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: > > >> https://t.co/0VnvWwbedt . Blog ... > > >> > > > >> > > > >> > > > >> > Romain Manni-Bucau (@rmannibucau) | Twitter > > >> > twitter.com > > >> > The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / > > > Java(EE) > > >> / > > >> > Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: > > >> > https://t.co/0VnvWwbedt . Blog ... > > >> > > > > >> > > > > >> > > > > >> > > Romain Manni-Bucau (@rmannibucau) | Twitter > > >> > > twitter.com > > >> > > The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / > > >> Java(EE) > > >> > / > > >> > > Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: > > >> > > https://t.co/0VnvWwbedt . Blog ... > > >> > > > > >> > > > > >> > > > > >> > > Romain Manni-Bucau (@rmannibucau) | Twitter > > >> > > twitter.com > > >> > > The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / > > >> Java(EE) > > >> > / > > >> > > Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: > > >> > > https://t.co/0VnvWwbedt . Blog ... > > >> > > <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog > > >> > > > > >> > > > > >> > > RBlog: the RManniBucau v2 Blog > > >> > > blog-rmannibucau.rhcloud.com > > >> > > RBlog: Romain Manni-Bucau Blog about Java, JavaEE, TomEE, > > > Angular, Open > > >> > Source, > > >> > > Code and geeky topics... > > >> > > <http://rmannibucau.wordpress.com> | Github > > >> > > <https://github.com/rmannibucau> | > > >> > > > > >> > > > > >> > > [old blog] new RManniBucau().blog() > > >> > > rmannibucau.wordpress.com > > >> > > New blog on: https://blog-rmannibucau.rhcloud.com/ > > >> > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | > > > Tomitriber > > >> > > <http://www.tomitribe.com> | JavaEE Factory > > >> > > <https://javaeefactory-rmannibucau.rhcloud.com> > > >> > > > > >> > > 2016-09-28 23:45 GMT+02:00 Xavier Dury > > > <[email protected]>: > > >> > > > > >> > >> It seems that to inject the conversation in > > >> > > ConversationWrapper.conversation, > > >> > >> OWB does consider both the build-in conversation bean and > > > the > > >> produced > > >> > one > > >> > >> from... ConversationWrapper.getConv(). > > >> > >> > > >> > >> I tried something like that: > > >> > >> > > >> > >> @RequestScoped > > >> > >> public class ConversationWrapper { > > >> > >> > > >> > >> private @Inject > > >> > > @Named("javax.enterprise.context.conversation") > > >> > >> Conversation conv; > > >> > >> > > >> > >> @Produces > > >> > >> @Dependent > > >> > >> @Named("conv") > > >> > >> public Conversation getConv() { > > >> > >> return conv; > > >> > >> } > > >> > >> } > > >> > >> > > >> > >> But it gives the following error: > > >> > >> > > >> > >> Caused by: > > > javax.enterprise.inject.UnsatisfiedResolutionException: > > >> Api > > >> > >> type [javax.enterprise.context.Conversation] is not found > > > with the > > >> > >> qualifiers > > >> > >> Qualifiers: > > > [@javax.inject.Named(value=javax.enterprise.context. > > >> > >> conversation)] > > >> > >> for injection into Field Injection Point, field name : > > > conv, Bean > > >> > Owner : > > >> > >> [ConversationWrapper, WebBeansType:MANAGED, Name:null, API > > >> > >> Types:[eg.ConversationWrapper,java.lang.Object], > > >> > >> Qualifiers:[javax.enterprise.inject.Default,javax. > > >> > enterprise.inject.Any]] > > >> > >> > > >> > >> > > >> > >> > > >> > >> > > >> > >> From: Xavier Dury <[email protected]> > > >> > >> Sent: Wednesday, September 28, 2016 11:34 PM > > >> > >> To: [email protected] > > >> > >> Subject: Re: OpenEJB and EL > > >> > >> > > >> > >> Got the same result with 'conv': > > >> > >> > > >> > >> Caused by: > > > javax.enterprise.inject.AmbiguousResolutionException: > > >> > There is > > >> > >> more than one Bean with type > > >> > > javax.enterprise.context.ConversationQualifiers: > > >> > >> [@javax.enterprise.inject.Default()] > > >> > >> for injection into Field Injection Point, field name : > > > conversation, > > >> > Bean > > >> > >> Owner : [ConversationAliaser, WebBeansType:MANAGED, > > > Name:null, API > > >> > >> Types:[java.lang.Object,eg.ConversationAliaser], > > >> > >> Qualifiers:[javax.enterprise.inject.Default,javax. > > >> > enterprise.inject.Any]] > > >> > >> found beans: > > >> > >> Conversation, WebBeansType:PRODUCERMETHOD, Name:conv, API > > >> > >> > > > Types:[java.lang.Object,javax.enterprise.context.Conversation], > > >> > >> Qualifiers:[javax.enterprise.inject.Default,javax. > > >> > >> enterprise.inject.Any,javax.inject.Named] from > > > file:/D:/development/ > > >> > >> workspaces/openejb-el/target/test-classes/eg/ > > >> ConversationWrapper.class > > >> > >> ConversationImpl, WebBeansType:CONVERSATION, > > >> > > Name:javax.enterprise.context.conversation, > > >> > >> API > > > Types:[org.apache.webbeans.conversation.ConversationImpl, > > >> > >> javax.enterprise.context.Conversation,java.lang.Object], > > >> > >> Qualifiers:[javax.enterprise.inject.Default,javax. > > >> > enterprise.inject.Any] > > >> > >> from jar:file:/C:/Users/xavier/.m2/repository/org/apache/ > > >> > >> openwebbeans/openwebbeans-impl/1.6.3/openwebbeans-impl- > > >> > >> > > > 1.6.3.jar!/org/apache/webbeans/conversation/ConversationImpl.class > > >> > >> > > >> > >> > > >> > >> > > >> > >> > > >> > >> > > >> > >> > > >> > >> > > >> > >> From: Romain Manni-Bucau <[email protected]> > > >> > >> Sent: Wednesday, September 28, 2016 11:29 PM > > >> > >> To: [email protected] > > >> > >> Cc: Mark Struberg > > >> > >> Subject: Re: OpenEJB and EL > > >> > >> > > >> > >> missing @Named("conv")? > > >> > >> > > >> > >> > > >> > >> Romain Manni-Bucau > > >> > >> @rmannibucau <https://twitter.com/rmannibucau> | Blog > > >> > >> > > >> > >> > > >> > >> > > >> > >> Romain Manni-Bucau (@rmannibucau) | Twitter > > >> > >> twitter.com > > >> > >> The latest Tweets from Romain Manni-Bucau (@rmannibucau). > > > ASF / > > >> > Java(EE) / > > >> > >> Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: > > >> > >> https://t.co/0VnvWwbedt . Blog ... > > >> > >> > > >> > >> > > >> > >> > > >> > >> Romain Manni-Bucau (@rmannibucau) | Twitter > > >> > >> twitter.com > > >> > >> The latest Tweets from Romain Manni-Bucau (@rmannibucau). > > > ASF / > > >> > Java(EE) / > > >> > >> Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: > > >> > >> https://t.co/0VnvWwbedt . Blog ... > > >> > >> <https://blog-rmannibucau.rhcloud.com> | Old Wordpress > > > Blog > > >> > >> > > >> > >> > > >> > >> RBlog: the RManniBucau v2 Blog > > >> > >> blog-rmannibucau.rhcloud.com > > >> > >> RBlog: Romain Manni-Bucau Blog about Java, JavaEE, TomEE, > > > Angular, > > >> Open > > >> > >> Source, Code and geeky topics... > > >> > >> <http://rmannibucau.wordpress.com> | Github > > > <https://github.com/ > > >> > >> rmannibucau> | > > >> > >> > > >> > >> > > >> > >> [old blog] new RManniBucau().blog() > > >> > >> rmannibucau.wordpress.com > > >> > >> New blog on: https://blog-rmannibucau.rhcloud.com/ > > >> > >> LinkedIn <https://www.linkedin.com/in/rmannibucau> | > > > Tomitriber > > >> > >> <http://www.tomitribe.com> | JavaEE Factory > > >> > >> <https://javaeefactory-rmannibucau.rhcloud.com> > > >> > >> > > >> > >> 2016-09-28 23:27 GMT+02:00 Xavier Dury > > > <[email protected]>: > > >> > >> > > >> > >> > > > >> > >> > Caused by: > > > javax.enterprise.inject.AmbiguousResolutionException: > > >> > There > > >> > >> is > > >> > >> > more than one Bean with type javax.enterprise.context. > > >> > >> ConversationQualifiers: > > >> > >> > [@javax.enterprise.inject.Default()] > > >> > >> > for injection into Field Injection Point, field name : > > >> conversation, > > >> > >> Bean > > >> > >> > Owner : [ConversationAliaser, WebBeansType:MANAGED, > > > Name:null, API > > >> > >> > Types:[eg.ConversationAliaser,java.lang.Object], > > >> > >> > Qualifiers:[javax.enterprise.inject.Default,javax. > > >> > >> enterprise.inject.Any]] > > >> > >> > found beans: > > >> > >> > Conversation, WebBeansType:PRODUCERMETHOD, > > > Name:conversation, API > > >> > >> > > > > Types:[javax.enterprise.context.Conversation,java.lang.Object], > > >> > >> > Qualifiers:[javax.enterprise.inject.Default,javax. > > >> > >> > enterprise.inject.Any,javax.inject.Named] from > > >> file:/D:/development/ > > >> > >> > workspaces/openejb-el/target/test-classes/eg/ > > >> > ConversationWrapper.class > > >> > >> > ConversationImpl, WebBeansType:CONVERSATION, > > >> > >> Name:javax.enterprise.context.conversation, > > >> > >> > API > > > Types:[org.apache.webbeans.conversation.ConversationImpl, > > >> > >> > > > > javax.enterprise.context.Conversation,java.lang.Object], > > >> > >> > > > >> > > Qualifiers:[javax.enterprise.inject.Default,javax. > > >> enterprise.inject.Any] > > >> > >> > from > > > jar:file:/C:/Users/xavier/.m2/repository/org/apache/ > > >> > >> > openwebbeans/openwebbeans-impl/1.6.3/openwebbeans-impl- > > >> > >> > > > > 1.6.3.jar!/org/apache/webbeans/conversation/ConversationImpl.class > > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > From: Mark Struberg <[email protected]> > > >> > >> > Sent: Wednesday, September 28, 2016 11:20 PM > > >> > >> > To: [email protected] > > >> > >> > Subject: Re: OpenEJB and EL > > >> > >> > > > >> > >> > +1 > > >> > >> > > > >> > >> > means > > >> > >> > > > >> > >> > @RequestScoped > > >> > >> > > > >> > >> > public class ConversationWrapper { > > >> > >> > private @Inject Conversation conv; > > >> > >> > > > >> > >> > @Produces > > >> > >> > @Dependent > > >> > >> > @Named("conv") > > >> > >> > > > >> > >> > public Conversation getConv() { > > >> > >> > return conv; > > >> > >> > } > > >> > >> > } > > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > On Wednesday, 28 September 2016, 23:10, Romain > > > Manni-Bucau < > > >> > >> > [email protected]> wrote: > > >> > >> > > > >> > >> > > > >> > >> > > > > >> > >> > > > > >> > >> > >a producer allows to get a shorter/more elegant > > > naming like > > >> > > #{conv.id} > > >> > >> > if you @Produces @Named("conv") ;) > > >> > >> > > > > >> > >> > > > > >> > >> > > > > >> > >> > >Romain Manni-Bucau > > >> > >> > >@rmannibucau | Blog | Old Wordpress Blog | Github > > > | LinkedIn | > > >> > >> > Tomitriber | JavaEE Factory > > >> > >> > > > > >> > >> > >2016-09-28 23:01 GMT+02:00 Mark Struberg > > >> > > <[email protected]>: > > >> > >> > > > > >> > >> > >Oh boy, sorry for you. You did hit a blank spot in > > > the CDI spec. > > >> > >> > >> > > >> > >> > >>Problem is that the EE umbrella spec, the EL > > > spec and the CDI > > >> > > spec > > >> > >> > contradict each other. > > >> > >> > >> > > >> > >> > >>The Weld guys solved this by introducing a > > > Javax class. But > > >> > > that takes > > >> > >> > away the whole javax.* tree for the EL. That's just > > > not good as it > > >> > >> > contradicts the EL spec. > > >> > >> > >> > > >> > >> > >>Could you please try the following > > >> > >> > >> > > >> > >> > >>@RequestScoped > > >> > >> > >>@Named("conversation") > > >> > >> > >>public class ConversationWrapper { > > >> > >> > >> private @Inject Conversation conv; > > >> > >> > >> > > >> > >> > >> public Conversation get() { > > >> > >> > >> return conv; > > >> > >> > >> } > > >> > >> > >>} > > >> > >> > >> > > >> > >> > >>And in the EL just use > > > #{conversation.get.id} > > >> > >> > >> > > >> > >> > >>LieGrue, > > >> > >> > >>strub > > >> > >> > >> > > >> > >> > >> > > >> > >> > >> > > >> > >> > >> > > >> > >> > >> > > >> > >> > >>> On Wednesday, 28 September 2016, 22:12, > > > Xavier Dury < > > >> > >> > [email protected]> wrote: > > >> > >> > >>> > I really don't understand how > > > something like > > >> > > <f:param > > >> > >> > >>> name="cid" > > >> > >> > >>> value="#{javax.enterprise. > > >> > > context.conversation.id}"/> actually > > >> > >> > >>> works... something must be made to make > > > the EL processor > > >> > > accept that > > >> > >> > invalid > > >> > >> > >>> bean name. > > >> > >> > >>> > > >> > >> > >>> Making a producer which @Produces @Named > > > Conversation > > >> > > conflicts with > > >> > >> > the > > >> > >> > >>> built-in bean from OWB (with > > > WebBeanType.CONVERSATION)... > > >> > >> > >>> > > >> > >> > >>> ... so, I have done the following for my > > > tests but I feel > > >> > > a bit > > >> > >> > ashamed because > > >> > >> > >>> I can't imagine there is no better > > > solution than this > > >> > > ;-) > > >> > >> > >>> > > >> > >> > >>> public class ConversationAliaser { > > >> > >> > >>> public class Javax { > > >> > >> > >>> public Enterprise getEnterprise() > > > {return > > >> > > new Enterprise();} > > >> > >> > >>> > > >> > >> > >>> } > > >> > >> > >>> public class Enterprise { > > >> > >> > >>> public Context getContext() > > > {return new > > >> > > Context();} > > >> > >> > >>> } > > >> > >> > >>> public class Context { > > >> > >> > >>> public Conversation > > > getConversation() > > >> > > {return conversation;} > > >> > >> > >>> > > >> > >> > >>> } > > >> > >> > >>> @Inject > > >> > >> > >>> private Conversation conversation; > > >> > >> > >>> @Produces @ApplicationScoped > > >> > > @Named("javax") > > >> > >> > >>> public Javax javax() {return new > > > Javax();} > > >> > >> > >>> } > > >> > >> > >>> > > >> > >> > >>> But that works! > > >> > >> > >>> > > >> > >> > >>> Xavier > > >> > >> > >>> > > >> > >> > >>> > > >> > >> > >>> > > >> > >> > >>> From: Xavier Dury > > > <[email protected]> > > >> > >> > >>> Sent: Wednesday, September 28, 2016 8:42 > > > PM > > >> > >> > >>> To: [email protected] > > >> > >> > >>> Subject: Re: OpenEJB and EL > > >> > >> > >>> > > >> > >> > >>> Hmmm... I guess I'll have to @Produces > > > @Named the > > >> > > conversation if I > > >> > >> > want to > > >> > >> > >>> use it in ELs. I don't know if > > > something like > > >> > >> > >>> #{applicationScope['javax. > > > enterprise.context. > > >> > >> > conversation'].transient} > > >> > >> > >>> would work? > > >> > >> > >>> > > >> > >> > >>> I remember back in my JSP days that, > > > sometimes, I had to > > >> > > use > > >> > >> something > > >> > >> > like > > >> > >> > >>> ${requestScope['javax.servlet. > > >> > > forward.request_uri']} instead of > > >> > >> > >>> plain ${javax.servlet.forward. > > > request_uri}. > > >> > >> > >>> > > >> > >> > >>> Xavier > > >> > >> > >>> > > >> > >> > >>> > > >> > >> > >>> From: Romain Manni-Bucau > > > <[email protected]> > > >> > >> > >>> Sent: Wednesday, September 28, 2016 6:54 > > > PM > > >> > >> > >>> To: [email protected] > > >> > >> > >>> Subject: Re: OpenEJB and EL > > >> > >> > >>> > > >> > >> > >>> hmm, wonder if it is linked to the value > > > you try to > > >> > > evaluate (which > > >> > >> > doesn't > > >> > >> > >>> respect EL spec even if in CDI spec - > > > don't ask > > >> > > please ;)).. See > > >> > >> > >>> https://issues.jboss.org/ > > > browse/CDITCK-462 / > > >> > >> > > > >> > >> > > > >> > >> > System Dashboard - JBoss Issue Tracker > > >> > >> > issues.jboss.org > > >> > >> > Atlassian JIRA Project Management Software > > >> > > (v6.4.11#64026-sha1:78f6ec4) > > >> > >> > About JIRA; Report a problem; Powered by a free > > > Atlassian JIRA open > > >> > >> source > > >> > >> > license for Red Hat ... > > >> > >> > >>> http://lists.jboss.org/ > > > pipermail/cdi-dev/2015- > > >> > > January/006009.html > > >> > >> > > > >> > >> > > > >> > >> > lists.jboss.org Mailing Lists > > >> > >> > lists.jboss.org > > >> > >> > lists.jboss.org Mailing Lists: Welcome! Below is a > > > listing of all > > >> > the > > >> > >> > public mailing lists on lists.jboss.org. Click on a > > > list name to > > >> get > > >> > >> more > > >> > >> > information ... > > >> > >> > >>> > > >> > >> > >>> > > >> > >> > >>> > > >> > >> > >>> > > >> > >> > >>> Romain Manni-Bucau > > >> > >> > >>> @rmannibucau <https://twitter.com/ > > > rmannibucau> | > > >> > > Blog > > >> > >> > >>> > > >> > >> > >>> > > >> > >> > >>> > > >> > >> > >>> Romain Manni-Bucau (@rmannibucau) | > > > Twitter > > >> > >> > >>> twitter.com > > >> > >> > >>> The latest Tweets from Romain Manni-Bucau > > > (@rmannibucau). > > >> > > ASF / > > >> > >> > Java(EE) / > > >> > >> > >>> Angular. LinkedIn: > > > https://t.co/dX7XMGjbBi. JavaEE > > >> > > Factory: > > >> > >> > >>> https://t.co/0VnvWwbedt . Blog ... > > >> > >> > >>> <https://blog-rmannibucau. > > > rhcloud.com> | Old > > >> > > Wordpress Blog > > >> > >> > >>> <http://rmannibucau.wordpress. com> > > > | Github > > >> > >> > >>> <https://github.com/ rmannibucau> | > > >> > >> > >>> LinkedIn <https://www.linkedin.com/in/ > > > rmannibucau> > > >> > > | Tomitriber > > >> > >> > >>> <http://www.tomitribe.com> | JavaEE > > > Factory > > >> > >> > >>> <https://javaeefactory- > > > rmannibucau.rhcloud.com> > > >> > >> > >>> > > >> > >> > >>> 2016-09-28 18:17 GMT+02:00 Xavier Dury > > >> > > <[email protected]>: > > >> > >> > >>> > > >> > >> > >>>> Hi Romain, > > >> > >> > >>>> > > >> > >> > >>>> I tried with > > > org.apache.tomcat:tomcat- > > >> > > jasper-el:8.5.5 but it does > > >> > >> > not > > >> > >> > >>>> parse my expression until I change > > >> > > ".transient" by > > >> > >> > >>> ".isTransient()" and > > >> > >> > >>>> then it gives the same error: > > > javax.el. > > >> > > PropertyNotFoundException: > > >> > >> > >>>> ELResolver cannot handle a null base > > > Object with > > >> > > identifier > > >> > >> > >>> 'javax'. > > >> > >> > >>>> > > >> > >> > >>>> Does the EL context need something > > > else than adding > > >> > > the > > >> > >> > >>>> BeanManager.getELResolver() to be > > > able to resolve > > >> > > some implicit > > >> > >> > objects? I > > >> > >> > >>>> don't understand why it works > > > with ri-1.0. > > >> > >> > >>>> > > >> > >> > >>>> Xavier > > >> > >> > >>>> > > >> > >> > >>>> > > >> > >> > >>>> From: Romain Manni-Bucau > > >> > > <[email protected]> > > >> > >> > >>>> Sent: Wednesday, September 28, 2016 > > > 4:02 PM > > >> > >> > >>>> To: [email protected] > > >> > >> > >>>> Subject: Re: OpenEJB and EL > > >> > >> > >>>> > > >> > >> > >>>> Hi Xavier > > >> > >> > >>>> > > >> > >> > >>>> On the phone so hard to give you a > > > link bit try > > >> > > using tomcat el > > >> > >> impl > > >> > >> > of > > >> > >> > >>>> tomcat 8.5 > > >> > >> > >>>> > > >> > >> > >>>> Le 28 sept. 2016 15:29, "Xavier > > > Dury" > > >> > > <[email protected]> > > >> > >> > >>> a écrit : > > >> > >> > >>>> > > >> > >> > >>>> > Hi, > > >> > >> > >>>> > > > >> > >> > >>>> > I am using OpenEJB for my tests > > > and need > > >> > > support for EL > > >> > >> > expressions in > > >> > >> > >>> my > > >> > >> > >>>> > own code. > > >> > >> > >>>> > > > >> > >> > >>>> > By default, if I do something > > > like this (pay > > >> > > attention to the > > >> > >> > >>>> expression): > > >> > >> > >>>> > > > >> > >> > >>>> > ExpressionFactory factory = > > > beanManager. > > >> > > wrapExpressionFactory( > > >> > >> > >>>> > ExpressionFactory.newInstance( > > > )); > > >> > >> > >>>> > StandardELContext elContext = > > > new > > >> > > StandardELContext(factory); > > >> > >> > >>>> > elContext.addELResolver( > > >> > > beanManager.getELResolver()); > > >> > >> > >>>> > ValueExpression expression = > > >> > > factory.createValueExpression( > > >> > >> > elContext, > > >> > >> > >>>> > > > > "#{javax.enterprise.context. > > >> > > conversation.transient}", > > >> > >> > >>> Boolean.class); > > >> > >> > >>>> > expression.getValue(elContext) ; > > >> > >> > >>>> > > > >> > >> > >>>> > and only add > > > org.apache.tomee:openejb-core: > > >> > > 7.0.1 to my project > > >> > >> > then I > > >> > >> > >>>> get > > >> > >> > >>>> > javax.el.ELException: Unable to > > > find > > >> > > ExpressionFactory of type: > > >> > >> > >>>> > org.apache.el. > > > ExpressionFactoryImpl > > >> > >> > >>>> > > > >> > >> > >>>> > if I add > > > org.glassfish:javax.el:3.0.0 then I > > >> > > get javax.el. > > >> > >> > >>>> PropertyNotFoundException: > > >> > >> > >>>> > ELResolver cannot handle a null > > > base Object > > >> > > with identifier > > >> > >> > >>> 'javax' > > >> > >> > >>>> > > > >> > >> > >>>> > if I switch the EL library to > > >> > > com.sun.el:el-ri:1.0 (+ > > >> > >> > >>> META-INF/javax.el. > > >> > >> > >>>> ExpressionFactory > > >> > >> > >>>> > < com.sun.el. > > > ExpressionFactoryImpl) then my > > >> > > expression can be > > >> > >> > >>> evaluated > > >> > >> > >>>> > but I can't use any new > > > feature of 3.0 > > >> > > (like lambdas) > > >> > >> > >>>> > > > >> > >> > >>>> > So, either my dependencies are > > > wrong or I am > > >> > > not correctly > > >> > >> > >>> initializing > > >> > >> > >>>> my > > >> > >> > >>>> > factory. > > >> > >> > >>>> > > > >> > >> > >>>> > Does anybody have an idea? > > >> > >> > >>>> > > > >> > >> > >>>> > Thanks, > > >> > >> > >>>> > > > >> > >> > >>>> > Xavier > > >> > >> > >>>> > > >> > >> > >>>> > > >> > >> > >>> > > >> > >> > >> > > >> > >> > > > > >> > >> > > > > >> > >> > > > > >> > >> > > > >> > >> > > > >> > >> > > >> > >> > > >> > > > > >> > > > >> > > > >> > > >> > > > > > > > > >
