Class StatementPatternQueryEvaluationStep.ConvertStatementToBindingSetIterator
- java.lang.Object
-
- org.eclipse.rdf4j.query.algebra.evaluation.impl.evaluationsteps.StatementPatternQueryEvaluationStep.ConvertStatementToBindingSetIterator
-
- All Implemented Interfaces:
java.lang.AutoCloseable,CloseableIteration<BindingSet,QueryEvaluationException>,Iteration<BindingSet,QueryEvaluationException>
- Enclosing class:
- StatementPatternQueryEvaluationStep
private static final class StatementPatternQueryEvaluationStep.ConvertStatementToBindingSetIterator extends java.lang.Object implements CloseableIteration<BindingSet,QueryEvaluationException>
Converts statements into the required bindingsets. A lot of work is done in the constructor and then uses invokedynamic code with lambdas for the actual conversion.This allows avoiding of significant work during the iteration. Which pays of if the iteration is long, otherwise it of course is an unneeded expense.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.function.BiConsumer<MutableBindingSet,Statement>actionprivate booleanclosedprivate QueryEvaluationContextcontextprivate CloseableIteration<? extends Statement,? extends QueryEvaluationException>iteration
-
Constructor Summary
Constructors Modifier Constructor Description privateConvertStatementToBindingSetIterator(CloseableIteration<? extends Statement,? extends QueryEvaluationException> iteration, java.util.function.BiConsumer<MutableBindingSet,Statement> action, QueryEvaluationContext context)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes this iteration, freeing any resources that it is holding.private BindingSetconvert(Statement st)booleanhasNext()Returns true if the iteration has more elements.BindingSetnext()Returns the next element in the iteration.voidremove()Removes from the underlying collection the last element returned by the iteration (optional operation).-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.rdf4j.common.iteration.CloseableIteration
stream
-
-
-
-
Field Detail
-
action
private final java.util.function.BiConsumer<MutableBindingSet,Statement> action
-
context
private final QueryEvaluationContext context
-
iteration
private final CloseableIteration<? extends Statement,? extends QueryEvaluationException> iteration
-
closed
private boolean closed
-
-
Constructor Detail
-
ConvertStatementToBindingSetIterator
private ConvertStatementToBindingSetIterator(CloseableIteration<? extends Statement,? extends QueryEvaluationException> iteration, java.util.function.BiConsumer<MutableBindingSet,Statement> action, QueryEvaluationContext context)
-
-
Method Detail
-
convert
private BindingSet convert(Statement st)
-
hasNext
public boolean hasNext() throws QueryEvaluationExceptionDescription copied from interface:IterationReturns true if the iteration has more elements. (In other words, returns true ifIteration.next()would return an element rather than throwing a NoSuchElementException.)- Specified by:
hasNextin interfaceIteration<BindingSet,QueryEvaluationException>- Returns:
- true if the iteration has more elements.
- Throws:
QueryEvaluationException
-
next
public BindingSet next() throws QueryEvaluationException
Description copied from interface:IterationReturns the next element in the iteration.- Specified by:
nextin interfaceIteration<BindingSet,QueryEvaluationException>- Returns:
- the next element in the iteration.
- Throws:
QueryEvaluationException
-
remove
public void remove() throws QueryEvaluationExceptionDescription copied from interface:IterationRemoves from the underlying collection the last element returned by the iteration (optional operation). This method can be called only once per call to next.- Specified by:
removein interfaceIteration<BindingSet,QueryEvaluationException>- Throws:
QueryEvaluationException
-
close
public void close() throws QueryEvaluationExceptionDescription copied from interface:CloseableIterationCloses this iteration, freeing any resources that it is holding. If the iteration has already been closed then invoking this method has no effect.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfaceCloseableIteration<BindingSet,QueryEvaluationException>- Throws:
QueryEvaluationException
-
-