package io.ebean.event; import io.ebean.config.ServerConfig; /** * Objects extending this modify queries prior their execution. * <p> * This can be used to add expressions to a query - for example to enable * partitioning based on the user executing the query. * </p> * <p> * A BeanQueryAdapter is either found automatically via class path search or can * be added programmatically via {@link ServerConfig#add(BeanQueryAdapter)}. * </p> * <p> * Note that a BeanQueryAdapter should be thread safe (stateless) and if * registered automatically via class path search it needs to have a default * constructor. * </p> */ public interface BeanQueryAdapter { /** * Return true if this adapter is interested in queries for the given entity * type. */ boolean isRegisterFor(Class<?> cls); /** * Returns an int to to control the order in which BeanQueryAdapter are * executed when there is multiple of them registered for a given entity type * (class). */ int getExecutionOrder(); /** * Modify the associated query prior to it being executed. */ void preQuery(BeanQueryRequest<?> request); }