incubator-adffaces-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Arjuna Wijeyekoon (JIRA)" <>
Subject [jira] Updated: (ADFFACES-210) move rowKey string token map from UIXCollection into corresponding Renderer
Date Mon, 16 Oct 2006 02:02:36 GMT
     [ ]

Arjuna Wijeyekoon updated ADFFACES-210:

    Attachment: clientrowkeymanager.patch

uploaded a patch with the changes discussed in this issue.

> move rowKey string token map from UIXCollection into corresponding Renderer
> ---------------------------------------------------------------------------
>                 Key: ADFFACES-210
>                 URL:
>             Project: MyFaces ADF-Faces
>          Issue Type: Improvement
>            Reporter: Arjuna Wijeyekoon
>         Attachments: clientrowkeymanager.patch
> Folks,
> Currently the UIXCollection class (which is the super class for table/tree/treeTable)
maintains a mapping between
> Object rowkeys and String tokens.
> >>>>>>>>
>         see
>             private ValueMap<Object> _currencyCache = null;
> <<<<<<<<
> I would like to suggest that we move this mapping from the component and into the corresponding
> We would still have the methods
> UIXCollection.getCurrencyString()
> UIXCollection.setCurrencyString(..)
> However, these would call into the renderer and the renderer would maintain the mapping,
and would control pruning of the mapping.
> Why should we do this?
> The reason is that only the renderer knows exactly which tokens are still being used
on the client-side. The component does not know this.
> And so the component does not know when to clear or prune this mapping.
> At the moment the component is clearing the mapping at the start of each encode cycle.
> But this breaks some 3rd party renderers which are still displaying certain rows on the
> A good example is the treeTable component. Let's say the tree is rendering a certain
set of rows. The tokens for these rows are being held in the mapping.
> Now the user expands a node, introducing a new subset of rows. Tokens for these rows
are now needed (in addition to the existing tokens).
> The encode phase starts and the mapping is cleared.
> The current trinidad treeTable renderer rerenders the entire tree, so all tokens (including
the ones for the newly inserted rows are recreated) and things work fine.
> Now let's suppose a 3rd party treeTable renderer has an optimization that only rerenders
the part that was inserted.
> Since the component cleared the mapping, only the tokens for the newly inserted rows
will exist. The tokens for the old set of rows (which still exist) on the client-side
> are missing. Things will break during decode when the treeTable is subsequently submitted.
> Suggested Changes
> Introduce a new Renderer API called , for eg: RowKeyTokenManager, or RowKeyStringManager,
or CurrencyStringManager.
> The tableRenderer would implement this.
> The UIXCollection class would cast its renderer into an instance of this new API and
use it to handle the
> get/setCurrencyString  methods.
> It would be up to the renderer to prune and manage the lifecycle of these token strings.
> The renderer would probably store the mapping as a private attribute on the component
so that it is properly serialized along with the component.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


View raw message