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

Reply via email to