#1275 - Additional refactor for - Add ServerConfig.setDefaultOrderById() ...

Removes the cast on DefaultOrmQuery.prepare()
This commit is contained in:
Rob Bygrave committed 2018-02-27 11:31:30 +13:00
1 parent 83cf768369
commit e751f991cb
5 files changed
+17 -17

No files matched your search

@@ -9,10 +9,10 @@ import io.ebean.Query;
import io.ebean.bean.CallStack;
import io.ebean.bean.ObjectGraphNode;
import io.ebean.bean.PersistenceContext;
import io.ebean.event.BeanQueryRequest;
import io.ebean.event.readaudit.ReadEvent;
import io.ebean.plugin.BeanType;
import io.ebeaninternal.server.autotune.ProfilingListener;
import io.ebeaninternal.server.core.SpiOrmQueryRequest;
import io.ebeaninternal.server.deploy.BeanDescriptor;
import io.ebeaninternal.server.deploy.BeanPropertyAssocMany;
import io.ebeaninternal.server.deploy.TableJoin;
@@ -566,7 +566,7 @@ public interface SpiQuery<T> extends Query<T>, TxnProfileEventCodes {
* The query plan excludes actual bind values (as they don't effect the query plan).
* </p>
*/
CQueryPlanKey prepare(BeanQueryRequest<?> request);
CQueryPlanKey prepare(SpiOrmQueryRequest<T> request);
/**
* Calculate a hash based on the bind values used in the query.
@@ -12,7 +12,6 @@ import io.ebean.common.BeanList;
import io.ebean.common.CopyOnFirstWriteList;
import io.ebean.event.BeanFindController;
import io.ebean.event.BeanQueryAdapter;
import io.ebean.event.BeanQueryRequest;
import io.ebean.text.json.JsonReadOptions;
import io.ebeaninternal.api.BeanCacheResult;
import io.ebeaninternal.api.CQueryPlanKey;
@@ -52,7 +51,7 @@ import java.util.function.Predicate;
/**
* Wraps the objects involved in executing a Query.
*/
public final class OrmQueryRequest<T> extends BeanRequest implements BeanQueryRequest<T>, SpiOrmQueryRequest<T> {
public final class OrmQueryRequest<T> extends BeanRequest implements SpiOrmQueryRequest<T> {
private static final Logger log = LoggerFactory.getLogger(OrmQueryRequest.class);
@@ -2,6 +2,7 @@ package io.ebeaninternal.server.core;
import io.ebean.QueryIterator;
import io.ebean.Version;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.SpiQuery;
import io.ebeaninternal.server.deploy.BeanDescriptor;
import io.ebeanservice.docstore.api.DocQueryRequest;
@@ -15,7 +16,7 @@ import java.util.function.Predicate;
/**
* Defines the ORM query request api.
*/
public interface SpiOrmQueryRequest<T> extends DocQueryRequest<T> {
public interface SpiOrmQueryRequest<T> extends BeanQueryRequest<T>, DocQueryRequest<T> {
/**
* Return the query.
@@ -26,7 +27,7 @@ public interface SpiOrmQueryRequest<T> extends DocQueryRequest<T> {
/**
* Return the associated BeanDescriptor.
*/
BeanDescriptor<?> getBeanDescriptor();
BeanDescriptor<T> getBeanDescriptor();
/**
* This will create a local (readOnly) transaction if no current transaction
@@ -39,7 +39,7 @@ import io.ebeaninternal.api.SpiNamedParam;
import io.ebeaninternal.api.SpiQuery;
import io.ebeaninternal.api.SpiQuerySecondary;
import io.ebeaninternal.server.autotune.ProfilingListener;
import io.ebeaninternal.server.core.OrmQueryRequest;
import io.ebeaninternal.server.core.SpiOrmQueryRequest;
import io.ebeaninternal.server.deploy.BeanDescriptor;
import io.ebeaninternal.server.deploy.BeanPropertyAssocMany;
import io.ebeaninternal.server.deploy.TableJoin;
@@ -1040,10 +1040,10 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
* Prepare the query which prepares any expressions (sub-query expressions etc) and calculates the query plan key.
*/
@Override
public CQueryPlanKey prepare(BeanQueryRequest<?> request) {
public CQueryPlanKey prepare(SpiOrmQueryRequest<T> request) {
prepareExpressions(request);
prepareForPaging((OrmQueryRequest) request);
prepareForPaging(request);
queryPlanKey = createQueryPlanKey();
return queryPlanKey;
}
@@ -1066,7 +1066,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
* property to ensure unique row ordering for predicable paging but only in
* case, this is not a distinct query
*/
private void prepareForPaging(OrmQueryRequest<T> request) {
private void prepareForPaging(SpiOrmQueryRequest<T> request) {
// add the rawSql statement - if any
if (orderByIsEmpty()) {
@@ -18,7 +18,7 @@ public class DefaultOrmQueryTest extends BaseTestCase {
public void when_forUpdate_then_excludeFromBeanCache() {
DefaultOrmQuery<Customer> q1 = (DefaultOrmQuery<Customer>) Ebean.find(Customer.class)
.setForUpdate(true).where().eq("id", 42).query();
.forUpdate().where().eq("id", 42).query();
assertThat(q1.getUseBeanCache()).isSameAs(CacheMode.OFF);
}
@@ -88,13 +88,13 @@ public class DefaultOrmQueryTest extends BaseTestCase {
}
@Test
public void when_diffFirstMaxRows_then_differentPlan() throws Exception {
public void when_diffFirstMaxRows_then_differentPlan() {
DefaultOrmQuery<?> query1 = (DefaultOrmQuery<?>) Ebean.find(Order.class)
DefaultOrmQuery<Order> query1 = (DefaultOrmQuery<Order>) Ebean.find(Order.class)
.setFirstRow(0)
.setMaxRows(31);
DefaultOrmQuery<?> query2 = (DefaultOrmQuery<?>) Ebean.find(Order.class)
DefaultOrmQuery<Order> query2 = (DefaultOrmQuery<Order>) Ebean.find(Order.class)
.setFirstRow(1)
.setMaxRows(0);
@@ -102,12 +102,12 @@ public class DefaultOrmQueryTest extends BaseTestCase {
assertThat(query1.createQueryPlanKey()).isNotEqualTo(query2.createQueryPlanKey());
}
private void prepare(DefaultOrmQuery<?> q1, DefaultOrmQuery<?> q2) {
private <T> void prepare(DefaultOrmQuery<T> q1, DefaultOrmQuery<T> q2) {
OrmQueryRequest<?> r1 = createQueryRequest(SpiQuery.Type.LIST, q1, null);
OrmQueryRequest<T> r1 = createQueryRequest(SpiQuery.Type.LIST, q1, null);
q1.prepare(r1);
OrmQueryRequest<?> r2 = createQueryRequest(SpiQuery.Type.LIST, q2, null);
OrmQueryRequest<T> r2 = createQueryRequest(SpiQuery.Type.LIST, q2, null);
q2.prepare(r2);
}
}