Class ReusableTupleQueryResult
java.lang.Object
org.eclipse.rdf4j.spring.resultcache.ReusableTupleQueryResult
- All Implemented Interfaces:
AutoCloseable,Iterable<BindingSet>,Iterator<BindingSet>,CloseableIteration<BindingSet>,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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancanReuse()voidclose()Closes this iteration, freeing any resources that it is holding.voidforEach(Consumer<? super BindingSet> action) Gets the names of the bindings, in order of projection.booleanhasNext()Returnstrueif the query result has more elements.iterator()next()Returns the next element in the query result.booleanqueryBindingsAreIdentical(BindingSet candidate) voidvoidremove()stream()Convert the result elements to a JavaStream.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Iterator
forEachRemaining
-
Constructor Details
-
ReusableTupleQueryResult
-
-
Method Details
-
queryBindingsAreIdentical
-
canReuse
public boolean canReuse() -
recreateTupleQueryResult
-
recordThrowable
- Specified by:
recordThrowablein interfaceThrowableRecorder
-
getBindingNames
Description copied from interface:TupleQueryResultGets the names of the bindings, in order of projection.- Specified by:
getBindingNamesin interfaceTupleQueryResult- Returns:
- The binding names, in order of projection.
- Throws:
QueryEvaluationException
-
iterator
- Specified by:
iteratorin interfaceIterable<BindingSet>- Specified by:
iteratorin interfaceQueryResult<BindingSet>
-
close
Description 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 interfaceAutoCloseable- Specified by:
closein interfaceCloseableIteration<BindingSet>- Throws:
QueryEvaluationException
-
hasNext
Description copied from interface:QueryResultReturnstrueif the query result has more elements. (In other words, returnstrueifQueryResult.next()would return an element rather than throwing aNoSuchElementException.)- Specified by:
hasNextin interfaceIterator<BindingSet>- Specified by:
hasNextin interfaceQueryResult<BindingSet>- Returns:
trueif the iteration has more elements.- Throws:
QueryEvaluationException- if an error occurs while executing the query.
-
next
Description copied from interface:QueryResultReturns the next element in the query result.- Specified by:
nextin interfaceIterator<BindingSet>- Specified by:
nextin interfaceQueryResult<BindingSet>- Returns:
- the next element in the query result.
- Throws:
QueryEvaluationException- if an error occurs while executing the query.
-
remove
- Specified by:
removein interfaceIterator<BindingSet>- Throws:
QueryEvaluationException
-
stream
Description copied from interface:QueryResultConvert the result elements to a JavaStream. Note that the consumer should take care to close the stream (by calling Stream#close() or using try-with-resource) if it is not fully consumed.- Specified by:
streamin interfaceCloseableIteration<BindingSet>- Specified by:
streamin interfaceQueryResult<BindingSet>- Returns:
- stream a
Streamof query result elements.
-
forEach
- Specified by:
forEachin interfaceIterable<BindingSet>
-
spliterator
- Specified by:
spliteratorin interfaceIterable<BindingSet>
-