[
https://issues.apache.org/jira/browse/TRINIDAD-1760?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Max Starets resolved TRINIDAD-1760.
-----------------------------------
Resolution: Fixed
Fix Version/s: 2.0.0.3-core
Fixed by Blake Sullivan in revision 924123
> Map returned from UIXComponentBase.getAttributes() is missing attributes set
> in restoreState()
> ----------------------------------------------------------------------------------------------
>
> Key: TRINIDAD-1760
> URL: https://issues.apache.org/jira/browse/TRINIDAD-1760
> Project: MyFaces Trinidad
> Issue Type: Bug
> Components: Components
> Affects Versions: 2.0.0.3-core
> Reporter: Max Starets
> Fix For: 2.0.0.3-core
>
>
> org.apache.myfaces.trinidad.bean.util.ValueMap is caching the set of Map
> entries (_entries member variable), and is assuming that the entries may be
> added/removed only by calling put()/remove(). However,
> UIXComponentBase.restoreState() adds new entries directly on the FacesBean,
> so the ValueMap does not know about these new entries. Basically, the current
> implementation of the ValueMap will cache the entry set too soon if
> UIXComponentBase.getAttributes() is called before the restored state is
> applied. This is precisely what is happening now after we started calling
> pushComponentToEL in processRestoreState():
> (ValueMap.java:127)
> org.apache.myfaces.trinidad.bean.util.ValueMap$MakeEntries.<init>
> (ValueMap.java:101)
> org.apache.myfaces.trinidad.bean.util.ValueMap.entrySet
> (AbstractMap.java:123) java.util.AbstractMap.containsKey
> (UIComponent.java:1761)
> javax.faces.component.UIComponent.isCompositeComponent
> (UIComponent.java:1684)
> javax.faces.component.UIComponent.pushComponentToEL
> (UIXComponentBase.java:1073)
> org.apache.myfaces.trinidad.component.UIXComponentBase.processRestoreState
> (TreeState.java:96)
> org.apache.myfaces.trinidad.component.TreeState.restoreState
> (UIXComponentBase.java:1080)
> org.apache.myfaces.trinidad.component.UIXComponentBase.processRestoreState
> (AdfViewRoot.java:79)
> oracle.adfinternal.view.faces.component.AdfViewRoot.processRestoreState
> The stack shows where the entry set is being cached in the ValueMap. The
> attributes from the restored state are set on the FacesBean later,a nd are
> not reflected in the cached attribute map entry set.
> Possible fix: should we route UIXComponentBase.restoreState() through the
> ValueMap (instead of calling FacesBean directly), so that the ValueMap has a
> chance to clear its entry cache?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.