<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <div class="moz-cite-prefix">On 06/06/2014 11:10 AM, Mark Struberg
      wrote:<br>
    </div>
    <blockquote
      cite="mid:1402045810.7436.YahooMailNeo@web28904.mail.ir2.yahoo.com"
      type="cite">
      <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
              style="font-family: monospace; font-size: 13px;" class=""
              clear="none">
            <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 style="font-family:
              monospace; font-size: 13px;" class="" clear="none">
            <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 style="font-family:
              monospace; font-size: 13px;" class="" clear="none">
            <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 style="font-family:
              monospace; font-size: 13px;" class="" clear="none">
            <span style="font-family: monospace; font-size: 13px;"
              class="">&gt; against the whole purpose of specialization.
              Instead of replacing C with&nbsp;</span><br style="font-family:
              monospace; font-size: 13px;" class="" clear="none">
            <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>
    </blockquote>
    "A bean is said to be enabled if it is not specialized by any other
    <br class="" style="" clear="none">
    enabled bean".<br>
    <br>
    Therefore, whether A extends C or not is irrelevant. What matters is
    whether A specializes C or not.<br>
    <br>
    Therefore, I am going to assume that you meant to write:<br>
    "A still (indirectly) specializes C, thus C is not enabled". <br>
    <br>
    This is right. But this is exactly the transitive case, not the
    non-transitive one :-)<br>
    <br>
    <blockquote
      cite="mid:1402045810.7436.YahooMailNeo@web28904.mail.ir2.yahoo.com"
      type="cite">
      <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 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 class="" style=""
                  face="Arial" size="2"> On Friday, 6 June 2014, 10:17,
                  Jozef Hartinger <a class="moz-txt-link-rfc2396E" href="mailto:jharting@redhat.com">&lt;jharting@redhat.com&gt;</a> 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 class="" style=""
                    clear="none">
                  On 06/03/2014 11:48 AM, Matus Abaffy wrote:<br
                    class="" style="" clear="none">
                  &gt; If the intention was not to ignore the beans
                  in-between, then the rule for indirect specialization
                  seems quite redundant to me.<br class="" style=""
                    clear="none">
                  <br class="" style="" clear="none">
                  The way indirect specialization is defined in the spec
                  is equivalent to <br class="" style="" clear="none">
                  saying that "specialization" relation is transitive.
                  Having<br class="" style="" clear="none">
                  <br class="" style="" clear="none">
                  A specializes B
                  <div class="" id="yqtfd05535" style=""><br class=""
                      style="" clear="none">
                    and</div>
                  <br class="" style="" clear="none">
                  B specializes C<br class="" style="" clear="none">
                  <br class="" style="" clear="none">
                  that means that also<br class="" style="" clear="none">
                  "A specializes C"<br class="" style="" clear="none">
                  holds true.<br class="" style="" clear="none">
                  <br class="" style="" clear="none">
                  I agree that when looking at qualifiers and name only,
                  this "A <br class="" style="" clear="none">
                  specializes C" relation may seem redundant. Relations
                  "A specializes B" <br class="" style="" clear="none">
                  and "B specializes C" themselves guarantee<br class=""
                    style="" clear="none">
                  that B contains all the qualifiers of C, A contains
                  all the qualifiers <br class="" style="" clear="none">
                  of B (and thus also those from C).<br class=""
                    style="" clear="none">
                  <br class="" style="" clear="none">
                  However, there are other parts of the specification
                  for which the fact <br class="" style="" clear="none">
                  that both "A specializes B" and "A specializes C" hold
                  true is <br class="" style="" clear="none">
                  important. For example, take section 5.1.2.<br
                    class="" style="" clear="none">
                  It says:<br class="" style="" clear="none">
                  <br class="" style="" clear="none">
                  "A bean is said to be enabled if it is not specialized
                  by any other <br class="" style="" clear="none">
                  enabled bean".<br class="" style="" clear="none">
                  <br class="" style="" clear="none">
                  Now it makes a difference whether we consider
                  specialization transitive <br class="" style=""
                    clear="none">
                  (A specializes C relation exists) or not as it
                  influences whether C ends <br class="" style=""
                    clear="none">
                  up being enabled or not.<br class="" style=""
                    clear="none">
                  <br class="" style="" clear="none">
                  Transitive case:<br class="" style="" clear="none">
                  Both B and C are specialized by A and thus only A
                  remains enabled.<br class="" style="" clear="none">
                  <br class="" style="" clear="none">
                  Non-transitive case:<br class="" style="" clear="none">
                  A is enabled. B is specialized by A this B is not
                  enabled. C is only <br class="" style="" clear="none">
                  specialized by B, which is *not enabled* thus C
                  remains enabled. Now <br class="" style=""
                    clear="none">
                  having both A and C enabled at the same time is
                  clearly wrong and goes <br class="" style=""
                    clear="none">
                  against the whole purpose of specialization. Instead
                  of replacing C with <br class="" style=""
                    clear="none">
                  A we end up we both beans enabled.<br class=""
                    style="" clear="none">
                  <br class="" style="" clear="none">
                  I think there is no doubt now that non-transitive
                  specialization does <br class="" style=""
                    clear="none">
                  not fit the CDI spec. In addition, I hope this makes
                  it clear why <br class="" style="" clear="none">
                  transitivity of specialization is not redundant.<br
                    class="" style="" clear="none">
                  <br class="" style="" clear="none">
                  Jozef
                  <div class="" id="yqtfd90117" style=""><br class=""
                      style="" clear="none">
                  </div>
                  <br class="" style="">
                  <br class="" style="">
                </div>
              </blockquote>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>