Package org.apache.cayenne.query

# Interface QueryRouter

public interface QueryRouter
An interface used by Queries to route themselves to an appropriate QueryEngine. As of 1.2 QueryRouter only supports routing by DataMap.

Since:
  1.2

- ## Method Summary

  Modifier and Type
  Method
  Description
  `QueryEngine`
  `engineForDataMap(DataMap map)`
  Returns a QueryEngine that is configured to handle a given DataMap.
  `QueryEngine`
  `engineForName(String name)`
  Returns a QueryEngine for a given name.
  `void`
  `route(QueryEngine engine, Query query, Query substitutedQuery)`
  A callback method that allows a query to set its preferred engine during the routing phase.

- ## Method Details

  - ### route

    void route(QueryEngine engine, Query query, Query substitutedQuery)
    A callback method that allows a query to set its preferred engine during the routing phase. It allows query to further customize its routing, e.g. it is possible to implement query chains that pass multiple queries for execution.
    Parameters:
      `engine` - engine to use for query execution
      `query` - A query to execute.
      `substitutedQuery` - a query that was substituted for "query". Results must be mapped back to substituted query.

  - ### engineForName

    QueryEngine engineForName(String name)
    Returns a QueryEngine for a given name. If the name is null, a default QueryEngine is returned. If there's no default engine, an exception is thrown.
    Since:
      4.0

  - ### engineForDataMap

    QueryEngine engineForDataMap(DataMap map)
    Returns a QueryEngine that is configured to handle a given DataMap.
    Throws:
      `CayenneRuntimeException` - if an engine can't be found.
      `NullPointerException` - if a map parameter is null.