<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 class="" style=""><span class="" style="">you are wrong in quite a few ways imo:</span></div><div 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=""><span class="" style=""><br class="" style=""></span></div><div 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=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class="">&gt; Non-transitive case:</span><br clear="none"
 style="font-family: monospace; font-size: 13px;" class=""><span style="font-family: monospace; font-size: 13px;" class="">&gt; A is enabled. B is specialized by A this B is not enabled. C is only&nbsp;</span><br clear="none" style="font-family: monospace; font-size: 13px;" class=""><span style="font-family: monospace; font-size: 13px;" class="">&gt; specialized by B, which is *not enabled* thus C remains enabled. Now&nbsp;</span><br clear="none" style="font-family: monospace; font-size: 13px;" class=""><span style="font-family: monospace; font-size: 13px;" class="">&gt; having both A and C enabled at the same time is clearly wrong and goes&nbsp;</span><br clear="none" style="font-family: monospace; font-size: 13px;" class=""><span style="font-family: monospace; font-size: 13px;" class="">&gt; against the whole purpose of specialization. Instead of replacing C with&nbsp;</span><br clear="none" style="font-family: monospace; font-size: 13px;"
 class=""><span style="font-family: monospace; font-size: 13px;" class="">&gt; A we end up we both beans enabled.</span><br class="" style=""></span></div><div 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=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br class="" style=""></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class="">wrong, A still&nbsp;</span></span>(indirectly)&nbsp;<span style="background-color: transparent;" class="">extends C, thus C is not enabled.</span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family:
 monospace; background-color: transparent; font-style: normal;" class=""><span style="background-color: transparent;" class=""><br class="" style=""></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span style="background-color: transparent;" class="">The same is btw true if you have&nbsp;</span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span style="background-color: transparent;" class=""><br class="" style=""></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class="">As -&gt; B -&gt; C -&gt; D</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span
 style="font-family: monospace; font-size: 13px;" class="">(s indicates @Specialized)</span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br class="" style=""></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class="">In this case A is the only enabled one. B, C and D are all disabled.</span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class="">This doesn't need anything special regarding indirect
 specialization.</span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br class="" style=""></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span
 style="font-family: monospace; font-size: 13px;" class="">&gt;&nbsp;</span></span>The way indirect specialization is defined in the spec is equivalent to</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class="">&gt; saying that "specialization" relation is transitive.</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br class="" style=""></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class="">4.3.1 does explicitly rule out transitivity for @Specialized layers 'in-between'...</span></span></div><div style="color:
 rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class="">If you have&nbsp;</span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class="">As -&gt; Bs -&gt; C -&gt; D</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family:
 monospace; background-color: transparent; font-style: normal;" class=""><br></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class="">then only As and C account for the name and qualifier evaluation.</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br></span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class="">LieGrue,</span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span
 style="font-family: monospace; font-size: 13px;" class="">strub</span></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: monospace; background-color: transparent; font-style: normal;" class=""><span class="" style=""><span style="font-family: monospace; font-size: 13px;" class=""><br></span></span></div> <div class="qtdSeparateBR"><br><br></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: Helvetica Neue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif; font-size: 8pt;" class=""> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif; font-size: 12pt;" class=""> <div dir="ltr" class="" style=""> <font size="2" face="Arial" class="" style=""> On Friday, 6 June 2014, 10:17, Jozef Hartinger &lt;jharting@redhat.com&gt; wrote:<br class="" style=""> </font> </div> <blockquote style="border-left: 2px solid rgb(16, 16,
 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;" class="">  <br class="" style=""><br class="" style=""> <div class="" style=""><br clear="none" class="" style="">On 06/03/2014 11:48 AM, Matus Abaffy wrote:<br clear="none" class="" style="">&gt; If the intention was not to ignore the beans in-between, then the rule for indirect specialization seems quite redundant to me.<br clear="none" class="" style=""><br clear="none" class="" style="">The way indirect specialization is defined in the spec is equivalent to <br clear="none" class="" style="">saying that "specialization" relation is transitive. Having<br clear="none" class="" style=""><br clear="none" class="" style="">A specializes B<div class="" id="yqtfd05535" style=""><br clear="none" class="" style="">and</div><br clear="none" class="" style="">B specializes C<br clear="none" class="" style=""><br clear="none" class="" style="">that means that also<br clear="none" class="" style="">"A
 specializes C"<br clear="none" class="" style="">holds true.<br clear="none" class="" style=""><br clear="none" class="" style="">I agree that when looking at qualifiers and name only, this "A <br clear="none" class="" style="">specializes C" relation may seem redundant. Relations "A specializes B" <br clear="none" class="" style="">and "B specializes C" themselves guarantee<br clear="none" class="" style="">that B contains all the qualifiers of C, A contains all the qualifiers <br clear="none" class="" style="">of B (and thus also those from C).<br clear="none" class="" style=""><br clear="none" class="" style="">However, there are other parts of the specification for which the fact <br clear="none" class="" style="">that both "A specializes B" and "A specializes C" hold true is <br clear="none" class="" style="">important. For example, take section 5.1.2.<br clear="none" class="" style="">It says:<br clear="none" class="" style=""><br clear="none"
 class="" style="">"A bean is said to be enabled if it is not specialized by any other <br clear="none" class="" style="">enabled bean".<br clear="none" class="" style=""><br clear="none" class="" style="">Now it makes a difference whether we consider specialization transitive <br clear="none" class="" style="">(A specializes C relation exists) or not as it influences whether C ends <br clear="none" class="" style="">up being enabled or not.<br clear="none" class="" style=""><br clear="none" class="" style="">Transitive case:<br clear="none" class="" style="">Both B and C are specialized by A and thus only A remains enabled.<br clear="none" class="" style=""><br clear="none" class="" style="">Non-transitive case:<br clear="none" class="" style="">A is enabled. B is specialized by A this B is not enabled. C is only <br clear="none" class="" style="">specialized by B, which is *not enabled* thus C remains enabled. Now <br clear="none" class=""
 style="">having both A and C enabled at the same time is clearly wrong and goes <br clear="none" class="" style="">against the whole purpose of specialization. Instead of replacing C with <br clear="none" class="" style="">A we end up we both beans enabled.<br clear="none" class="" style=""><br clear="none" class="" style="">I think there is no doubt now that non-transitive specialization does <br clear="none" class="" style="">not fit the CDI spec. In addition, I hope this makes it clear why <br clear="none" class="" style="">transitivity of specialization is not redundant.<br clear="none" class="" style=""><br clear="none" class="" style="">Jozef<div class="" id="yqtfd90117" style=""><br clear="none" class="" style=""></div><br class="" style=""><br class="" style=""></div> </blockquote>  </div> </div>   </div> </div></body></html>