You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Prakash Udupa (Created) (JIRA)" <de...@myfaces.apache.org> on 2012/01/27 05:21:41 UTC

[jira] [Created] (TRINIDAD-2209) Provide ChangeManager APIs to remove and restore changes to components in a subtree

Provide ChangeManager APIs to remove and restore changes to components in a subtree
-----------------------------------------------------------------------------------

                 Key: TRINIDAD-2209
                 URL: https://issues.apache.org/jira/browse/TRINIDAD-2209
             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, the
   *                    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: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[Trinidad] [API] (TRINIDAD-2209) Provide ChangeManager APIs to remove and restore changes to components in a subtree

Posted by Prakash Udupa <pr...@oracle.com>.
Calling attention to the new API proposed. If you have feedback please bring it up.
I'll submit a patch for this soon.

Thanks,
Prakash

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: https://issues.apache.org/jira/browse/TRINIDAD-2209
>               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, the
>     *                    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: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
> For more information on JIRA, see: http://www.atlassian.com/software/jira
>
>
>