[
https://issues.apache.org/jira/browse/TRINIDAD-2239?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bernd Bohmann updated TRINIDAD-2239:
------------------------------------
Resolution: Fixed
Fix Version/s: (was: 2.1.3-core)
2.1.0-core
Status: Resolved (was: Patch Available)
Looks like patch was applied before version 2.1.0-core.
Resolve it now
> Improve the ancestor based change filtering mechanism by introducing a formal
> ComponentChangeFilter
> ---------------------------------------------------------------------------------------------------
>
> Key: TRINIDAD-2239
> URL: https://issues.apache.org/jira/browse/TRINIDAD-2239
> Project: MyFaces Trinidad
> Issue Type: Improvement
> Components: Components
> Affects Versions: 2.0.2-core
> Reporter: Prakash Udupa
> Assignee: Scott O'Bryan
> Fix For: 2.1.0-core
>
> Attachments: Change_Filter_TRINIDAD-2239_1_2_12_7_0_branch.patch,
> Change_Filter_TRINIDAD-2239_For_Trunk.patch,
> TRINIDAD-2239_get_api_patch_over_trunk.patch,
> TRINIDAD-2239_get_api_patch_over_trunk_take_2.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)
> public final ComponentChangeFilter[] getComponentChangeFilters()
> ------------
> 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 was sent by Atlassian JIRA
(v6.3.15#6346)