throw new QueryBuilderVisitorException( e );
}
}
public DocumentIterator visit( Range node ) throws QueryBuilderVisitorException {
final Index index = curr.top();
if ( ! index.hasPayloads ) throw new IllegalStateException( "Index " + index + " does not have payloads" );
try {
final Object parser = index2Parser.containsKey( index ) ? index2Parser.get( index ) : index.payload;
final Method method = parser.getClass().getMethod( "parse", String.class );
final Payload left = index.payload.copy(), right = index.payload.copy();
if ( node.left != null ) left.set( method.invoke( parser, node.left.toString() ) );
if ( node.right != null ) right.set( method.invoke( parser, node.right.toString() ) );
return PayloadPredicateDocumentIterator.getInstance( index.documents( 0 ),
index.payload.rangeFilter( node.left == null ? null : left, node.right == null ? null : right ) ).weight( weight() );
}
catch( InvocationTargetException e ) {
throw new QueryBuilderVisitorException( e.getCause() );
}