Hi<br><br>Ok it is done.<br><br><a href="https://issues.apache.org/jira/browse/MYFACES-2685" target="_blank">https://issues.apache.org/jira/browse/MYFACES-2685</a><br><br>regards,<br><br>Leonardo<br><br><div class="gmail_quote">
2010/4/28 Martin Marinschek <span dir="ltr">&lt;<a href="mailto:mmarinschek@apache.org">mmarinschek@apache.org</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Leonardo,<br>
<br>
IMHO, you can commit it on MyFaces - cause this is really a<br>
defect-fix, not an incomplicant feature.<br>
<br>
@Ed: can you please comment on the spec related change necessary?<br>
<br>
best regards,<br>
<font color="#888888"><br>
Martin<br>
</font><div><div></div><div class="h5"><br>
On 4/28/10, Leonardo Uribe &lt;<a href="mailto:lu4242@gmail.com">lu4242@gmail.com</a>&gt; wrote:<br>
&gt; Hi<br>
&gt;<br>
&gt; Should I create an issue on spec issue tracker for this one?<br>
&gt;<br>
&gt; Any chance we can fix it for 1.2?<br>
&gt;<br>
&gt; Can I commit this fix on myfaces or I have to wait?<br>
&gt;<br>
&gt; regards,<br>
&gt;<br>
&gt; Leonardo Uribe<br>
&gt;<br>
&gt; 2010/4/26 Martin Marinschek &lt;<a href="mailto:mmarinschek@apache.org">mmarinschek@apache.org</a>&gt;<br>
&gt;<br>
&gt;&gt; Hi Leonardo,<br>
&gt;&gt;<br>
&gt;&gt; yes, ok - it is the same as the existing implementation, you are right<br>
&gt;&gt; - but still, I think we would only need to compare the part of the<br>
&gt;&gt; client-id which has not already been checked cause we have moved down<br>
&gt;&gt; the component tree already. But I see that this performance<br>
&gt;&gt; enhancement is not in the existing code, so forget my objection (or<br>
&gt;&gt; implement it and make it a little faster ;)<br>
&gt;&gt;<br>
&gt;&gt; Back to your original issue: I definitely agree.<br>
&gt;&gt;<br>
&gt;&gt; best regards,<br>
&gt;&gt;<br>
&gt;&gt; Martin<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Apr 26, 2010 at 7:31 AM, Leonardo Uribe &lt;<a href="mailto:lu4242@gmail.com">lu4242@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hi Martin<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Yes, it is necessary to compare the full client id. Really that<br>
&gt;&gt; &gt; part of the algorithm is the same as UIComponent.invokeOnComponent,<br>
&gt;&gt; &gt; but without propagate the callback to the children.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; regards,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Leonardo<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; 2010/4/25 Martin Marinschek &lt;<a href="mailto:mmarinschek@apache.org">mmarinschek@apache.org</a>&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Hi Leonardo,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; yes, certainly this needs to be doable as well. For performance<br>
&gt;&gt; &gt;&gt; reasons - is it really necessary to compare the full client-id?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; best regards,<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Martin<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Fri, Apr 23, 2010 at 7:52 PM, Leonardo Uribe &lt;<a href="mailto:lu4242@gmail.com">lu4242@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt; &gt; Hi<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Looking some jsf 2.0 code, I notice the current algorithm of<br>
&gt;&gt; &gt;&gt; &gt; UIData.invokeOnComponent cannot handle the case when the target is a<br>
&gt;&gt; &gt;&gt; &gt; UIColumn instance and no rowIndex is on clientId. Is that ok?<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Checking the new visit tree api, UIData.visitTree cleary says:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; &quot;....If this component has children, for each UIColumn child:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Call<br>
&gt;&gt; VisitContext.invokeVisitCallback(javax.faces.component.UIComponent,<br>
&gt;&gt; &gt;&gt; &gt; javax.faces.component.visit.VisitCallback) on that UIColumn instance.<br>
&gt;&gt; If<br>
&gt;&gt; &gt;&gt; &gt; such a call returns true, terminate visiting and return true from<br>
&gt;&gt; &gt;&gt; &gt; this<br>
&gt;&gt; &gt;&gt; &gt; method.<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; If the child UIColumn has facets, call<br>
&gt;&gt; &gt;&gt; &gt; UIComponent.visitTree(javax.faces.component.visit.VisitContext,<br>
&gt;&gt; &gt;&gt; &gt; javax.faces.component.visit.VisitCallback) on each one.....&quot;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; I think we should do something like this:<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;                 for (Iterator&lt;UIComponent&gt; itChildren =<br>
&gt;&gt; &gt;&gt; &gt; this.getChildren().iterator();<br>
&gt;&gt; &gt;&gt; &gt;                         !returnValue &amp;&amp; itChildren.hasNext();)<br>
&gt;&gt; &gt;&gt; &gt;                 {<br>
&gt;&gt; &gt;&gt; &gt;                     UIComponent child = itChildren.next();<br>
&gt;&gt; &gt;&gt; &gt;                     if (child instanceof UIColumn &amp;&amp;<br>
&gt;&gt; &gt;&gt; &gt; clientId.equals(child.getClientId()))<br>
&gt;&gt; &gt;&gt; &gt;                     {<br>
&gt;&gt; &gt;&gt; &gt;                         try {<br>
&gt;&gt; &gt;&gt; &gt;                             callback.invokeContextCallback(context,<br>
&gt;&gt; &gt;&gt; &gt; child);<br>
&gt;&gt; &gt;&gt; &gt;                         } catch (Exception e) {<br>
&gt;&gt; &gt;&gt; &gt;                             throw new FacesException(e);<br>
&gt;&gt; &gt;&gt; &gt;                         }<br>
&gt;&gt; &gt;&gt; &gt;                         returnValue = true;<br>
&gt;&gt; &gt;&gt; &gt;                     }<br>
&gt;&gt; &gt;&gt; &gt;                     // process the child&#39;s facets<br>
&gt;&gt; &gt;&gt; &gt;                     for (Iterator&lt;UIComponent&gt; itChildFacets =<br>
&gt;&gt; &gt;&gt; &gt; child.getFacets().values().iterator();<br>
&gt;&gt; &gt;&gt; &gt;                             !returnValue &amp;&amp; itChildFacets.hasNext();)<br>
&gt;&gt; &gt;&gt; &gt;                     {<br>
&gt;&gt; &gt;&gt; &gt;                         //recursive call to find the component<br>
&gt;&gt; &gt;&gt; &gt;                         returnValue =<br>
&gt;&gt; &gt;&gt; &gt; itChildFacets.next().invokeOnComponent(context, clientId, callback);<br>
&gt;&gt; &gt;&gt; &gt;                     }<br>
&gt;&gt; &gt;&gt; &gt;                 }<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Does that sounds reasonable? Should be fixed on 1.2.x branch too?<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; regards,<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt; Leonardo Uribe<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; <a href="http://www.irian.at" target="_blank">http://www.irian.at</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Your JSF powerhouse -<br>
&gt;&gt; &gt;&gt; JSF Consulting, Development and<br>
&gt;&gt; &gt;&gt; Courses in English and German<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Professional Support for Apache MyFaces<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt;<br>
&gt;&gt; <a href="http://www.irian.at" target="_blank">http://www.irian.at</a><br>
&gt;&gt;<br>
&gt;&gt; Your JSF powerhouse -<br>
&gt;&gt; JSF Consulting, Development and<br>
&gt;&gt; Courses in English and German<br>
&gt;&gt;<br>
&gt;&gt; Professional Support for Apache MyFaces<br>
&gt;&gt;<br>
&gt;<br>
<br>
<br>
</div></div>--<br>
<div><div></div><div class="h5"><br>
<a href="http://www.irian.at" target="_blank">http://www.irian.at</a><br>
<br>
Your JSF powerhouse -<br>
JSF Consulting, Development and<br>
Courses in English and German<br>
<br>
Professional Support for Apache MyFaces<br>
</div></div></blockquote></div><br>