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.