| Index: chrome/common/extensions/docs/server2/persistent_object_store_appengine.py
|
| diff --git a/chrome/common/extensions/docs/server2/persistent_object_store.py b/chrome/common/extensions/docs/server2/persistent_object_store_appengine.py
|
| similarity index 66%
|
| rename from chrome/common/extensions/docs/server2/persistent_object_store.py
|
| rename to chrome/common/extensions/docs/server2/persistent_object_store_appengine.py
|
| index c0ae8734c01cdaeab51f7c1ada93c1b8b2f35dd5..a2d0d5c9c30087b1804cfea1bca542a9fdcbb75e 100644
|
| --- a/chrome/common/extensions/docs/server2/persistent_object_store.py
|
| +++ b/chrome/common/extensions/docs/server2/persistent_object_store_appengine.py
|
| @@ -2,23 +2,26 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| -from appengine_wrappers import db
|
| +import google.appengine.ext.db as db
|
| +
|
| from datastore_models import PersistentObjectStoreItem
|
| from environment import IsDevServer
|
| from future import All, Future
|
| from object_store import ObjectStore
|
|
|
|
|
| -class PersistentObjectStore(ObjectStore):
|
| - '''Stores data persistently using the AppEngine Datastore API.
|
| +class PersistentObjectStoreAppengine(ObjectStore):
|
| + '''Stores or retrieves persistent data using the AppEngine Datastore API.
|
| '''
|
| def __init__(self, namespace):
|
| self._namespace = namespace
|
|
|
| def SetMulti(self, mapping):
|
| - rpcs = [db.put_async(
|
| - PersistentObjectStoreItem.CreateItem(self._namespace, key, value))
|
| - for key, value in mapping.iteritems()]
|
| + entities = [PersistentObjectStoreItem.CreateItem(
|
| + self._namespace, key, value)
|
| + for key, value in mapping.iteritems()]
|
| + # Some entites may be None if they were too large to insert. Skip those.
|
| + rpcs = [db.put_async(entity for entity in entities if entity)]
|
| # If running the dev server, the futures don't complete until the server is
|
| # *quitting*. This is annoying. Flush now.
|
| if IsDevServer():
|
| @@ -26,9 +29,8 @@ class PersistentObjectStore(ObjectStore):
|
| return All(Future(callback=lambda: rpc.get_result()) for rpc in rpcs)
|
|
|
| def GetMulti(self, keys):
|
| - db_futures = dict(
|
| - (k, db.get_async(
|
| - PersistentObjectStoreItem.CreateKey(self._namespace, k)))
|
| + db_futures = dict((k, db.get_async(
|
| + PersistentObjectStoreItem.CreateKey(self._namespace, k)))
|
| for k in keys)
|
| def resolve():
|
| return dict((key, future.get_result().GetValue())
|
| @@ -40,7 +42,7 @@ class PersistentObjectStore(ObjectStore):
|
| futures = []
|
| for key in keys:
|
| futures.append(db.delete_async(
|
| - PersistentObjectStoreItem.CreateKey(self._namespace, key)))
|
| + PersistentObjectStoreItem.CreateKey(self._namespace, key)))
|
| # If running the dev server, the futures don't complete until the server is
|
| # *quitting*. This is annoying. Flush now.
|
| if IsDevServer():
|
|
|