myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Prakash Udupa (Commented) (JIRA)" <>
Subject [jira] [Commented] (TRINIDAD-2239) Improve the ancestor based change filtering mechanism by introducing a formal ComponentChangeFilter
Date Tue, 20 Mar 2012 14:23:38 GMT


Prakash Udupa commented on TRINIDAD-2239:

The noted revision above was not for this issue, the right checkin for this issue is ASF revision

> Improve the ancestor based change filtering mechanism by introducing a formal ComponentChangeFilter
> ---------------------------------------------------------------------------------------------------
>                 Key: TRINIDAD-2239
>                 URL:
>             Project: MyFaces Trinidad
>          Issue Type: Improvement
>          Components: Components
>    Affects Versions: 2.0.2-core
>            Reporter: Prakash Udupa
>            Assignee: Scott O'Bryan
>             Fix For: 2.0.2-core
>         Attachments: Change_Filter_TRINIDAD-2239_For_Trunk.patch
>   Original Estimate: 24h
>  Remaining Estimate: 24h
> TRINIDAD-2221 provided mechanism for ancestors to decide if ComponentChange targeting
one of its descendants should be added to ChangeManager.
> This one is asking for further improvement to this mechanism, by formalizing the contract
more. Proposal is to add the following API:
> 1. An abstract class 'org.apache.myfaces.trinidad.change.ComponentChangeFilter' that
clients / listeners can implement specializations to accept / reject certain changes on certain
components, and then add to the components.
> public abstract class ComponentChangeFilter
> {
>   public abstract Result accept(ComponentChange componentChange, UIComponent changeTargetComponent);
>   public enum Result
>   {
>      ACCEPT,
>      REJECT
>   }
> }
> 2. An abstract implementation 'org.apache.myfaces.trinidad.change.ComponentReferencingComponentChangeFilter'
to solve usecases where such a filter needs to hold component reference. 
> One such usecase is where ComponentChanges belonging to certain component subtree is
rejected, by keeping a reference to the subtree root component. We leverage on 'org.apache.myfaces.trinidad.util.ComponentReference'
for this implementation.
> 3. The following methods on UIXComponentBase to be able to attach / detach ComponentChangeFilters
to the components:
> public final void addComponentChangeFilter(ComponentChangeFilter componentChangeFilter)
> public final void removeComponentChangeFilter(ComponentChangeFilter componentChangeFilter)
> ------------
> Implementation:
> In implementation of UIXComponentBase.addComponentChange(UIComponent component, ComponentChange
change), we will not add a ComponentChange if any of the ComponentChangeFilters that is attached
to the target component itself or any of its ancestors rejects the ComponentChange.

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