Leonardo Uribe created MYFACES-3556:
---------------------------------------

             Summary: [perf] call markInitialState() inside 
vdl.retargetAttachedObjects() and vdl.retargetMethodExpressions()
                 Key: MYFACES-3556
                 URL: https://issues.apache.org/jira/browse/MYFACES-3556
             Project: MyFaces Core
          Issue Type: Improvement
          Components: JSR-314
            Reporter: Leonardo Uribe
            Assignee: Leonardo Uribe


To ensure compatibility with the RI, In JSF 2.1, markInitialState() call is 
done after the component tree is built with a visitTree() call. That works 
fine, but in JSF 2.0 or when you have a dynamic content inside a page, it is 
necessary to activate markInitialState() call through facelet algorithm as 
described in MYFACES-3451.

The concept works very good, but I notice a side effect in 
vdl.retargetAttachedObjects() and vdl.retargetMethodExpressions(). Since 
markInitialState() call goes from leaf to the root, and these methods traverse 
the tree to apply changes in child components, all changes done by these two 
methods are stored into the "delta" part of the state. 

Since vdl.retargetAttachedObjects() and vdl.retargetMethodExpressions() are 
called in build view time and only when the composite component is created, it 
is safe to check if pss is used in the view and markInitialState() algorithm 
has been activated, to call markInitialState() over the child components (the 
call for the top level component is done in the outside). Maybe it will be some 
extra calls to markInitialState() for the same component, but it is worth to do 
it, because this call is very fast, and the effect is get a zero (or almost 
zero) state size overhead for composite components.

Additionally, it is better in this case to use these classes:

org.apache.myfaces.view.facelets.tag.jsf.PartialMethodExpressionActionListener;
org.apache.myfaces.view.facelets.tag.jsf.PartialMethodExpressionValidator;
org.apache.myfaces.view.facelets.tag.jsf.PartialMethodExpressionValueChangeListener;

to ensure no state is stored in these cases. Note this issue is the solution to 
the problem described in MYFACES-3551

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to