[Zope3-checkins] CVS: Zope3/src/zodb - db.py:1.6.4.1 interfaces.py:1.6.4.1 lockfile.py:1.2.8.1

Jeremy Hylton jeremy@zope.com
Tue, 4 Feb 2003 17:54:42 -0500


Update of /cvs-repository/Zope3/src/zodb
In directory cvs.zope.org:/tmp/cvs-serv6570/src/zodb

Modified Files:
      Tag: storage-interface-branch
	db.py interfaces.py lockfile.py 
Log Message:
Refactor storage interfaces.

Move a bunch of exceptions related to storages from zodb.interfaces to
zodb.storages.interfaces.

Add __implements__ statements in all the concrete storage classes.

Add a simple (good?) mechanism to propagate __implements__ values from
a ZEO storage to its clients.

Remove all use of supportsXXX() methods in favor of
ISomeInterface.isImplementedBy().


=== Zope3/src/zodb/db.py 1.6 => 1.6.4.1 ===
--- Zope3/src/zodb/db.py:1.6	Tue Feb  4 05:32:46 2003
+++ Zope3/src/zodb/db.py	Tue Feb  4 17:54:09 2003
@@ -24,7 +24,7 @@
 from types import StringType
 import logging
 
-from zodb.interfaces import StorageError, StorageVersionError
+from zodb.storage.interfaces import *
 from zodb.connection import Connection
 from zodb.serialize import getDBRoot
 from zodb.ztransaction import Transaction
@@ -88,9 +88,12 @@
             storage.tpc_finish(t)
 
         # Pass through methods:
-        for m in ('supportsVersions', 'undoInfo', 'versionEmpty',
-                  'versions', 'modifiedInVersion', 'versionEmpty'):
-            setattr(self, m, getattr(storage, m))
+        if IUndoStorage.isImplementedBy(storage):
+            self.undoInfo = storage.undoInfo
+        if IVersionStorage.isImplementedBy(storage):
+            for m in ['versionEmpty', 'versions', 'modifiedInVersion',
+                      'versionEmpty']:
+                setattr(self, m, getattr(storage, m))
 
     def _checkVersion(self):
         # Make sure the database version that created the storage is


=== Zope3/src/zodb/interfaces.py 1.6 => 1.6.4.1 ===
--- Zope3/src/zodb/interfaces.py:1.6	Tue Jan 28 13:17:30 2003
+++ Zope3/src/zodb/interfaces.py	Tue Feb  4 17:54:09 2003
@@ -25,6 +25,26 @@
 from transaction.interfaces \
      import TransactionError, RollbackError, ConflictError as _ConflictError
 
+__all__ = ['POSError',
+           'POSKeyError',
+           'ConflictError',
+           'ReadConflictError',
+           'DanglingReferenceError',
+           'VersionError',
+           'VersionCommitError',
+           'VersionLockError',
+           'UndoError',
+           'MultipleUndoErrors',
+           'ExportError',
+           'Unsupported',
+           
+           'InvalidObjectReference',
+           'IAppConnection',
+           'IConnection',
+           'ITransaction',
+           'ITransactionAttrs',
+           ]
+
 def _fmt_oid(oid):
     return "%016x" % zodb.utils.u64(oid)
 
@@ -183,37 +203,6 @@
 
     def __str__(self):
         return "\n".join([_fmt_undo(*pair) for pair in self._errs])
-
-class StorageError(POSError):
-    """Base class for storage based exceptions."""
-
-class StorageVersionError(StorageError):
-    """The storage version doesn't match the database version."""
-
-    def __init__(self, db_ver, storage_ver):
-        self.db_ver = db_ver
-        self.storage_ver = storage_ver
-
-    def __str__(self):
-        db = ".".join(self.db_ver)
-        storage = ".".join(self.storage_ver)
-        return ("Storage version %s passed to database version %s"
-                % (storage, db))
-
-class StorageTransactionError(StorageError):
-    """An operation was invoked for an invalid transaction or state."""
-
-class StorageSystemError(StorageError):
-    """Panic! Internal storage error!"""
-
-class MountedStorageError(StorageError):
-    """Unable to access mounted storage."""
-
-class ReadOnlyError(StorageError):
-    """Unable to modify objects in a read-only storage."""
-
-class TransactionTooLargeError(StorageTransactionError):
-    """The transaction exhausted some finite storage resource."""
 
 class ExportError(POSError):
     """An export file doesn't have the right format."""


=== Zope3/src/zodb/lockfile.py 1.2 => 1.2.8.1 ===
--- Zope3/src/zodb/lockfile.py:1.2	Wed Dec 25 09:12:16 2002
+++ Zope3/src/zodb/lockfile.py	Tue Feb  4 17:54:09 2003
@@ -12,7 +12,7 @@
 #
 ##############################################################################
 
-from zodb.interfaces import StorageSystemError
+from zodb.storage.interfaces import StorageSystemError
 
 # Try to create a function that creates Unix file locks.
 try: