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