[ 
https://issues.apache.org/jira/browse/MYFACES-3774?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leonardo Uribe resolved MYFACES-3774.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2.0
    
> [perf] use facetName as a hint when try to find a component on refresh view 
> algorithm
> -------------------------------------------------------------------------------------
>
>                 Key: MYFACES-3774
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3774
>             Project: MyFaces Core
>          Issue Type: Improvement
>            Reporter: Leonardo Uribe
>            Assignee: Leonardo Uribe
>            Priority: Minor
>             Fix For: 2.2.0
>
>
> Checking some stuff I realized in ComponentTagHandlerDelegate.apply(...), the 
> following instructions are done when the view requires refresh in render 
> response phase:
>                  String facetName = this.getFacetName(ctx, parent);
> ....
>                 c = ComponentSupport.findChildByTagId(parent, id);
> ....
>                 if (facetName == null)
>                 {
>                     parent.getChildren().remove(c);
>                 }
>                 else
>                 {
>                     ComponentSupport.removeFacet(ctx, parent, c, facetName);
>                 }
> ....
>         if (facetName == null)
>         {
>             parent.getChildren().add(c);
>         }
>         else
>         {
>             ComponentSupport.addFacet(ctx, parent, c, facetName);
>         }
> The thing is if facetName == null the component will always be as a children. 
> If facetName != null, the component will always be in the facet associated to 
> that name. But the code in findChildByTagId(...) always look on the children 
> first and then in all facets using an iterator, which is just overkill. 
> It is better if we split findChildByTagId(...) into two variants 
> (findChildInFacetByTagId and findChildInChildrenByTagId) and use the 
> facetName as the condition and to get the right one if the component is in 
> the facet. That will save 1 iterator instance per facet and a lot of 
> unnecessary component.getAttributes().get(...) calls. But from the other 
> side, myfaces algorithm is smart enough to avoid view refreshing at all, so 
> the improvement will only be seen in some selected situations. Anyway, it is 
> worth to do it for 2.2.x branch.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to