http://issues.apache.org/jira/browse/ADFFACES-210

On 9/26/06, Matthias Wessendorf <[EMAIL PROTECTED]> wrote:

sorry for the delay.

Not sure if I got it completely, but your suggestion to move that
stuff from UIXColl. to a Renderer API makes pretty much sense. At
least from that what I understand.

The customized treeTable "support" might be much much more important,
when all of the renderer api overhauls are done.

can you nail this issue into Jira?

Thanks!
Matthias


On 9/22/06, Arjuna Wijeyekoon <[EMAIL PROTECTED]> wrote:
> 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 renderer.
> 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 client-side.
>
> 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.
>
> What do you think?
> Arjuna
>
>


--
Matthias Wessendorf
http://tinyurl.com/fmywh

further stuff:
blog: http://jroller.com/page/mwessendorf
mail: mwessendorf-at-gmail-dot-com

Reply via email to