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