myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Prakash Udupa <>
Subject [Trinidad] [API] (TRINIDAD-2209) Provide ChangeManager APIs to remove and restore changes to components in a subtree
Date Fri, 27 Jan 2012 22:42:46 GMT
Calling attention to the new API proposed. If you have feedback please bring it up.
I'll submit a patch for this soon.


On 1/26/2012 10:21 PM, Prakash Udupa (Created) (JIRA) wrote:
> Provide ChangeManager APIs to remove and restore changes to components in a subtree
> -----------------------------------------------------------------------------------
>                   Key: TRINIDAD-2209
>                   URL:
>               Project: MyFaces Trinidad
>            Issue Type: Improvement
>            Components: Components, Infrastructure
>      Affects Versions: 2.0.2-core
>           Environment: n/a
>              Reporter: Prakash Udupa
> There are frequent changes to attributes of components due to end user interaction. For
example the 'displayIndex' value of a custom 'column' component changes whenever user reorders
the column in a table. SessionChangeManager records such changes on certain attributes of
certain components and restores it as 'preference' / 'personalization' for that user for future
'GET' requests on the page. While this is generally desirable, it sometimes could interfere
with expectations of other components. For example a custom 'query' component may choose to
allow users to save keyed by a 'name' the 'search criteria', and then additionally the 'layout'
of the results area, which most likely is a table. The changes on the table (or any other
component on results area) that the SessionChangeManager frequently saves and restores interferes
with the component's feature to save and restore the layout of the results area / table. We
need some ChangeManager API to reduce this interference.
> This proposal is to add APIs to ChangeManager that components can call to:
> 1. Remove the ChangeManager changes for the result area subtree when it switches to a
saved search that includes layout.
> 2. Add back the ChangeManager changes for the result area subtree when user switches
to a saved search that does not include a layout.
> ------------------------
> Specifically proposing the following new APIs (two public methods) on ChangeManager class:
>    /**
>     * Removes all changes that the ChangeManager holds for components in a subtree.
>     * Note that the ChangeManager would still continue to record any new changes on the
>     * components in the subtree.
>     * @param subTreeRoot The UIComponent that is the root of the component subtree for
which the
>     *                    changes are to be removed. Note that if the viewroot is suplied,
>     *                    changes for the entire view are removed.
>     * @return Object a Serializable Object of all the component changes for the subtree
that was
>     *                just removed. This value can be passed back to
>     *                restoreComponentChangesForSubtree() to restore the changes.
>     */
>    public Object removeComponentChangesForSubtree(FacesContext context, UIComponent subTreeRoot)
>    /**
>     * Restores the component changes to the ChangeManager for components in a  subtree.
>     * Before adding the changes, if there are existing changes to the subtree it will
be removed.
>     * @param changes The Serializable Object of the component changes as returned by
>     *        removeComponentChangesForSubtree()
>     */
>    public void restoreComponentChangesForSubtree(FacesContext context, Object changes)
> ------------------------
> These methods will be implemented in SessionChangeManager, and will be a no-op in the
document based ChangeManager implementations.
> --
> 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