001package com.avaje.ebean.delegate;
002
003import com.avaje.ebean.EbeanServer;
004import com.avaje.ebean.FutureIds;
005import com.avaje.ebean.FutureList;
006import com.avaje.ebean.FutureRowCount;
007import com.avaje.ebean.PagedList;
008import com.avaje.ebean.Query;
009import com.avaje.ebean.QueryEachConsumer;
010import com.avaje.ebean.QueryEachWhileConsumer;
011import com.avaje.ebean.Transaction;
012import com.avaje.ebean.Version;
013import com.avaje.ebeaninternal.api.SpiQuery;
014
015import java.util.List;
016import java.util.Map;
017import java.util.Set;
018
019/**
020 * Wraps an underlying EbeanServer.
021 * <p>
022 * Can you used for testing purposes when you want to create a test double that
023 * only replaces some of the underlying functionality of the EbeanServer.
024 */
025public class DelegateFind implements InterceptFind {
026
027  protected EbeanServer delegate;
028
029  /**
030   * Construct with a EbeanServer to delegate to by default.
031   * <p>
032   * This delegate will be used on all method calls that are not overwritten.
033   */
034  public DelegateFind(EbeanServer delegate) {
035    this.delegate = delegate;
036  }
037
038  @Override
039  public void refresh(Object bean) {
040    delegate.refresh(bean);
041  }
042
043  @Override
044  public void refreshMany(Object bean, String propertyName) {
045    delegate.refreshMany(bean, propertyName);
046  }
047
048  @Override
049  public <T> T findUnique(Query<T> query, Transaction transaction) {
050    return delegate.findUnique(query, transaction);
051  }
052
053  @Override
054  public <T> T find(Class<T> beanType, Object id, Transaction transaction) {
055    return delegate.find(beanType, id, transaction);
056  }
057
058  @Override
059  public <T> int findRowCount(Query<T> query, Transaction transaction) {
060    return delegate.findRowCount(query, transaction);
061  }
062
063  @Override
064  public <T> List<Object> findIds(Query<T> query, Transaction transaction) {
065    return delegate.findIds(query, transaction);
066  }
067
068  @Override
069  public <T> void findEach(Query<T> query, QueryEachConsumer<T> consumer, Transaction transaction) {
070    delegate.findEach(query, consumer, transaction);
071  }
072
073  @Override
074  public <T> void findEachWhile(Query<T> query, QueryEachWhileConsumer<T> consumer, Transaction transaction) {
075    delegate.findEachWhile(query, consumer, transaction);
076  }
077
078  @Override
079  public <T> List<T> findList(Query<T> query, Transaction transaction) {
080
081    SpiQuery q = (SpiQuery)query;
082    q.getBeanType();
083    return delegate.findList(query, transaction);
084  }
085
086  @Override
087  public <T> FutureRowCount<T> findFutureRowCount(Query<T> query, Transaction transaction) {
088    return delegate.findFutureRowCount(query, transaction);
089  }
090
091  @Override
092  public <T> FutureIds<T> findFutureIds(Query<T> query, Transaction transaction) {
093    return delegate.findFutureIds(query, transaction);
094  }
095
096  @Override
097  public <T> FutureList<T> findFutureList(Query<T> query, Transaction transaction) {
098    return delegate.findFutureList(query, transaction);
099  }
100
101  @Override
102  public <T> PagedList<T> findPagedList(Query<T> query, Transaction transaction) {
103    return delegate.findPagedList(query, transaction);
104  }
105
106  @Override
107  public <T> Set<T> findSet(Query<T> query, Transaction transaction) {
108    return delegate.findSet(query, transaction);
109  }
110
111  @Override
112  public <T> Map<?, T> findMap(Query<T> query, Transaction transaction) {
113    return delegate.findMap(query, transaction);
114  }
115
116  @Override
117  public <T> List<Version<T>> findVersions(Query<T> query, Transaction transaction) {
118    return delegate.findVersions(query, transaction);
119  }
120}