[
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