<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:arial,helvetica,sans-serif;font-size:10pt"><div>I think that it is absurd to have two different @PreDestroy methods in interceptor class.Because they have same functionality. InvocationContext solely exists in the interceptor specification and it is very logical. Because one wants to call next interceptor in the chain.&nbsp; <br><br>Will TCK tests be corrected?<br><br>Thanks;<br><br>--Gurkan<br></div><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt;"><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> Marius Bogoevici &lt;mariusb@redhat.com&gt;<br><b><span style="font-weight: bold;">Cc:</span></b> Gurkan Erdogdu
 &lt;gurkanerdogdu@yahoo.com&gt;; weld-dev@lists.jboss.org<br><b><span style="font-weight: bold;">Sent:</span></b> Mon, November 30, 2009 10:43:42 PM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [weld-dev] TCK Interceptors Classes<br></font><br>
Well, the problem is that the interceptors spec is in general not very<br>clearly written.<br><br>On Mon, Nov 30, 2009 at 3: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; Hrm section 2.6 of the common annotations spec seems to confirm your<br>&gt; interpretation. What's very problematic here is that the interceptors<br>&gt; spec uses a different terminology to talk about the callbacks that it<br>&gt; is defining. Which leads to my interpretation that it is defining a<br>&gt; different, distinct set of callbacks.<br>&gt;<br>&gt; On Mon, Nov 30, 2009 at 3:08 PM, Marius Bogoevici &lt;<a ymailto="mailto:mariusb@redhat.com" href="mailto:mariusb@redhat.com">mariusb@redhat.com</a>&gt; wrote:<br>&gt;&gt; Gavin,<br>&gt;&gt;<br>&gt;&gt; This is very ambiguous, as the 1.1 version of the Interceptors specification<br>&gt;&gt; states very clearly the signature rules for
 defining lifecycle interceptor<br>&gt;&gt; methods on interceptor classes and target classes.<br>&gt;&gt;<br>&gt;&gt; Also, this could mean that an interceptor class can specify two different<br>&gt;&gt; @PostConstruct or @PreDestroy methods, which would refer to different<br>&gt;&gt; targets (the intercepted instance/the interceptor itself), but the<br>&gt;&gt; specification says very clearly:<br>&gt;&gt; "At most one method of a given interceptor class can be designated as an<br>&gt;&gt; around-invoke method, an around-timeout method, a post-construct method, or<br>&gt;&gt; pre-destroy method."<br>&gt;&gt;<br>&gt;&gt; Also, it is not very clear to me what would be the benefit of a separate<br>&gt;&gt; @PostConstruct/@PreDestroy method for the interceptor itself, as interceptor<br>&gt;&gt; lifecycles are virtually the same as for the target objects.<br>&gt;&gt;<br>&gt;&gt; Marius<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; Gavin King
 wrote:<br>&gt;&gt;<br>&gt;&gt; Check section 5.2.5 of the EE spec. It appears to confirm my<br>&gt;&gt; understanding of this stuff.<br>&gt;&gt;<br>&gt;&gt; On Mon, Nov 30, 2009 at 2:33 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;&gt;<br>&gt;&gt;<br>&gt;&gt; At least, that's my understanding of how interceptors are treated in<br>&gt;&gt; EE6. You would have to check with Roberto and Ken for an absolutely<br>&gt;&gt; definitive answer.<br>&gt;&gt;<br>&gt;&gt; On Mon, Nov 30, 2009 at 2:32 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;&gt;<br>&gt;&gt;<br>&gt;&gt; Right, but the interceptor itself has a lifecycle. It's a kind of<br>&gt;&gt; managed bean. So it can have the callbacks that all managed beans can<br>&gt;&gt; have.<br>&gt;&gt;<br>&gt;&gt; On Mon, Nov 30, 2009 at
 2:17 PM, Gurkan Erdogdu &lt;<a ymailto="mailto:gurkanerdogdu@yahoo.com" href="mailto:gurkanerdogdu@yahoo.com">gurkanerdogdu@yahoo.com</a>&gt;<br>&gt;&gt; wrote:<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; There are two differents scenario for lifecycle callbacks in interceptors<br>&gt;&gt; specification<br>&gt;&gt;<br>&gt;&gt; 1* Used in interceptor class with InvocationContext parameter<br>&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp; @PreDestroy<br>&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp; public void blabla(InvocationContext){}<br>&gt;&gt; 2* Used in bean class without any parameter<br>&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp; @PreDestroy<br>&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp; public void blabla(){}<br>&gt;&gt;<br>&gt;&gt; In TCK, @PreDestroy is used in interceptor class. So it may take<br>&gt;&gt; InvocationContext.<br>&gt;&gt;<br>&gt;&gt; --Gurkan<br>&gt;&gt;<br>&gt;&gt; ________________________________<br>&gt;&gt; From: 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; To: Gurkan Erdogdu &lt;<a ymailto="mailto:gurkanerdogdu@yahoo.com" href="mailto:gurkanerdogdu@yahoo.com">gurkanerdogdu@yahoo.com</a>&gt;<br>&gt;&gt; Cc: <a ymailto="mailto:weld-dev@lists.jboss.org" href="mailto:weld-dev@lists.jboss.org">weld-dev@lists.jboss.org</a><br>&gt;&gt; Sent: Mon, November 30, 2009 9:10:17 PM<br>&gt;&gt; Subject: Re: [weld-dev] TCK Interceptors Classes<br>&gt;&gt;<br>&gt;&gt; Hrm, I think there are two kinds of @PreDestroy methods for an interceptor:<br>&gt;&gt;<br>&gt;&gt; @PreDestroy void foo(InvocationContext) { .. }&nbsp; -&gt; the intercepted<br>&gt;&gt; bean is being destroyed<br>&gt;&gt; @PreDestroy void foo() { .. }&nbsp; -&gt; the interceptor itself is being destroyed<br>&gt;&gt;<br>&gt;&gt; Right?<br>&gt;&gt;<br>&gt;&gt; On Mon, Nov 30, 2009 at 1:34 PM, Gurkan Erdogdu &lt;<a ymailto="mailto:gurkanerdogdu@yahoo.com"
 href="mailto:gurkanerdogdu@yahoo.com">gurkanerdogdu@yahoo.com</a>&gt;<br>&gt;&gt; wrote:<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; Hi;<br>&gt;&gt;<br>&gt;&gt; Some interceptors classes in the TCK test suites implement @PreDestroy<br>&gt;&gt; methods. AFAIK, interceptors specification says that methods with<br>&gt;&gt; @PreDestroy in interceptor class must take InvocationContext parameter.<br>&gt;&gt; But<br>&gt;&gt; in TCK, those methods do not take InvocationContext parameter<br>&gt;&gt;<br>&gt;&gt; For example:<br>&gt;&gt;<br>&gt;&gt; org.jboss.jsr299.tck.tests.context.dependent.TransactionalInterceptor<br>&gt;&gt;<br>&gt;&gt; @PreDestroy public void destroy()<br>&gt;&gt; &nbsp;&nbsp; {<br>&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; destroyed = true;<br>&gt;&gt; &nbsp;&nbsp; }<br>&gt;&gt;<br>&gt;&gt; Is it correct?<br>&gt;&gt;<br>&gt;&gt; --Gurkan<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;
 _______________________________________________<br>&gt;&gt; weld-dev mailing list<br>&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; <a href="https://lists.jboss.org/mailman/listinfo/weld-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/weld-dev</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; Gavin King<br>&gt;&gt; <a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a><br><span>&gt;&gt; <a target="_blank" href="http://in.relation.to/Bloggers/Gavin">http://in.relation.to/Bloggers/Gavin</a></span><br><span>&gt;&gt; <a target="_blank" href="http://hibernate.org">http://hibernate.org</a></span><br><span>&gt;&gt; <a target="_blank" href="http://seamframework.org">http://seamframework.org</a></span><br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; Gavin King<br>&gt;&gt; <a
 ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a><br>&gt;&gt; <a href="http://in.relation.to/Bloggers/Gavin" target="_blank">http://in.relation.to/Bloggers/Gavin</a><br>&gt;&gt; <a href="http://hibernate.org" target="_blank">http://hibernate.org</a><br>&gt;&gt; <a href="http://seamframework.org" target="_blank">http://seamframework.org</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; Gavin King<br>&gt;&gt; <a ymailto="mailto:gavin.king@gmail.com" href="mailto:gavin.king@gmail.com">gavin.king@gmail.com</a><br>&gt;&gt; <a href="http://in.relation.to/Bloggers/Gavin" target="_blank">http://in.relation.to/Bloggers/Gavin</a><br>&gt;&gt; <a href="http://hibernate.org" target="_blank">http://hibernate.org</a><br>&gt;&gt; <a href="http://seamframework.org" target="_blank">http://seamframework.org</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<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></div></div>
<!-- cg11.c1.mail.mud.yahoo.com compressed/chunked Wed Nov 25 10:02:22 PST 2009 -->
</div><br>

      </body></html>