On 02/10/2011 07:27 PM, Thomas Mortagne wrote:
> Here is a proposal to reduce all get...Block to 2 methods which
> support matching any Block.
>
> interface Block
> {
> enum TraversalStrategy
> {
> /** Search in parents **/
> PARENT,
> /** Search in children **/
> CHILD,
> /** Search recursively in children (and children of children etc...) **/
> CHILDRECURSE,
> /** Search in previous siblings **/
> PREVIOUS,
> /** Search recursively in previous siblings (and parent previous
> sibling etc...) **/
> PREVIOUSRECURSE,
> /** Search in next siblings**/
> NEXT,
> /** Search recursively in next siblings (and children etc...)**/
> NEXTRECURSE
> }
>
> [...]
>
> List<Block> getBlocks(BlockMatcher matcher, TraversalStrategy
> traversalStrategy, boolean recurse);
>
> Block getFirstBlock(BlockMatcher matcher, TraversalStrategy
> traversalStrategy, boolean recurse);
> }
>
> interface BlockMatcher
> {
> boolean match(Block block);
> }
>
> et on refactor tous les autres get*Block basé sur ceux la avec des
> BlockMatcher prédéfinis (ClassBlockMatcher, MetaDataBlockMatcher,
> etc...).
>
> Note: the main use case for this change is to support MetaData search.
>
> WDYT (especially on the vocabulary like "TraversalStrategy") ?
Have you considered replacing get...Block methods with Block iterators?
Iterator<Block> iterator = new MetaDataIterator(new
ChildrenIterator(parent));
Hope this helps,
Marius
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs