Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.2.6-core, 1.2.7-core
-
None
Description
UIXIterator.processFlattenedChildren() and its underlying UIXCollection cache is not initialized or flushed properly. This becomes a problem when you nest iterators. During normal use of non-flattening iterators, its cache gets initialized and flushed during the encodeBegin() of its parent class, UIXCollection. During a flattened use case (e.g. the parent component of the iterator has a renderer that uses UIXComponent.processFlattenedChildren()), encodeBegin() does not get invoked and thus the cache is neither initialized properly nor flushed. We need to expose a non-public method on UIXCollection that invokes its private initialization and private flushing functionality so that UIXIterator which extends it can invoke this new method during its UIXIterator.processFlattenedChildren() and thus so that nested iterators where the inner iterator is flattened can work. This change will have zero impact on the non-flattened use case so there is no risk to existing applications in that scenario.