myfaces-dev mailing list archives

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


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:

                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(),
                    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:
>             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:!default.jspa
For more information on JIRA, see:


View raw message