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

pudupa edited comment on TRINIDAD-1015 at 5/9/08 7:01 PM:
-------------------------------------------------------------------

The attached file ' TRINIDAD-1015-Patch-For-Branch_trunk_1.2.x.patch ' is the 
patch for this Jira issue on trunk_1.2.x based off revision #654993.

      was (Author: pudupa):
    This is the patch for this Jira issue on trunk_1.2.x based off revision 
#654993.
  
> SessionChangeManager - Need support for applying changes to a different 
> component than the immediate target, need for supporting ChangeMarker
> ---------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: TRINIDAD-1015
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1015
>             Project: MyFaces Trinidad
>          Issue Type: Improvement
>         Environment: Not applicable
>            Reporter: Prakash Udupa N
>         Attachments: TRINIDAD-1015-Patch-For-Branch_1.2.7.1-branch.patch, 
> TRINIDAD-1015-Patch-For-Branch_trunk_1.2.x.patch
>
>
> Component changes that are added to SessionChangeManager are applied while 
> the components are being created by the tag handlers. Specifically 
> UIXComponentELTag._applyChanges() and UIXComponentELTag.doEndTag() does this 
> job. Changes are applied only if the component was created newly during tag 
> execution. UIComponentELTag.getCreated() is consulted for this purpose.
> There are certain type of changes that are registered on a particular target 
> component, but actually need to be applied on a different component to make 
> the change effective.
> Consider example of a MoveComponentChange specialization that moves 
> components within the view tree. There are three participants in this change:
> 1. The component that is to be moved.
> 2. The parent at the destination of the move.
> 3. The neighboring sibling at the destination to be able to position the 
> component rightly after the move.
> At the outset this seems to be a change to be recorded against the component 
> that is to be moved (i.e. #1). However, this change needs to be applied 
> actually on the nearest common root parent of the tree that #1 and #2 belongs 
> to.
> During tag execution (createview/restoreview), the component for #1 gets 
> created, however the common root never gets created. 
> UIXComponentELTag.getCreated() returns false for the common root, as a 
> result, from the current behavior in UIXComponentELTag._applyChanges(), this 
> type of change never gets applied correctly.
> Proposal is to:
> a) Provide a ChangeMarker interface that clients could register against the 
> immediately apparent target component (In the above example it is component 
> in #1).
> b) Improve UIXComponentELTag such that upon applying changes, if a 
> ChangeMarker is encountered instead of a Change, do not apply any change, but 
> ask the ChangeMarker for actual target. Subsequently mark the tag for the new 
> target component as forcibly needing change. This ensures that the Change is 
> correctly applied on the actual target at later point in time.
> c) UIXComponentELTag, will consult getCreated() as well as check if a change 
> application is forced while applying change. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to