<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="">> Non-transitive case:</span><br
style="font-family: monospace; font-size: 13px;" class=""
clear="none">
<span style="font-family: monospace; font-size: 13px;"
class="">> A is enabled. B is specialized by A this B
is not enabled. C is only </span><br style="font-family:
monospace; font-size: 13px;" class="" clear="none">
<span style="font-family: monospace; font-size: 13px;"
class="">> specialized by B, which is *not enabled*
thus C remains enabled. Now </span><br style="font-family:
monospace; font-size: 13px;" class="" clear="none">
<span style="font-family: monospace; font-size: 13px;"
class="">> having both A and C enabled at the same time
is clearly wrong and goes </span><br style="font-family:
monospace; font-size: 13px;" class="" clear="none">
<span style="font-family: monospace; font-size: 13px;"
class="">> against the whole purpose of specialization.
Instead of replacing C with </span><br style="font-family:
monospace; font-size: 13px;" class="" clear="none">
<span style="font-family: monospace; font-size: 13px;"
class="">> 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 </span></span>(indirectly) <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 </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 -> B -> C -> 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="">> </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="">> 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 </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 -> Bs -> C -> 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"><jharting@redhat.com></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">
> 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>