Chromium Code Reviews| Index: chrome/common/extensions/docs/server2/compiled_file_system.py |
| diff --git a/chrome/common/extensions/docs/server2/compiled_file_system.py b/chrome/common/extensions/docs/server2/compiled_file_system.py |
| index 6c547ba2a2b9a9efc9f9faffc0692872f80b023a..58d161ad757da1ee83cefb2b8080867acc6b1a08 100644 |
| --- a/chrome/common/extensions/docs/server2/compiled_file_system.py |
| +++ b/chrome/common/extensions/docs/server2/compiled_file_system.py |
| @@ -5,6 +5,7 @@ |
| import os |
| import object_store |
| +import logging |
| APPS = 'Apps' |
| APPS_FS = 'AppsFileSystem' |
| @@ -27,7 +28,7 @@ PERMS = 'Perms' |
| SIDENAV = 'Sidenav' |
| STATIC = 'Static' |
| ZIP = 'Zip' |
| - |
| +DEFAULT_BRANCH = '000' |
|
cduvall
2013/03/21 18:43:53
Separate this from the namespace constants.
epeterson
2013/03/25 19:35:11
Done.
|
| class _CacheEntry(object): |
| def __init__(self, cache_data, version): |
| self._cache_data = cache_data |
| @@ -39,19 +40,22 @@ class CompiledFileSystem(object): |
| class Factory(object): |
| """A class to build a CompiledFileSystem. |
| """ |
| - def __init__(self, file_system, object_store): |
| + def __init__(self, file_system, object_store, branch_number=DEFAULT_BRANCH): |
| self._file_system = file_system |
| self._object_store = object_store |
| + self._branch_number = branch_number |
| def Create(self, populate_function, namespace, version=None): |
| """Create a CompiledFileSystem that populates the cache by calling |
| |populate_function| with (path, data), where |data| is the data that was |
| fetched from |path|. The keys to the cache are put in the namespace |
| - specified by |namespace|, and optionally adding |version|. """ |
| + specified by |namespace|, and optionally adding |version|. |
| + """ |
| return CompiledFileSystem(self._file_system, |
| populate_function, |
| self._object_store, |
| namespace, |
| + self._branch_number, |
| version=version) |
| def __init__(self, |
| @@ -59,13 +63,17 @@ class CompiledFileSystem(object): |
| populate_function, |
| object_store, |
| namespace, |
| + branch_number, |
| version=None): |
| self._file_system = file_system |
| self._populate_function = populate_function |
| self._object_store = object_store |
| self._namespace = 'CompiledFileSystem.' + namespace |
| + self._branch_number = branch_number |
|
cduvall
2013/03/21 18:43:53
Doesn't the file system already have a branch numb
epeterson
2013/03/25 19:35:11
Done.
|
| if version is not None: |
| - self._namespace = '%s.%s' % (self._namespace, version) |
| + self._namespace = '%s.%s.%s' % (self._namespace, |
| + version, |
| + self._branch_number) |
| def _MakeKey(self, key): |
| return self._namespace + '.' + key |
| @@ -93,14 +101,18 @@ class CompiledFileSystem(object): |
| time=0).Get() |
| if (cache_entry is not None) and (version == cache_entry.version): |
| return cache_entry._cache_data |
| - cache_data = self._populate_function( |
| - path, |
| - self._file_system.ReadSingle(path, binary=binary)) |
| - self._object_store.Set(self._MakeKey(path), |
| - _CacheEntry(cache_data, version), |
| - object_store.FILE_SYSTEM_CACHE, |
| - time=0) |
| - return cache_data |
| + try: |
| + cache_data = self._populate_function( |
| + path, |
| + self._file_system.ReadSingle(path, binary=binary)) |
| + self._object_store.Set(self._MakeKey(path), |
| + _CacheEntry(cache_data, version), |
| + object_store.FILE_SYSTEM_CACHE, |
| + time=0) |
| + return cache_data |
| + except ValueError as e: |
| + return {} |
| + logging.error("%s" % e) |
|
cduvall
2013/03/21 18:43:53
Give a better message than this. And single quotes
epeterson
2013/03/25 19:35:11
Done? Does this work for you?
|
| def GetFromFileListing(self, path): |
| """Calls |populate_function| on the listing of the files at |path|. |