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 boolean
canReuse()
void
close()
Closes this iteration, freeing any resources that it is holding.void
forEach(Consumer<? super BindingSet> action)
List<String>
getBindingNames()
Gets the names of the bindings, in order of projection.boolean
hasNext()
Returnstrue
if the query result has more elements.Iterator<BindingSet>
iterator()
BindingSet
next()
Returns the next element in the query result.boolean
queryBindingsAreIdentical(BindingSet candidate)
void
recordThrowable(Throwable t)
CachedTupleQueryResult
recreateTupleQueryResult()
void
remove()
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:
recordThrowable
in interfaceThrowableRecorder
-
getBindingNames
public List<String> getBindingNames() throws QueryEvaluationException
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
public Iterator<BindingSet> iterator()
- Specified by:
iterator
in interfaceIterable<BindingSet>
- Specified by:
iterator
in interfaceQueryResult<BindingSet>
-
close
public void close() throws QueryEvaluationException
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
public boolean hasNext() throws QueryEvaluationException
Description copied from interface:QueryResult
Returnstrue
if the query result has more elements. (In other words, returnstrue
ifQueryResult.next()
would return an element rather than throwing aNoSuchElementException
.)- Specified by:
hasNext
in interfaceIteration<BindingSet,QueryEvaluationException>
- Specified by:
hasNext
in interfaceQueryResult<BindingSet>
- Returns:
true
if 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:QueryResult
Returns the next element in the query result.- Specified by:
next
in interfaceIteration<BindingSet,QueryEvaluationException>
- Specified by:
next
in 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
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
public Stream<BindingSet> stream()
Description copied from interface:QueryResult
Convert 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:
stream
in interfaceCloseableIteration<BindingSet,QueryEvaluationException>
- Specified by:
stream
in interfaceIteration<BindingSet,QueryEvaluationException>
- Specified by:
stream
in interfaceQueryResult<BindingSet>
- Returns:
- stream a
Stream
of query result elements.
-
forEach
public void forEach(Consumer<? super BindingSet> action)
- Specified by:
forEach
in interfaceIterable<BindingSet>
-
spliterator
public Spliterator<BindingSet> spliterator()
- Specified by:
spliterator
in interfaceIterable<BindingSet>
-
-