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