Class ReusableGraphQueryResult
- java.lang.Object
-
- org.eclipse.rdf4j.spring.resultcache.ReusableGraphQueryResult
-
- All Implemented Interfaces:
AutoCloseable,Iterable<Statement>,CloseableIteration<Statement,QueryEvaluationException>,Iteration<Statement,QueryEvaluationException>,GraphQueryResult,QueryResult<Statement>,ThrowableRecorder
public class ReusableGraphQueryResult extends Object implements GraphQueryResult, ThrowableRecorder
Wrapper for a TupleQueryResult, allowing the result to be replayed. Not thread-safe. 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(); GraphQueryResult cached = reuseable.recreateGraphQueryResult(); while (cached.hasNext()) { cached.next(); } cached.close();- Since:
- 4.0.0
- Author:
- Florian Kleedorfer
-
-
Constructor Summary
Constructors Constructor Description ReusableGraphQueryResult(GraphQueryResult 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 Statement> action)Map<String,String>getNamespaces()Retrieves relevant namespaces from the query result.booleanhasNext()Returnstrueif the query result has more elements.Iterator<Statement>iterator()Statementnext()Returns the next element in the query result.booleanqueryBindingsAreIdentical(BindingSet candidate)voidrecordThrowable(Throwable t)CachedGraphQueryResultrecreateGraphQueryResult()voidremove()Removes from the underlying collection the last element returned by the iteration (optional operation).Spliterator<Statement>spliterator()Stream<Statement>stream()Convert the result elements to a JavaStream.
-
-
-
Constructor Detail
-
ReusableGraphQueryResult
public ReusableGraphQueryResult(GraphQueryResult result, BindingSet queryBindings)
-
-
Method Detail
-
queryBindingsAreIdentical
public boolean queryBindingsAreIdentical(BindingSet candidate)
-
canReuse
public boolean canReuse()
-
recreateGraphQueryResult
public CachedGraphQueryResult recreateGraphQueryResult()
-
recordThrowable
public void recordThrowable(Throwable t)
- Specified by:
recordThrowablein interfaceThrowableRecorder
-
getNamespaces
public Map<String,String> getNamespaces() throws QueryEvaluationException
Description copied from interface:GraphQueryResultRetrieves relevant namespaces from the query result.
The contents of the Map may be modified after it is returned, as the initial return may be performed when the first RDF Statement is encountered.- Specified by:
getNamespacesin interfaceGraphQueryResult- Returns:
- a Map<String, String> object containing (prefix, namespace) pairs.
- Throws:
QueryEvaluationException
-
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<Statement,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<Statement,QueryEvaluationException>- Specified by:
hasNextin interfaceQueryResult<Statement>- Returns:
trueif the iteration has more elements.- Throws:
QueryEvaluationException- if an error occurs while executing the query.
-
next
public Statement next() throws QueryEvaluationException
Description copied from interface:QueryResultReturns the next element in the query result.- Specified by:
nextin interfaceIteration<Statement,QueryEvaluationException>- Specified by:
nextin interfaceQueryResult<Statement>- 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<Statement,QueryEvaluationException>- Throws:
QueryEvaluationException
-
stream
public Stream<Statement> 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<Statement,QueryEvaluationException>- Specified by:
streamin interfaceIteration<Statement,QueryEvaluationException>- Specified by:
streamin interfaceQueryResult<Statement>- Returns:
- stream a
Streamof query result elements.
-
spliterator
public Spliterator<Statement> spliterator()
- Specified by:
spliteratorin interfaceIterable<Statement>
-
-