Class ReusableTupleQueryResult
java.lang.Object
org.eclipse.rdf4j.spring.resultcache.ReusableTupleQueryResult
- All Implemented Interfaces:
AutoCloseable
,Iterable<BindingSet>
,CloseableIteration<BindingSet,
,QueryEvaluationException> Iteration<BindingSet,
,QueryEvaluationException> QueryResult<BindingSet>
,TupleQueryResult
,ThrowableRecorder
Wrapper for a TupleQueryResult, allowing the result to be replayed. The wrapper copies the result data, consuming the
original result fully on
close()
.
Example:
TupleQueryResult result = tupleQuery.execute(); ReuseableTupleQueryResult reusable = new ReuseableTupleQueryResult(result); while (reusable.hasNext()) { reuseable.next(); } reuseable.close(); TupleQueryResult cached = reuseable.recreateTupleQueryResult(); while (cached.hasNext()) { cached.next(); } cached.close();
- Since:
- 4.0.0
- Author:
- Florian Kleedorfer
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
canReuse()
void
close()
Closes this iteration, freeing any resources that it is holding.void
forEach
(Consumer<? super BindingSet> action) Gets the names of the bindings, in order of projection.boolean
hasNext()
Returns true if the iteration has more elements.iterator()
next()
Returns the next element in the iteration.boolean
queryBindingsAreIdentical
(BindingSet candidate) void
void
remove()
Removes from the underlying collection the last element returned by the iteration (optional operation).stream()
Convert the results to a Java 8 Stream.
-
Constructor Details
-
ReusableTupleQueryResult
-
-
Method Details
-
queryBindingsAreIdentical
-
canReuse
public boolean canReuse() -
recreateTupleQueryResult
-
recordThrowable
- Specified by:
recordThrowable
in interfaceThrowableRecorder
-
getBindingNames
Description copied from interface:TupleQueryResult
Gets the names of the bindings, in order of projection.- Specified by:
getBindingNames
in interfaceTupleQueryResult
- Returns:
- The binding names, in order of projection.
- Throws:
QueryEvaluationException
-
iterator
- Specified by:
iterator
in interfaceIterable<BindingSet>
- Specified by:
iterator
in interfaceQueryResult<BindingSet>
-
close
Description copied from interface:CloseableIteration
Closes 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:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseableIteration<BindingSet,
QueryEvaluationException> - Throws:
QueryEvaluationException
-
hasNext
Description copied from interface:Iteration
Returns 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:
hasNext
in interfaceIteration<BindingSet,
QueryEvaluationException> - Returns:
- true if the iteration has more elements.
- Throws:
QueryEvaluationException
-
next
Description copied from interface:Iteration
Returns the next element in the iteration.- Specified by:
next
in interfaceIteration<BindingSet,
QueryEvaluationException> - Returns:
- the next element in the iteration.
- Throws:
QueryEvaluationException
-
remove
Description copied from interface:Iteration
Removes 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:
remove
in interfaceIteration<BindingSet,
QueryEvaluationException> - Throws:
QueryEvaluationException
-
stream
Description copied from interface:Iteration
Convert the results to a Java 8 Stream. If this iteration implements CloseableIteration it should be closed (by calling Stream#close() or using try-with-resource) if it is not fully consumed.- Specified by:
stream
in interfaceIteration<BindingSet,
QueryEvaluationException> - Returns:
- stream
-
forEach
- Specified by:
forEach
in interfaceIterable<BindingSet>
-
spliterator
- Specified by:
spliterator
in interfaceIterable<BindingSet>
-