org.tinyjee.maven.dim.sources
Class XPathSnippetSelector

java.lang.Object
  extended by org.tinyjee.maven.dim.sources.AbstractSnippetSelector
      extended by org.tinyjee.maven.dim.sources.XPathSnippetSelector
All Implemented Interfaces:
SnippetSelector

public class XPathSnippetSelector
extends AbstractSnippetSelector

Implements a XPath expression based snippet selector supporting XML and JSON formatted input, using the expression prefix "XP:".

Well formed content required: This snippet selector requires well formed XML or JSON input. Anything else will cause failures.

Example Expressions:

Notes:

Author:
Juergen_Kellerer, 2011-10-14

Field Summary
static String NAMESPACE_AWARE
           
 
Fields inherited from class org.tinyjee.maven.dim.sources.AbstractSnippetSelector
expressionPrefix
 
Fields inherited from interface org.tinyjee.maven.dim.spi.SnippetSelector
CASE_SENSITIVE, EXPAND_SNIPPETS, SELECTORS
 
Constructor Summary
  XPathSnippetSelector()
           
protected XPathSnippetSelector(String expressionPrefix)
           
 
Method Summary
 Iterator<Integer> selectSnippets(String expression, URL contentUrl, LineNumberReader content, Map<String,Object> macroParameters)
          Selects snippets in the given content and returns an iterator over selected line numbers.
 
Methods inherited from class org.tinyjee.maven.dim.sources.AbstractSnippetSelector
assertExpressionIsValid, canSelectSnippetsWith, getExpressionPrefixes, stripPrefix, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NAMESPACE_AWARE

public static final String NAMESPACE_AWARE
See Also:
Constant Field Values
Constructor Detail

XPathSnippetSelector

public XPathSnippetSelector()

XPathSnippetSelector

protected XPathSnippetSelector(String expressionPrefix)
Method Detail

selectSnippets

public Iterator<Integer> selectSnippets(String expression,
                                        URL contentUrl,
                                        LineNumberReader content,
                                        Map<String,Object> macroParameters)
                                 throws IOException
Description copied from interface: SnippetSelector
Selects snippets in the given content and returns an iterator over selected line numbers.

Note: The caller reads the returned iterator fully before closing the content stream. This way snippet selectors can truly implement streaming selection (in difference to the provided example).

Parameters:
expression - a single snippet expression.
contentUrl - the resolved URL of the content to include (might be 'null' if the source does not provide a Url).
content - a reader providing the content. Implementations must read content from this reader as the Url may point to an outdated static source that does not reflect the content to include.
macroParameters - the parameters used with the macro call.
Returns:
an iterator containing all selected line numbers.
Throws:
IOException - In case of reading the URL failed.