[
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