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.