<html><body><div style="color:#000; background-color:#fff; font-family:Helvetica Neue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif;font-size:8pt"><div id="yiv9198013611"><div><div style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-family: 'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 8pt;"><div id="yiv9198013611yui_3_16_0_7_1402329386399_4"><span id="yiv9198013611yui_3_16_0_7_1402329386399_13">And here we go doing a full cycle back to my initial statement.</span></div><div id="yiv9198013611yui_3_16_0_7_1402329386399_4" style="color: rgb(0, 0, 0); font-size: 11px; font-family: 'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><span id="yiv9198013611yui_3_16_0_7_1402329386399_16"><br
clear="none"></span></div><div id="yiv9198013611yui_3_16_0_7_1402329386399_4" style="color: rgb(0, 0, 0); font-size: 11px; font-family: 'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><span id="yiv9198013611yui_3_16_0_7_1402329386399_19">From what I (and Pete as well) do remember, the reason for 4.3.1 is that it should behave different to what Jozef says. </span></div><div id="yiv9198013611yui_3_16_0_7_1402329386399_4" style="color: rgb(0, 0, 0); font-size: 11px; font-family: 'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><span id="yiv9198013611yui_3_16_0_7_1402329386399_23">4.3.1 is not unnecessary bollocks but is worded that way because the 'intermediate' specialized bean is INTENTIONALLY left out of the
equation.</span></div><div id="yiv9198013611yui_3_16_0_7_1402329386399_4" style="color:rgb(0, 0, 0);font-size:11px;font-family:'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;background-color:transparent;font-style:normal;" class="yui_3_16_0_1_1402578222555_28287"><span>This is why it is NOT unnecessary but indeed NEEDED and totally makes sense. </span></div><div id="yiv9198013611yui_3_16_0_7_1402329386399_4" style="color:rgb(0, 0, 0);font-size:11px;font-family:'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;background-color:transparent;font-style:normal;" class="yui_3_16_0_1_1402578222555_28287"><span><br></span></div><div id="yiv9198013611yui_3_16_0_7_1402329386399_4" style="color:rgb(0, 0, 0);font-size:11px;font-family:'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande',
sans-serif;background-color:transparent;font-style:normal;" class="yui_3_16_0_1_1402578222555_28287"><span>And if you look at Weld 1.x then you will see that old Weld versions did EXACTLY work that way as well. </span></div><div id="yiv9198013611yui_3_16_0_7_1402329386399_4" style="color: rgb(0, 0, 0); font-size: 11px; font-family: 'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><span id="yiv9198013611yui_3_16_0_7_1402329386399_27"><br clear="none" id="yiv9198013611yui_3_16_0_1_1402329386399_59183"></span></div><div id="yiv9198013611yui_3_16_0_7_1402329386399_4" style="color: rgb(0, 0, 0); font-size: 11px; font-family: 'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">LieGrue,</div><div
id="yiv9198013611yui_3_16_0_7_1402329386399_4" style="color: rgb(0, 0, 0); font-size: 11px; font-family: 'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">strub</div> <div class="qtdSeparateBR"><br><br></div><div class="yiv9198013611yqt4913893428" id="yiv9198013611yqt85607"><div class="yiv9198013611yahoo_quoted" id="yiv9198013611yui_3_16_0_7_1402329386399_7" style="display: block;"> <div class="yiv9198013611yui_3_16_0_1_1402329386399_59111" style="font-family: 'Helvetica Neue-Light', 'Helvetica Neue Light', 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 8pt;"> <div class="yiv9198013611yui_3_16_0_1_1402329386399_59112" style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12pt;"> <div dir="ltr"> <font size="2" face="Arial"> On Tuesday, 10 June 2014, 12:39,
Matus Abaffy <maabaffy@redhat.com> wrote:<br clear="none"> </font> </div> <blockquote style="border-left:2px solid rgb(16, 16, 255);margin-left:5px;margin-top:5px;padding-left:5px;"> <br clear="none"><br clear="none"> <div class="yiv9198013611y_msg_container"><br clear="none">----- Original Message -----<br clear="none">> From: "Jozef Hartinger" <<a rel="nofollow" shape="rect" ymailto="mailto:jharting@redhat.com" target="_blank" href="mailto:jharting@redhat.com">jharting@redhat.com</a>><br clear="none">> To: "Matus Abaffy" <<a rel="nofollow" shape="rect" ymailto="mailto:maabaffy@redhat.com" target="_blank" href="mailto:maabaffy@redhat.com">maabaffy@redhat.com</a>>, "Mark Struberg" <<a rel="nofollow" shape="rect" ymailto="mailto:struberg@yahoo.de" target="_blank" href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>><br clear="none">> Cc: <a rel="nofollow" shape="rect" ymailto="mailto:cdi-dev@lists.jboss.org"
target="_blank" href="mailto:cdi-dev@lists.jboss.org">cdi-dev@lists.jboss.org</a><br clear="none">> Sent: Friday, June 6, 2014 10:17:31 AM<br clear="none">> Subject: Re: [cdi-dev] Challenge TCK test for indirect specialization rules<br clear="none">> <br clear="none">> <br clear="none">> On 06/03/2014 11:48 AM, Matus Abaffy wrote:<br clear="none">> > If the intention was not to ignore the beans in-between, then the rule for<br clear="none">> > indirect specialization seems quite redundant to me.<br clear="none">> <br clear="none">> The way indirect specialization is defined in the spec is equivalent to<br clear="none">> saying that "specialization" relation is transitive. Having<br clear="none">> <br clear="none">> A specializes B<br clear="none">> and<br clear="none">> B specializes C<br clear="none">> <br clear="none">> that means that also<br clear="none">> "A specializes C"<br
clear="none">> holds true.<br clear="none">> <br clear="none">> I agree that when looking at qualifiers and name only, this "A<br clear="none">> specializes C" relation may seem redundant. Relations "A specializes B"<br clear="none">> and "B specializes C" themselves guarantee<br clear="none">> that B contains all the qualifiers of C, A contains all the qualifiers<br clear="none">> of B (and thus also those from C).<br clear="none">> <br clear="none">> However, there are other parts of the specification for which the fact<br clear="none">> that both "A specializes B" and "A specializes C" hold true is<br clear="none">> important.<br clear="none"><br clear="none">Yes, of course, I am aware of these. I kind of misexpressed myself.<br clear="none">What I wanted to say is that the indirect specialization is redundantly<br clear="none">contained in "Then X will inherit the qualifiers and bean name of Y:".<br clear="none">I
think the following suffices:<br clear="none">'If X directly specializes Y, then X will inherit the qualifiers and bean name of Y:'<div class="yiv9198013611yqt4945996001" id="yiv9198013611yqtfd65596"><br clear="none"><br clear="none">>For example, take section 5.1.2.<br clear="none">> It says:<br clear="none">> <br clear="none">> "A bean is said to be enabled if it is not specialized by any other<br clear="none">> enabled bean".<br clear="none">> <br clear="none">> Now it makes a difference whether we consider specialization transitive<br clear="none">> (A specializes C relation exists) or not as it influences whether C ends<br clear="none">> up being enabled or not.<br clear="none">> <br clear="none">> Transitive case:<br clear="none">> Both B and C are specialized by A and thus only A remains enabled.<br clear="none">> <br clear="none">> Non-transitive case:<br clear="none">> A is enabled. B is specialized
by A this B is not enabled. C is only<br clear="none">>
specialized by B, which is *not enabled* thus C remains enabled. Now<br clear="none">> having both A and C enabled at the same time is clearly wrong and goes<br clear="none">> against the whole purpose of specialization. Instead of replacing C with<br clear="none">> A we end up we both beans enabled.<br clear="none">> <br clear="none">> I think there is no doubt now that non-transitive specialization does<br clear="none">> not fit the CDI spec. In addition, I hope this makes it clear why<br clear="none">> transitivity of specialization is not redundant.<br clear="none">> <br clear="none">> Jozef<br clear="none">> <br clear="none"></div><br clear="none"><br clear="none"></div> </blockquote> </div> </div> </div></div> </div></div></div></div></body></html>