# Interface QueryResponse

All Known Implementing Classes:
  `GenericResponse, IncrementalListResponse, ListResponse`

public interface QueryResponse
Represents a result of query execution. It potentially contain a mix of update counts and lists of selected values. Provides API somewhat similar to java.util.Iterator or java.sql.ResultSet for scanning through the individual results.

An example of iterating through a response:

    QueryResponse response = context.performGenericQuery(query);
    for (response.reset(); response.next();) {
        if (response.isList()) {
            List list = response.currentList();
            // ...
        }
        else {
            int[] updateCounts = response.currentUpdateCount();
            // ...
        }
    }

In case the structure of the result is known, and only a single list or an update count is expected, there is a simpler API to access them:

    QueryResponse response = context.performGenericQuery(query);
    List list = response.firstList();
    int[] count = response.firstUpdateCount();

Since:
  1.2

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default ResultIterator<?>`
  `currentIterator()`
  Returns a current iterator.
  `default List<?>`
  `currentList()`
  Returns a List under the current iterator position.
  `default int[]`
  `currentUpdateCount()`
  Returns an update count under the current iterator position.
  `default ResultIterator<?>`
  `firstIterator()`
  A utility method for quickly retrieving the Iterator in the response.
  `default List<?>`
  `firstList()`
  A utility method for quickly retrieving the first list in the response.
  `default int[]`
  `firstUpdateCount()`
  A utility method for quickly retrieving the first update count from the response.
  `default boolean`
  `isIterator()`
  Returns whether current response is an iterator
  `default boolean`
  `isList()`
  Returns whether current iteration result is a list or an update count.
  `boolean`
  `next()`
  Rewinds response iterator to the next result, returning true if it is available.
  `void`
  `reset()`
  Restarts response iterator.
  `int`
  `size()`
  Returns a number of results in the response.

- ## Method Details

  - ### size

    int size()
    Returns a number of results in the response.

  - ### isList

    default boolean isList()
    Returns whether current iteration result is a list or an update count.

  - ### isIterator

    default boolean isIterator()
    Returns whether current response is an iterator
    Since:
      5.0

  - ### currentList

    default List<?> currentList()
    Returns a List under the current iterator position. Use `isList()` to check the result type before calling this method.

  - ### currentIterator

    default ResultIterator<?> currentIterator()
    Returns a current iterator.
    Since:
      5.0

  - ### currentUpdateCount

    default int[] currentUpdateCount()
    Returns an update count under the current iterator position. Returned value is an int[] to accommodate batch queries. For a regular update result, the value will be an int[1]. Use `isList()` to check the result type before calling this method.

  - ### next

    boolean next()
    Rewinds response iterator to the next result, returning true if it is available.

  - ### reset

    void reset()
    Restarts response iterator.

  - ### firstList

    default List<?> firstList()
    A utility method for quickly retrieving the first list in the response. Returns null if the query has no lists. Note that this method resets current iterator to an undefined state.

  - ### firstIterator

    default ResultIterator<?> firstIterator()
    A utility method for quickly retrieving the Iterator in the response. Returns null if the query has no iterator.
    Since:
      5.0

  - ### firstUpdateCount

    default int[] firstUpdateCount()
    A utility method for quickly retrieving the first update count from the response. Note that this method resets current iterator to an undefined state.