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

Reply via email to