myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Cooper (JIRA)" <...@myfaces.apache.org>
Subject [jira] Updated: (TRINIDAD-1895) Issue with UIXIterator visitData implementation
Date Thu, 26 Aug 2010 23:10:54 GMT

     [ https://issues.apache.org/jira/browse/TRINIDAD-1895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Matt Cooper updated TRINIDAD-1895:
----------------------------------

           Status: Resolved  (was: Patch Available)
    Fix Version/s:  2.0.0.2-core 
       Resolution: Fixed

> Issue with UIXIterator visitData implementation
> -----------------------------------------------
>
>                 Key: TRINIDAD-1895
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1895
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Components
>    Affects Versions: 2.0.0-alpha
>            Reporter: Kamran Kashanian
>            Assignee: Matt Cooper
>             Fix For:  2.0.0.2-core 
>
>         Attachments: visitdata.patch
>
>
> The UIXIterator 'visitData' method is called during 'visitTree' invocation to visit the
stamped children of UIXIterator.
> The implementation uses an "IndexedRunner"/"KeyedRunner"  to loop over all or some rows
and visit the contents of the row.   The issue is that the code skips over direct stamped
children of the UIXIterator and instead visits the grandchildren.   
> Looks like the code is assuming that direct children of UIXIterator are unstamped columns
(UIXColumn) and should be skipped over during stamping-visit.   This assumption is correct
for sub-classes of UIXIterator but not for UIXIterator.  UIXIterator does not have columns.
> The visiting logic is already using a NoColumnFacetsVisitContext.  So on invokeVisitCallback,
 it skips over any columns and visits the column children.  It also handles nested columns.
 
> So the proposal is to change the code in "IndexedRunner"/"KeyedRunner" as follows:
> Change this:
>         @Override
>         protected void process(UIComponent kid, ComponentProcessingContext cpContext)
>         {
>           if (kid.getChildCount()>  0)
>           {
>             for (UIComponent grandKid : kid.getChildren())
>             {
>               if (UIXComponent.visitTree(noColumnFacetContext, grandKid, visitCallback))
>               {
>                 throw new AbortProcessingException();
>               }
>             }
>           }
>         }
> To this:
>         @Override
>         protected void process(UIComponent kid, ComponentProcessingContext cpContext)
>         {
>           if (UIXComponent.visitTree(noColumnFacetContext, kid, visitCallback))
>           {
>             throw new AbortProcessingException();
>           }
>         }

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


Mime
View raw message