<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:arial,helvetica,sans-serif;font-size:10pt"><div>Hi;<br><br>What I understand from the spec is that :<br><br>1* Decorated types of the decorator must be an interface<br><br>&nbsp;&nbsp;&nbsp; Examples :<br>&nbsp;&nbsp;&nbsp; a) Just implement interface<br>&nbsp;&nbsp;&nbsp;&nbsp; @Decorator public class X implements Y <br>&nbsp;&nbsp;&nbsp;&nbsp; Decorated types of X : {Y}<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; b)&nbsp; Abstract implementation<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Decorator abstract class X implement Y<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; interface Y extends YY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Decorated types of X : {Y,YY}<br><br>&nbsp;&nbsp;&nbsp;&nbsp; c)Extends class Y that is not decorator that implement another interface YY<br>&nbsp; &nbsp; &nbsp; @Decorator public class X extends Y implement Z;
 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public class Y implement YY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; interface Z extends ZZ<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Decorated types of X : {YY, Z, ZZ}<br><br>2* Delegate type of the decorator must be "implement" or "extends" decorated types<br>&nbsp;&nbsp;&nbsp; 1.a ) Proxy that implements {Y}<br>&nbsp;&nbsp;&nbsp; 1.b ) Proxy that implements&nbsp; {Y} and {YY}<br>&nbsp;&nbsp;&nbsp; 1.c)&nbsp; Proxy that implement {YY, Z, ZZ}<br><br><br>Moreover, delegate proxy is used for calling chaining of decorators. Lets say that 3 decorator instance<br>@Decorator public class A implements X {@Delegate X x public void checkout(){ ... x.checkout()}} <br>@Decorator public class B implements X {@Delegate X x public void checkout(){... x.checkout()}}&nbsp; <br>@Decorator public class C implements X {@Delegate X x public void checkout(){..&nbsp; x. checkout()}} <br><br>Then, managed beans with API type containing X
 have a 3 decorators if these decorators are enabled. So, whenever a call is made to the managed bean instance(decorate method call) first decorator in the chain is called by the container. Lets say that first decorator is A, so A's "checkout" method is called and delegate proxy instance is injected into its injection point by the container. <br><br>A{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; @Delegate X x; --&gt; Proxy injected by the container&nbsp; <br>&nbsp;&nbsp;&nbsp; public void checkout(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x.checkout() --&gt; Means that calls another decorator in the chain if exist, otherwise call actual bean instance<br>&nbsp;&nbsp; }<br>}<br></div><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt;"><br>In A, delegate proxy is used for calling another decorator in the chain if it exists.&nbsp; For above example, B#checkout() is
 called, etc...<br><br>If there is no call to the delegate proxy object's method(x.checkout()), then actual bean instance is called with skipping other decorators in the chain. <br><br>Is this correct?<br><br>Thanks;<br><br>--Gurkan<br><br><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> Gavin King &lt;gavin.king@gmail.com&gt;<br><b><span style="font-weight: bold;">To:</span></b> Mark Struberg &lt;struberg@yahoo.de&gt;<br><b><span style="font-weight: bold;">Cc:</span></b> weld-dev@lists.jboss.org<br><b><span style="font-weight: bold;">Sent:</span></b> Sat, December 5, 2009 6:21:47 AM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [weld-dev] Decorator question<br></font><br>Oh, now I understand. Yes, Cat/CatDecorator look wrong to me. Cat<br>should be an interface, with a CatImpl.<br><br>On Fri, Dec 4, 2009 at 8:42 PM, Gavin
 King &lt;<a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a>&gt; wrote:<br>&gt; Then I guess I don't understand exactly what it is that you want here...<br>&gt;<br>&gt; On Fri, Dec 4, 2009 at 6:20 PM, Mark Struberg &lt;<a ymailto="mailto:struberg@yahoo.de" href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>&gt; wrote:<br>&gt;&gt; Gavin,<br>&gt;&gt;<br>&gt;&gt; my main concern is to pass the TCK.<br>&gt;&gt;<br>&gt;&gt; Beside that, I really don't like to propose new use cases (even if there is one: with @Alternative, you'd need to subclass every class down the type hierarchy yourself, with @Decorator 'extends', you'd be able to decorate the baseclass and that would be applied to all subclasses automagically).<br>&gt;&gt;<br>&gt;&gt; Maybe the TCK folks can look at the CatDecorator, and add a bit more Decorator tests, so we have a set of facts we can both rely on? txs!<br>&gt;&gt;<br>&gt;&gt;
 LieGrue,<br>&gt;&gt; strub<br>&gt;&gt;<br>&gt;&gt; --- Gavin King &lt;<a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a>&gt; schrieb am Fr, 4.12.2009:<br>&gt;&gt;<br>&gt;&gt;&gt; Von: Gavin King &lt;<a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a>&gt;<br>&gt;&gt;&gt; Betreff: Re: [weld-dev] Decorator question<br>&gt;&gt;&gt; An: "Mark Struberg" &lt;<a ymailto="mailto:struberg@yahoo.de" href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>&gt;<br>&gt;&gt;&gt; CC: "Marius Bogoevici" &lt;<a ymailto="mailto:mariusb@redhat.com" href="mailto:mariusb@redhat.com">mariusb@redhat.com</a>&gt;, <a ymailto="mailto:weld-dev@lists.jboss.org" href="mailto:weld-dev@lists.jboss.org">weld-dev@lists.jboss.org</a><br>&gt;&gt;&gt; Datum: Freitag, 4. Dezember 2009, 17:51<br>&gt;&gt;&gt; Look, I just don't see the usecase<br>&gt;&gt;&gt; for what you're
 proposing.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; If you're trying to extend a concrete class, override some<br>&gt;&gt;&gt; of its<br>&gt;&gt;&gt; methods, and delegate some methods back to the superclass,<br>&gt;&gt;&gt; just make<br>&gt;&gt;&gt; your subclass an @Alternative and call super.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; I simply don't see the usecase for having a whole stack of<br>&gt;&gt;&gt; these<br>&gt;&gt;&gt; things. I don't think anyone needs this.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; On Fri, Dec 4, 2009 at 2:21 AM, Mark Struberg &lt;<a ymailto="mailto:struberg@yahoo.de" href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>&gt;<br>&gt;&gt;&gt; wrote:<br>&gt;&gt;&gt; &gt; But if (2) is allowed, then the restriction on the<br>&gt;&gt;&gt; Interfaces is pretty restrictive. I cannot see any<br>&gt;&gt;&gt; additional benefit we gain from this restriction and we have<br>&gt;&gt;&gt; to delegate all not-overridden methods via a proxy anyway.<br>&gt;&gt;&gt;
 &gt; Can you please give me a hint why this is necessary?<br>&gt;&gt;&gt; &gt;<br>&gt;&gt;&gt; &gt; txs and lieGrue,<br>&gt;&gt;&gt; &gt; strub<br>&gt;&gt;&gt; &gt;<br>&gt;&gt;&gt; &gt;<br>&gt;&gt;&gt; &gt; --- Gavin King &lt;<a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a>&gt;<br>&gt;&gt;&gt; schrieb am Fr, 4.12.2009:<br>&gt;&gt;&gt; &gt;<br>&gt;&gt;&gt; &gt;&gt; Von: Gavin King &lt;<a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a>&gt;<br>&gt;&gt;&gt; &gt;&gt; Betreff: Re: [weld-dev] Decorator question<br>&gt;&gt;&gt; &gt;&gt; An: "Marius Bogoevici" &lt;<a ymailto="mailto:mariusb@redhat.com" href="mailto:mariusb@redhat.com">mariusb@redhat.com</a>&gt;<br>&gt;&gt;&gt; &gt;&gt; CC: "Mark Struberg" &lt;<a ymailto="mailto:struberg@yahoo.de" href="mailto:struberg@yahoo.de">struberg@yahoo.de</a>&gt;,<br>&gt;&gt;&gt; <a
 ymailto="mailto:weld-dev@lists.jboss.org" href="mailto:weld-dev@lists.jboss.org">weld-dev@lists.jboss.org</a><br>&gt;&gt;&gt; &gt;&gt; Datum: Freitag, 4. Dezember 2009, 1:56<br>&gt;&gt;&gt; &gt;&gt; On Thu, Dec 3, 2009 at 6:44 PM,<br>&gt;&gt;&gt; &gt;&gt; Marius Bogoevici &lt;<a ymailto="mailto:mariusb@redhat.com" href="mailto:mariusb@redhat.com">mariusb@redhat.com</a>&gt;<br>&gt;&gt;&gt; &gt;&gt; wrote:<br>&gt;&gt;&gt; &gt;&gt;<br>&gt;&gt;&gt; &gt;&gt; &gt; a) You can still have (2), if<br>&gt;&gt;&gt; AnotherBeanClass<br>&gt;&gt;&gt; &gt;&gt; implements an interface<br>&gt;&gt;&gt; &gt;&gt; &gt; AnInterface. It's just that the set of<br>&gt;&gt;&gt; decorated<br>&gt;&gt;&gt; &gt;&gt; methods is restricted to<br>&gt;&gt;&gt; &gt;&gt; &gt; the ones defined in the interface.<br>&gt;&gt;&gt; &gt;&gt;<br>&gt;&gt;&gt; &gt;&gt; Actually, yes, that's true. I should have said<br>&gt;&gt;&gt; that.<br>&gt;&gt;&gt; &gt;<br>&gt;&gt;&gt; &gt;
 __________________________________________________<br>&gt;&gt;&gt; &gt; Do You Yahoo!?<br>&gt;&gt;&gt; &gt; Sie sind Spam leid? Yahoo! Mail verfügt über einen<br>&gt;&gt;&gt; herausragenden Schutz gegen Massenmails.<br>&gt;&gt;&gt; &gt; <a href="http://mail.yahoo.com" target="_blank">http://mail.yahoo.com</a><br>&gt;&gt;&gt; &gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; --<br>&gt;&gt;&gt; Gavin King<br>&gt;&gt;&gt; <a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a><br>&gt;&gt;&gt; <a href="http://in.relation.to/Bloggers/Gavin" target="_blank">http://in.relation.to/Bloggers/Gavin</a><br>&gt;&gt;&gt; <a href="http://hibernate.org" target="_blank">http://hibernate.org</a><br>&gt;&gt;&gt; <a href="http://seamframework.org" target="_blank">http://seamframework.org</a><br>&gt;&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; __________________________________________________<br>&gt;&gt; Do You
 Yahoo!?<br>&gt;&gt; Sie sind Spam leid? Yahoo! Mail verfügt über einen herausragenden Schutz gegen Massenmails.<br>&gt;&gt; <a href="http://mail.yahoo.com" target="_blank">http://mail.yahoo.com</a><br>&gt;&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; --<br>&gt; Gavin King<br>&gt; <a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a><br>&gt; <a href="http://in.relation.to/Bloggers/Gavin" target="_blank">http://in.relation.to/Bloggers/Gavin</a><br>&gt; <a href="http://hibernate.org" target="_blank">http://hibernate.org</a><br>&gt; <a href="http://seamframework.org" target="_blank">http://seamframework.org</a><br>&gt;<br><br><br><br>-- <br>Gavin King<br><a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a><br><a href="http://in.relation.to/Bloggers/Gavin" target="_blank">http://in.relation.to/Bloggers/Gavin</a><br><a href="http://hibernate.org"
 target="_blank">http://hibernate.org</a><br><a href="http://seamframework.org" target="_blank">http://seamframework.org</a><br><br>_______________________________________________<br>weld-dev mailing list<br><a ymailto="mailto:weld-dev@lists.jboss.org" href="mailto:weld-dev@lists.jboss.org">weld-dev@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/weld-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/weld-dev</a><br></div></div>
<!-- cg16.c1.mail.mud.yahoo.com compressed/chunked Fri Dec  4 09:18:53 PST 2009 -->
</div><br>



      <hr size="1"><FONT face=Arial size=-1>Yahoo! Türkiye açıldı!<br>
Haber, Ekonomi, Videolar, Oyunlar hepsi Yahoo! Türkiye&#39;de!<br><a href="http://tr.yahoo.com/">www.yahoo.com.tr</a></font></body></html>