myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leonardo Uribe (JIRA)" <...@myfaces.apache.org>
Subject [jira] [Commented] (MYFACES-3562) [perf] Optimize UIOutput.saveState(FacesContext)
Date Tue, 05 Jun 2012 13:25:24 GMT

    [ https://issues.apache.org/jira/browse/MYFACES-3562?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13289395#comment-13289395
] 

Leonardo Uribe commented on MYFACES-3562:
-----------------------------------------

MK >> Ah, I see ... in that case new _AttachedDeltaWrapper(_converter.getClass(), /*
null */ attachedState); represent the change setConverter(null), right? 

No, the internal value represents the delta, the one who represent the null converter is the
null blank in:

return new Object[]{parentSaved, converterSaved};

_isSetConverter() flag activates, _converter is null, so null value to store on the state,
so we return a null blank in the array [parentSaved, null].

MK >> During saveView, for each converter a instance of _AttachedDeltaWrapper is created,
but immediatelly GCed. In this case, _AttachedDeltaWrapper has attachedState null too. Is
it possible to distinguish between these two cases? 

Maybe the solution is add something like this:

                //Delta
                StateHolder holder = (StateHolder) _converter;
                if (!holder.isTransient())
                {
                    Object attachedState = holder.saveState(facesContext);
                    if (attachedState != null)
                    {
                        nullDelta = false;
                    }
                    // create it only when it has sense to do it.
                    if ( !(parentSaved == null && nullDelta) )
                    {
                        converterSaved = new _AttachedDeltaWrapper(_converter.getClass(),
                             attachedState);
                    }
                }
                else
                {
                    converterSaved = null;
                }

Other option is change the semantic of the algorithm and do not use an AttachedDeltaWrapper,
instead an AttachedNullWrapper or something like that. I'm not sure how to do it. 
                
> [perf] Optimize UIOutput.saveState(FacesContext)
> ------------------------------------------------
>
>                 Key: MYFACES-3562
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3562
>             Project: MyFaces Core
>          Issue Type: Improvement
>            Reporter: Martin Kočí
>            Priority: Trivial
>         Attachments: MYFACES-3562.patch
>
>
> 1) use converterSaved as delta change check
> 2)  remove nullDelta boolean
> 3) move  new _AttachedDeltaWrapper into if (attachedState != null) statement
> question: _AttachedDeltaWrapper used in this context provides Class of Converter, but
that info is not used in restoreState - can we remove usage of that wrapper?

--
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

       

Mime
View raw message