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
public class ReusableTupleQueryResult extends Object implements TupleQueryResult, ThrowableRecorder
Wrapper for a TupleQueryResult, allowing the result to be replayed. The wrapper copies the result data, consuming the original result fully onclose().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 Constructor Description ReusableTupleQueryResult(TupleQueryResult result, BindingSet queryBindings)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanReuse()voidclose()Closes this iteration, freeing any resources that it is holding.voidforEach(Consumer<? super BindingSet> action)List<String>getBindingNames()Gets the names of the bindings, in order of projection.booleanhasNext()Returnstrueif the query result has more elements.Iterator<BindingSet>iterator()BindingSetnext()Returns the next element in the query result.booleanqueryBindingsAreIdentical(BindingSet candidate)voidrecordThrowable(Throwable t)CachedTupleQueryResultrecreateTupleQueryResult()voidremove()Spliterator<BindingSet>spliterator()Stream<BindingSet>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, wait
-
Methods inherited from interface java.util.Iterator
forEachRemaining
-
-
-
-
Constructor Detail
-
ReusableTupleQueryResult
public ReusableTupleQueryResult(TupleQueryResult result, BindingSet queryBindings)
-
-
Method Detail
-
queryBindingsAreIdentical
public boolean queryBindingsAreIdentical(BindingSet candidate)
-
canReuse
public boolean canReuse()
-
recreateTupleQueryResult
public CachedTupleQueryResult recreateTupleQueryResult()
-
recordThrowable
public void recordThrowable(Throwable t)
- Specified by:
recordThrowablein interfaceThrowableRecorder
-
getBindingNames
public List<String> getBindingNames() throws QueryEvaluationException
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
public Iterator<BindingSet> iterator()
- Specified by:
iteratorin interfaceIterable<BindingSet>- Specified by:
iteratorin interfaceQueryResult<BindingSet>
-
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 interfaceAutoCloseable- Specified by:
closein interfaceCloseableIteration<BindingSet>- Throws:
QueryEvaluationException
-
hasNext
public boolean hasNext() throws QueryEvaluationExceptionDescription 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
public BindingSet next() throws QueryEvaluationException
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
public void remove() throws QueryEvaluationException- Specified by:
removein interfaceIterator<BindingSet>- Throws:
QueryEvaluationException
-
stream
public Stream<BindingSet> 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
public void forEach(Consumer<? super BindingSet> action)
- Specified by:
forEachin interfaceIterable<BindingSet>
-
spliterator
public Spliterator<BindingSet> spliterator()
- Specified by:
spliteratorin interfaceIterable<BindingSet>
-
-