Hi!
I'm still not sure whether this feature (basically having CDI to introduce own EL
namespaces) is really useful. In any case it was a badly advertised if not to say well
hidden one.
Otoh if this really IS a feature and the name of our Conversation is not just a special
exception then I am ok with implementing this IF we come to the conclusion that it is
really ok with the other specs.
Basically we somehow ditch the rest of the whole ELResolver mechanism and
'overrule' it that way.
The overall issue is that we can only detect naming conflicts inside CDI but have no
chance to see whether an other ELResolver already occupies that namespace. I'm not
sure if the EL EG is aware of what we do with that. This is really a highlander [1]
approach, we don't let others air to breath that way. Of course it technically seems
legit and also covered by the CDI spec - and it is not up to me alone to decide whether we
like to do that or not.
LieGrue,
strub
[1]
On Friday, 16 January 2015, 8:11, Jozef Hartinger
<jharting(a)redhat.com> wrote:
> OK, the relevant part goes:
"If the bean name of one bean is of the form x.y, where y is a valid
bean name, and x is the bean name of the other bean,
the container automatically detects the problem and treats it as a
deployment problem."
Let's have:
@Named("team1.superBean.enriched") class Bean1
@Named("team1.superBean") class Bean2
Now
1) "If the bean name of one bean is of the form x.y"
We can match the "x.y" pattern on Bean1's name as:
(team1.superBean) . (enriched)
thus:
x = team1.superBean
y = enriched
2) "where y is a valid bean name"
"enriched" is indeed a valid bean name
3) "and x is the bean name of the other bean"
x ("team1.superBean") is at the same time the name of Bean2
4) Therefore, "the container automatically detects the problem and
treats it as a deployment problem".
Therefore, this scenario does not become a conflict at runtime.
HTH,
Jozef
On 01/15/2015 02:44 PM, Romain Manni-Bucau wrote:
> @Jozef: can you quote it please - sorry if it is obvious but I dont
> see it in 5.3.1, I look 1.2 version BTW. It only deals with names
> where or CDI where here we conflict between resolvers.
>
>
> Romain Manni-Bucau
> @rmannibucau
>
http://www.tomitribe.com
>
http://rmannibucau.wordpress.com
>
https://github.com/rmannibucau
>
>
> 2015-01-15 12:59 GMT+01:00 Jozef Hartinger <jharting(a)redhat.com>:
>> On 01/15/2015 11:35 AM, Romain Manni-Bucau wrote:
>>>>> @Named("team1.superBean") and
@Named("team1.superBean.enriched") will
>>>>> lead to conflicts and that's things I saw several times
in spring apps
>>>>> which are clearly not possible using CDI + EL properly.
>>>> Yes and these conflicts are handled by the spec. See 5.3.1
>>>>
>>> Hmm not sure. If enriched is a property of the first bean then spec
>>> doesn't help.
>> The spec deals with exactly these types of cases in 5.3.1
>>
>>>>>
>>>>> Romain Manni-Bucau
>>>>> @rmannibucau
>>>>>
http://www.tomitribe.com
>>>>>
http://rmannibucau.wordpress.com
>>>>>
https://github.com/rmannibucau
>>>>>
>>>>>
>>>>> 2015-01-15 11:22 GMT+01:00 Jozef Hartinger
<jharting(a)redhat.com>:
>>>>>> On 01/15/2015 11:11 AM, Mark Struberg wrote:
>>>>>>> Jozef, your argumentation is flawed already at the
very beginning.
>>>>>>> Currently there is no bean with the name
"javax", thus "x.y ... and x
>>>>>>> is
>>>>>>> the
>>>>>>> bean name of the other bean" will not be a
problem.
>>>>>>>
>>>>>>> All that javax is simply not a bean name but a
dirty hack in the
>>>>>>> ELResolver. That is something totally different.
>>>>>> Mark, please read the e-mail again. I am not saying
there are two beans
>>>>>> named "javax". I am saying there are two
beans with the following
>>>>>> names:
>>>>>>
>>>>>> - javax.enterprise.context.conversation (the built-in
one)
>>>>>> - javax (Marks's bean)
>>>>>>
>>>>>> where the former one is in form x.y where y is a valid
bean name:
>>>>>> (javax) . (enterprise.context.conversation)
>>>>>>
>>>>>> and thus since javax is both x above and a bean name of
Mark's bean,
>>>>>> this
>>>>>> results in an exception.
>>>>>>
>>>>>>
>>>>>>> Thus the rest of your argumentation chain is also
invalid.
>>>>>>>
>>>>>>> LieGrue,
>>>>>>> strub
>>>>>>>
>>>>>>>
>>>>>>>> On Thursday, 15 January 2015, 10:47, Jozef
Hartinger
>>>>>>>> <jharting(a)redhat.com> wrote:
>>>>>>>>> T he @Named("javax") argument is
not valid. The spec says:
>>>>>>>> Suppose two beans are both available for
injection in a certain war,
>>>>>>>> and
>>>>>>>> either:
>>>>>>>> - the two beans have the same bean name and the
name is not
>>>>>>>> resolvable,
>>>>>>>> or
>>>>>>>> - the bean name of one bean is of the form x.y,
where y is a valid
>>>>>>>> bean
>>>>>>>> name, and x is the bean
>>>>>>>> name of the other bean,
>>>>>>>> the container automatically detects the problem
and treats it as a
>>>>>>>> deployment problem.
>>>>>>>>
>>>>>>>> So we have two beans:
>>>>>>>> - javax.enterprise.context.conversation (the
built-in one)
>>>>>>>> - javax (Marks's bean)
>>>>>>>>
>>>>>>>> now:
>>>>>>>>
>>>>>>>> 1) the bean name of one bean is of the form
x.y, where y is a valid
>>>>>>>> bean
>>>>>>>> name - that is
javax.enterprise.context.conversation
>>>>>>>> x = javax
>>>>>>>> y = enterprise.context.conversation
>>>>>>>> 2) and x is the bean name of the other bean -
same as the name of
>>>>>>>> Mark's
>>>>>>>> @Named("javax") bean
>>>>>>>> 3) the container automatically detects the
problem and treats it as a
>>>>>>>> deployment problem
>>>>>>>>
>>>>>>>> Therefore, a bean named
@Named("javax") will cause a deployment
>>>>>>>> problem
>>>>>>>> no matter whether it is actually available via
EL or not.
>>>>>>>>
>>>>>>>> To summarize, the spec already anticipates the
problem and forbids
>>>>>>>> this
>>>>>>>> case explicitly.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On 01/14/2015 04:45 PM, Mark Struberg wrote:
>>>>>>>>> And then break all applications which
have a @Named("javax")
>>>>>>>> public class MyBean?
>>>>>>>>> It's simply not an option imo. It
breaks lots of other specs and
>>>>>>>> features. This is an XOR situation.
>>>>>>>>>
>>>>>>>>> LieGrue,
>>>>>>>>> strub
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ----- Original Message -----
>>>>>>>>>> From: Pete Muir
<pmuir(a)redhat.com>
>>>>>>>>>> To: Romain Manni-Bucau
<rmannibucau(a)gmail.com>
>>>>>>>>>> Cc: Cdi-dev
<cdi-dev(a)lists.jboss.org>; Edward Burns
>>>>>>>> <edward.burns(a)oracle.com>
>>>>>>>>>> Sent: Wednesday, 14 January 2015,
11:56
>>>>>>>>>> Subject: Re: [cdi-dev] Answer from
EL spec lead: no, "."
>>>>>>>> is not valid in an EL name.
>>>>>>>>>> We need to go for both (A) and
(B).
>>>>>>>>>>
>>>>>>>>>> We would need to deprecate the
existing name before we can
>>>>>>>>>> allow
>>>>>>>>>> it
>>>>>>>>>> to
>>>>>>>> not be
>>>>>>>>>> supported. This means CDI 3. So I
would suggest we deprecate it
>>>>>>>>>> in
>>>>>>>>>> 2,
>>>>>>>> add an
>>>>>>>>>> alternative that can be used, and
then consider removing it in
>>>>>>>>>> CDI
>>>>>>>>>> 3.
>>>>>>>> In the
>>>>>>>>>> meantime for CDI 2, we will need
to improve the TCK to check
>>>>>>>>>> this
>>>>>>>>>> more
>>>>>>>>>> carefully.
>>>>>>>>>>
>>>>>>>>>>> On 14 Jan 2015, at 10:09,
Romain Manni-Bucau
>>>>>>>> <rmannibucau(a)gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>> +1 for B (IMO it is not used
that much)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Romain Manni-Bucau
>>>>>>>>>>> @rmannibucau
>>>>>>>>>>>
http://www.tomitribe.com
>>>>>>>>>>>
http://rmannibucau.wordpress.com
>>>>>>>>>>>
https://github.com/rmannibucau
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 2015-01-14 10:54 GMT+01:00
Jozef Hartinger
>>>>>>>> <jharting(a)redhat.com>:
>>>>>>>>>>>> I think further action
is needed on this. Now that it has
>>>>>>>> been
>>>>>>>>>> confirmed
>>>>>>>>>>>> that
"javax.enterprise.context.conversation" itself
>>>>>>>> is not a
>>>>>>>>>> valid EL
>>>>>>>>>>>> name we should either:
>>>>>>>>>>>>
>>>>>>>>>>>> A) Require all CDI
implementations to adapt the
>>>>>>>> property-based approach
>>>>>>>>>>>> which allows this to be
implemented portably (as Weld does)
>>>>>>>>>>>> B) Declare publicly that
although the CDI spec declares the
>>>>>>>> given name,
>>>>>>>>>>>> it is a bug and
applications should not use the name. (What
>>>>>>>> about
>>>>>>>>>>>> compatibility with
existing applications?)
>>>>>>>>>>>>
>>>>>>>>>>>> Jozef
>>>>>>>>>>>>
>>>>>>>>>>>> On 01/08/2015 09:27 AM,
Mark Struberg wrote:
>>>>>>>>>>>>> Dear CDI fellows!
>>>>>>>>>>>>>
>>>>>>>>>>>>> I've received an
answer regarding our EL question
>>>>>>>> from the EL
>>>>>>>>>> Spec Lead.
>>>>>>>>>>>>> Ed, thanks for
helping us!
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> LieGrue,
>>>>>>>>>>>>> strub
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tuesday, 6
January 2015, 23:14, Edward Burns
>>>>>>>>>> <edward.burns(a)oracle.com>
wrote:
>>>>>>>>>>>>>>> Hello Mark,
>>>>>>>>>>>>>> To close this
out, no, "." is not valid in
>>>>>>>> an EL
>>>>>>>>>> name. An EL name
>>>>>>>>>>>>>> must
>>>>>>>>>>>>>> be a java
identifier. I'm told this was
>>>>>>>> discussed by Pete
>>>>>>>>>> a long time
>>>>>>>>>>>>>> ago in the EL
3.0 EG.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ed
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> |
edward.burns(a)oracle.com | office: +1 407 458 0017
>>>>>>>>>>>>>> | 42 days til
DevNexus 2015
>>>>>>>>>>>>>> | 52 days til
JavaLand 2015
>>>>>>>>>>>>>> | 62 days til
CONFESS 2015
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>>>> cdi-dev mailing list
>>>>>>>>>>>>>
cdi-dev(a)lists.jboss.org
>>>>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>>>>>>>>>>>
>>>>>>>>>>>>> Note that for all
code provided on this list, the
>>>>>>>> provider licenses
>>>>>>>>>> the code under the Apache License,
Version 2
>>>>>>>>>>
(
http://www.apache.org/licenses/LICENSE-2.0.html). For all
>>>>>>>>>> other
>>>>>>>>>> ideas
>>>>>>>> provided
>>>>>>>>>> on this list, the provider waives
all patent and other
>>>>>>>>>> intellectual
>>>>>>>> property
>>>>>>>>>> rights inherent in such
information.
>>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>>> cdi-dev mailing list
>>>>>>>>>>>> cdi-dev(a)lists.jboss.org
>>>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>>>>>>>>>>
>>>>>>>>>>>> Note that for all code
provided on this list, the provider
>>>>>>>> licenses the
>>>>>>>>>> code under the Apache License,
Version 2
>>>>>>>>>>
(
http://www.apache.org/licenses/LICENSE-2.0.html). For all
>>>>>>>>>> other
>>>>>>>>>> ideas
>>>>>>>> provided
>>>>>>>>>> on this list, the provider waives
all patent and other
>>>>>>>>>> intellectual
>>>>>>>> property
>>>>>>>>>> rights inherent in such
information.
>>>>>>>>>>
>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>> cdi-dev mailing list
>>>>>>>>>>> cdi-dev(a)lists.jboss.org
>>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>>>>>>>>>
>>>>>>>>>>> Note that for all code
provided on this list, the provider
>>>>>>>> licenses the
>>>>>>>>>> code under the Apache License,
Version 2
>>>>>>>>>>
(
http://www.apache.org/licenses/LICENSE-2.0.html). For all
>>>>>>>>>> other
>>>>>>>>>> ideas
>>>>>>>> provided
>>>>>>>>>> on this list, the provider waives
all patent and other
>>>>>>>>>> intellectual
>>>>>>>> property
>>>>>>>>>> rights inherent in such
information.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
_______________________________________________
>>>>>>>>>> cdi-dev mailing list
>>>>>>>>>> cdi-dev(a)lists.jboss.org
>>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>>>>>>>>
>>>>>>>>>> Note that for all code provided on
this list, the provider
>>>>>>>>>> licenses
>>>>>>>>>> the
>>>>>>>> code
>>>>>>>>>> under the Apache License, Version
2
>>>>>>>>>>
(
http://www.apache.org/licenses/LICENSE-2.0.html). For all
>>>>>>>>>> other
>>>>>>>>>> ideas
>>>>>>>> provided
>>>>>>>>>> on this list, the provider waives
all patent and other
>>>>>>>>>> intellectual
>>>>>>>> property
>>>>>>>>>> rights inherent in such
information.
>>>>>>>>>>
>>>>>>>>>
_______________________________________________
>>>>>>>>> cdi-dev mailing list
>>>>>>>>> cdi-dev(a)lists.jboss.org
>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>>>>>>>
>>>>>>>>> Note that for all code provided on
this list, the provider
>>>>>>>>> licenses
>>>>>>>>> the
>>>>>>>> code under the Apache License, Version 2
>>>>>>>>
(
http://www.apache.org/licenses/LICENSE-2.0.html). For all other
>>>>>>>> ideas
>>>>>>>> provided
>>>>>>>> on this list, the provider waives all patent
and other intellectual
>>>>>>>> property
>>>>>>>> rights inherent in such information.
>>>>>>>>