Package org.eclipse.rdf4j.federated.evaluation.iterator

## Class QueryResultIteration

- java.lang.Object
- - org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<BindingSet,​QueryEvaluationException>
  - - org.eclipse.rdf4j.federated.evaluation.iterator.QueryResultIteration

- All Implemented Interfaces:
    `AutoCloseable`, `CloseableIteration<BindingSet,​QueryEvaluationException>`, `Iteration<BindingSet,​QueryEvaluationException>`

      public class QueryResultIteration
      extends AbstractCloseableIteration<BindingSet,​QueryEvaluationException>

  An iteration which wraps the final result and in case of exceptions aborts query evaluation for the corresponding query in fedx (potentially subqueries are still running, and jobs are scheduled). If some external component calls close() on this iteration AND if the corresponding query is still running, the query is aborted within FedX. An example case would be Sesame's QueryInteruptIterations, which is used to enforce maxQueryTime. If the query is finished, the FederationManager is notified that the query is done, and the query is removed from the set of running queries.
  Author:
    Andreas Schwarte

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected CloseableIteration<BindingSet,​QueryEvaluationException>` | `inner` |
    `protected QueryManager` | `qm` |
    `protected QueryInfo` | `queryInfo` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `QueryResultIteration​(CloseableIteration<BindingSet,​QueryEvaluationException> inner, QueryInfo queryInfo)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `abortQuery()` | Abort the query in the schedulers if it is still running.
    `protected void` | `handleClose()` | Called by `AbstractCloseableIteration.close()` when it is called for the first time.
    `boolean` | `hasNext()` | Returns true if the iteration has more elements.
    `BindingSet` | `next()` | Returns the next element in the iteration.
    `void` | `remove()` | Removes from the underlying collection the last element returned by the iteration (optional operation).

    - ### Methods inherited from class org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration

      `close, isClosed`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.eclipse.rdf4j.common.iteration.Iteration

      `stream`

- - ### Field Detail

    - #### inner

          protected final CloseableIteration<BindingSet,​QueryEvaluationException> inner

    - #### queryInfo

          protected final QueryInfo queryInfo

    - #### qm

          protected final QueryManager qm

  - ### Constructor Detail

    - #### QueryResultIteration

          public QueryResultIteration​(CloseableIteration<BindingSet,​QueryEvaluationException> inner,
                                      QueryInfo queryInfo)

  - ### Method Detail

    - #### hasNext

          public boolean hasNext()
                          throws QueryEvaluationException

      Description copied from interface: `Iteration`
      Returns true if the iteration has more elements. (In other words, returns true if `Iteration.next()` would return an element rather than throwing a NoSuchElementException.)
      Returns:
        true if the iteration has more elements.
      Throws:
        `QueryEvaluationException`

    - #### next

          public BindingSet next()
                          throws QueryEvaluationException

      Description copied from interface: `Iteration`
      Returns the next element in the iteration.
      Returns:
        the next element in the iteration.
      Throws:
        `QueryEvaluationException`

    - #### 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.
      Throws:
        `QueryEvaluationException`

    - #### handleClose

          protected void handleClose()
                              throws QueryEvaluationException

      Description copied from class: `AbstractCloseableIteration`
      Called by `AbstractCloseableIteration.close()` when it is called for the first time. This method is only called once on each iteration. By default, this method does nothing.
      Overrides:
        `handleClose` in class `AbstractCloseableIteration<BindingSet,​QueryEvaluationException>`
      Throws:
        `QueryEvaluationException`

    - #### abortQuery

          protected void abortQuery()

      Abort the query in the schedulers if it is still running.