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
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()Removes from the underlying collection the last element returned by the iteration (optional operation).Spliterator<BindingSet>spliterator()Stream<BindingSet>stream()Convert the result elements to a JavaStream.
-
-
-
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,QueryEvaluationException>- 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 interfaceIteration<BindingSet,QueryEvaluationException>- 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 interfaceIteration<BindingSet,QueryEvaluationException>- 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 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
-
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,QueryEvaluationException>- Specified by:
streamin interfaceIteration<BindingSet,QueryEvaluationException>- 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>
-
-