myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Prakash Udupa (Commented) (JIRA)" <...@myfaces.apache.org>
Subject [jira] [Commented] (TRINIDAD-2221) Allow ancestor components to transform and filter ComponentChanges added by their descendants
Date Tue, 20 Mar 2012 14:17:39 GMT

    [ https://issues.apache.org/jira/browse/TRINIDAD-2221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13233430#comment-13233430
] 

Prakash Udupa commented on TRINIDAD-2221:
-----------------------------------------

See also related TRINIDAD-2239.
                
> Allow ancestor components to transform and filter ComponentChanges added by their descendants
> ---------------------------------------------------------------------------------------------
>
>                 Key: TRINIDAD-2221
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-2221
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Components
>    Affects Versions: 2.0.0-beta-2
>            Reporter: Blake Sullivan
>            Assignee: Blake Sullivan
>            Priority: Minor
>             Fix For: 2.0.0-beta-2
>
>         Attachments: jira2221Main.diff
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Components currently directly add changes to the ChangeManager.  This causes issues with
composition, where an ancestor may wish to modify the behavior of its implementation children.
 The proposal is to add new protected and public apis to UIXComponentBase:
>   /**
>    * Adds a change for a Component, or the Component's subtree, returning the change
actually added,
>    * or <code>null</code>, if no change was added.  The proposed change may
be rejected by the
>    * component itself, one of its ancestors, or the ChangeManager implementation.
>    * @param change     The change to add for this component
>    * @return The ComponentChange actually added, or
>    * <code>null</code> if no change was added.
>    */
>   public final ComponentChange addComponentChange(ComponentChange change)
>   {
>     return addComponentChange(this, change);
>   }
>   /**
>    * Called when adding a change to a Component, or the Component's subtree.
>    * The default implementation delegates the call to the parent, if possible, otherwise
>    * it adds the change to the ChangeManager directly.
>    * Subclasses can override this method to among other things, filter or transform the
changes.
>    * @param component  The component that the change is for
>    * @param change     The change to add for this component
>    * @return The ComponentChange actually added, or
>    * <code>null</code> if no change was added.
>    */
>   protected ComponentChange addComponentChange(UIComponent component, ComponentChange
change)
> The also make the current addAttributeChange a convenience function:
>   /**
>    * Convenience function for
>    * <code>addComponentChange(new AttributeComponentChange(attributeName, attributeValue));</code>
>    * This function is not <code>final</code> for backwards compatibility
reasons, however,
>    * existing subclassers whould override <code>addComponentChange</code>
instead.
>    * @param attributeName
>    * @param attributeValue
>    * @see #addComponentChange(UIComponent, ComponentChange)
>    */
>   protected void addAttributeChange(
>     String attributeName,
>     Object attributeValue)
>   {
>     addComponentChange(new AttributeComponentChange(attributeName, attributeValue));
>   }

--
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

        

Mime
View raw message