/* * @author mandubian <pascal.voitot@mandubian.org> */ package siena.gae; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.concurrent.Future; import org.apache.commons.lang.NotImplementedException; import siena.ClassInfo; import siena.PersistenceManager; import siena.SienaException; import siena.Util; import siena.core.async.AbstractPersistenceManagerAsync; import siena.core.async.QueryAsync; import siena.core.async.SienaFuture; import siena.core.async.SienaFutureContainer; import siena.core.async.SienaFutureMock; import siena.core.async.SienaFutureWrapper; import siena.core.options.QueryOptionFetchType; import siena.core.options.QueryOptionOffset; import siena.core.options.QueryOptionPage; import siena.core.options.QueryOptionState; import com.google.appengine.api.datastore.AsyncDatastoreService; import com.google.appengine.api.datastore.Cursor; import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.FetchOptions; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.PreparedQuery; import com.google.appengine.api.datastore.QueryResultIterable; import com.google.appengine.api.datastore.QueryResultList; import com.google.appengine.api.datastore.Transaction; import com.googlecode.objectify.cache.CachingDatastoreServiceFactory; import com.googlecode.objectify.cache.EntityMemcache; public class GaeCachingPersistenceManagerAsync extends GaePersistenceManagerAsync { protected EntityMemcache entityMemcache; public GaeCachingPersistenceManagerAsync() { super(); } public GaeCachingPersistenceManagerAsync(EntityMemcache em) { super(); entityMemcache = em; } @Override public void init(Properties p) { ds = entityMemcache == null ? CachingDatastoreServiceFactory.getAsyncDatastoreService() : CachingDatastoreServiceFactory.getAsyncDatastoreService(entityMemcache); props = p; } @Override public void init(Properties p, PersistenceManager syncPm) { this.syncPm = syncPm; ds = entityMemcache == null ? CachingDatastoreServiceFactory.getAsyncDatastoreService() : CachingDatastoreServiceFactory.getAsyncDatastoreService(entityMemcache); props = p; } @Override public PersistenceManager sync() { if(syncPm==null){ syncPm = new GaeCachingPersistenceManager(entityMemcache); syncPm.init(props); } return syncPm; } }