com.googlecode.objectify.cache
Class CachingAsyncDatastoreService

java.lang.Object
  extended by com.googlecode.objectify.cache.CachingAsyncDatastoreService
All Implemented Interfaces:
com.google.appengine.api.datastore.AsyncDatastoreService, com.google.appengine.api.datastore.BaseDatastoreService

public class CachingAsyncDatastoreService
extends java.lang.Object
implements com.google.appengine.api.datastore.AsyncDatastoreService

A write-through memcache for Entity objects that works for both transactional and nontransactional sessions.

Note: Until Google adds a hook that lets us wrap native Future implementations, you muse install the AsyncCacheFilter to use this cache asynchronously. This is not necessary for synchronous use of CachingDatastoreService, but asynchronous operation requires an extra hook for the end of a request when fired-and-forgotten put()s and delete()s get processed. If you use this cache asynchronously, and you do not use the AsyncCacheFilter, your cache will go out of sync.

Author:
Jeff Schnitzer

Constructor Summary
CachingAsyncDatastoreService(com.google.appengine.api.datastore.AsyncDatastoreService rawAsync, EntityMemcache memcache)
           
 
Method Summary
 java.util.concurrent.Future<com.google.appengine.api.datastore.KeyRange> allocateIds(com.google.appengine.api.datastore.Key parent, java.lang.String kind, long num)
           
 java.util.concurrent.Future<com.google.appengine.api.datastore.KeyRange> allocateIds(java.lang.String kind, long num)
           
 java.util.concurrent.Future<com.google.appengine.api.datastore.Transaction> beginTransaction()
           
 java.util.concurrent.Future<com.google.appengine.api.datastore.Transaction> beginTransaction(com.google.appengine.api.datastore.TransactionOptions options)
           
 java.util.concurrent.Future<java.lang.Void> delete(java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
           
 java.util.concurrent.Future<java.lang.Void> delete(com.google.appengine.api.datastore.Key... keys)
           
 java.util.concurrent.Future<java.lang.Void> delete(com.google.appengine.api.datastore.Transaction txn, java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
           
 java.util.concurrent.Future<java.lang.Void> delete(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Key... keys)
           
 java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> get(java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
           
 java.util.concurrent.Future<com.google.appengine.api.datastore.Entity> get(com.google.appengine.api.datastore.Key key)
           
 java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> get(com.google.appengine.api.datastore.Transaction txn, java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
           
 java.util.concurrent.Future<com.google.appengine.api.datastore.Entity> get(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Key key)
           
 java.util.Collection<com.google.appengine.api.datastore.Transaction> getActiveTransactions()
           
 com.google.appengine.api.datastore.Transaction getCurrentTransaction()
           
 com.google.appengine.api.datastore.Transaction getCurrentTransaction(com.google.appengine.api.datastore.Transaction txn)
           
 java.util.concurrent.Future<com.google.appengine.api.datastore.DatastoreAttributes> getDatastoreAttributes()
           
 java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Index,com.google.appengine.api.datastore.Index.IndexState>> getIndexes()
           
 com.google.appengine.api.datastore.PreparedQuery prepare(com.google.appengine.api.datastore.Query query)
           
 com.google.appengine.api.datastore.PreparedQuery prepare(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Query query)
           
 java.util.concurrent.Future<com.google.appengine.api.datastore.Key> put(com.google.appengine.api.datastore.Entity entity)
           
 java.util.concurrent.Future<java.util.List<com.google.appengine.api.datastore.Key>> put(java.lang.Iterable<com.google.appengine.api.datastore.Entity> entities)
           
 java.util.concurrent.Future<com.google.appengine.api.datastore.Key> put(com.google.appengine.api.datastore.Transaction txn, com.google.appengine.api.datastore.Entity entity)
           
 java.util.concurrent.Future<java.util.List<com.google.appengine.api.datastore.Key>> put(com.google.appengine.api.datastore.Transaction txn, java.lang.Iterable<com.google.appengine.api.datastore.Entity> entities)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CachingAsyncDatastoreService

public CachingAsyncDatastoreService(com.google.appengine.api.datastore.AsyncDatastoreService rawAsync,
                                    EntityMemcache memcache)
Method Detail

allocateIds

public java.util.concurrent.Future<com.google.appengine.api.datastore.KeyRange> allocateIds(java.lang.String kind,
                                                                                            long num)
Specified by:
allocateIds in interface com.google.appengine.api.datastore.AsyncDatastoreService

allocateIds

public java.util.concurrent.Future<com.google.appengine.api.datastore.KeyRange> allocateIds(com.google.appengine.api.datastore.Key parent,
                                                                                            java.lang.String kind,
                                                                                            long num)
Specified by:
allocateIds in interface com.google.appengine.api.datastore.AsyncDatastoreService

beginTransaction

public java.util.concurrent.Future<com.google.appengine.api.datastore.Transaction> beginTransaction()
Specified by:
beginTransaction in interface com.google.appengine.api.datastore.AsyncDatastoreService

beginTransaction

public java.util.concurrent.Future<com.google.appengine.api.datastore.Transaction> beginTransaction(com.google.appengine.api.datastore.TransactionOptions options)
Specified by:
beginTransaction in interface com.google.appengine.api.datastore.AsyncDatastoreService

delete

public java.util.concurrent.Future<java.lang.Void> delete(com.google.appengine.api.datastore.Key... keys)
Specified by:
delete in interface com.google.appengine.api.datastore.AsyncDatastoreService

delete

public java.util.concurrent.Future<java.lang.Void> delete(java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
Specified by:
delete in interface com.google.appengine.api.datastore.AsyncDatastoreService

delete

public java.util.concurrent.Future<java.lang.Void> delete(com.google.appengine.api.datastore.Transaction txn,
                                                          com.google.appengine.api.datastore.Key... keys)
Specified by:
delete in interface com.google.appengine.api.datastore.AsyncDatastoreService

delete

public java.util.concurrent.Future<java.lang.Void> delete(com.google.appengine.api.datastore.Transaction txn,
                                                          java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
Specified by:
delete in interface com.google.appengine.api.datastore.AsyncDatastoreService

get

public java.util.concurrent.Future<com.google.appengine.api.datastore.Entity> get(com.google.appengine.api.datastore.Key key)
Specified by:
get in interface com.google.appengine.api.datastore.AsyncDatastoreService

get

public java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> get(java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
Specified by:
get in interface com.google.appengine.api.datastore.AsyncDatastoreService

get

public java.util.concurrent.Future<com.google.appengine.api.datastore.Entity> get(com.google.appengine.api.datastore.Transaction txn,
                                                                                  com.google.appengine.api.datastore.Key key)
Specified by:
get in interface com.google.appengine.api.datastore.AsyncDatastoreService

get

public java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Key,com.google.appengine.api.datastore.Entity>> get(com.google.appengine.api.datastore.Transaction txn,
                                                                                                                                        java.lang.Iterable<com.google.appengine.api.datastore.Key> keys)
Specified by:
get in interface com.google.appengine.api.datastore.AsyncDatastoreService

getActiveTransactions

public java.util.Collection<com.google.appengine.api.datastore.Transaction> getActiveTransactions()
Specified by:
getActiveTransactions in interface com.google.appengine.api.datastore.BaseDatastoreService

getCurrentTransaction

public com.google.appengine.api.datastore.Transaction getCurrentTransaction()
Specified by:
getCurrentTransaction in interface com.google.appengine.api.datastore.BaseDatastoreService

getCurrentTransaction

public com.google.appengine.api.datastore.Transaction getCurrentTransaction(com.google.appengine.api.datastore.Transaction txn)
Specified by:
getCurrentTransaction in interface com.google.appengine.api.datastore.BaseDatastoreService

prepare

public com.google.appengine.api.datastore.PreparedQuery prepare(com.google.appengine.api.datastore.Query query)
Specified by:
prepare in interface com.google.appengine.api.datastore.BaseDatastoreService

prepare

public com.google.appengine.api.datastore.PreparedQuery prepare(com.google.appengine.api.datastore.Transaction txn,
                                                                com.google.appengine.api.datastore.Query query)
Specified by:
prepare in interface com.google.appengine.api.datastore.BaseDatastoreService

put

public java.util.concurrent.Future<com.google.appengine.api.datastore.Key> put(com.google.appengine.api.datastore.Entity entity)
Specified by:
put in interface com.google.appengine.api.datastore.AsyncDatastoreService

put

public java.util.concurrent.Future<java.util.List<com.google.appengine.api.datastore.Key>> put(java.lang.Iterable<com.google.appengine.api.datastore.Entity> entities)
Specified by:
put in interface com.google.appengine.api.datastore.AsyncDatastoreService

put

public java.util.concurrent.Future<com.google.appengine.api.datastore.Key> put(com.google.appengine.api.datastore.Transaction txn,
                                                                               com.google.appengine.api.datastore.Entity entity)
Specified by:
put in interface com.google.appengine.api.datastore.AsyncDatastoreService

put

public java.util.concurrent.Future<java.util.List<com.google.appengine.api.datastore.Key>> put(com.google.appengine.api.datastore.Transaction txn,
                                                                                               java.lang.Iterable<com.google.appengine.api.datastore.Entity> entities)
Specified by:
put in interface com.google.appengine.api.datastore.AsyncDatastoreService

getDatastoreAttributes

public java.util.concurrent.Future<com.google.appengine.api.datastore.DatastoreAttributes> getDatastoreAttributes()
Specified by:
getDatastoreAttributes in interface com.google.appengine.api.datastore.AsyncDatastoreService

getIndexes

public java.util.concurrent.Future<java.util.Map<com.google.appengine.api.datastore.Index,com.google.appengine.api.datastore.Index.IndexState>> getIndexes()
Specified by:
getIndexes in interface com.google.appengine.api.datastore.AsyncDatastoreService


Copyright © 2011 Jeff Schnitzer and a gang of pirates. All Rights Reserved. Build version: 3.1