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") ?

-- 
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to