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 <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 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 > >> > >> > >>>> > >> > >> > >>>> > >> > >> > >>> > >> > >> > >> > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > > >> > >> > > >> > >> > >> > >> > >> > > > >> > > >> > > >> > >> > > > >
