Well, in EL dots are actually explicitly forbidden. Or in other words: they are 
reserved to separate the 'layers'.


We discussed about escaping in the CDI and Servlet Expert Groups and you might 
google it if you are prepared for some serious headache ;)

LieGrue,
strub




> On Wednesday, 28 September 2016, 23:19, Xavier Dury <[email protected]> 
> wrote:
> > @Romain:
> 
> thanks for the  piece of code, this is indeed pure hackiness ;-)
> I can live with  '.isTransient()' instead of '.transient' so I 
> won't need to disable the identifier check I guess.
> I tried the @Produces @Named but it gave some conflict errors with the OWB 
> built-in conversation bean.
> 
> @Mark:
> 
> thanks, I will try the wrapper way.
> 
> I hope a future revision for EL will allow to escape names (spring-el does it 
> like #{@'bean.name'.property})
> 
> Xavier
> 
> 
> From: Romain Manni-Bucau <[email protected]>
> Sent: Wednesday, September 28, 2016 11:10 PM
> To: [email protected]; Mark Struberg
> Subject: Re: OpenEJB and EL
>    
> a producer allows to get a shorter/more elegant naming like #{conv.id} if
> you @Produces @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 ...
> <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> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>
> 
> 
> 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 /
>>  > http://lists.jboss.org/pipermail/cdi-dev/2015-January/006009.html
>>  >
>>  >
>>  >
>>  >
>>  > 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