[Zodb-checkins] CVS: ZODB4/src/zodb - serialize.py:1.22.20.2 conflict.py:1.15.20.1

Jeremy Hylton jeremy at zope.com
Wed Sep 17 10:37:37 EDT 2003


Update of /cvs-repository/ZODB4/src/zodb
In directory cvs.zope.org:/tmp/cvs-serv8059

Modified Files:
      Tag: parentgeddon-branch
	serialize.py conflict.py 
Log Message:
Simplify the way data records for resolved objects are written.

Eliminate the need for the special adapter where obj.__class__ != type(obj).


=== ZODB4/src/zodb/serialize.py 1.22.20.1 => 1.22.20.2 ===
--- ZODB4/src/zodb/serialize.py:1.22.20.1	Wed Sep 17 09:00:47 2003
+++ ZODB4/src/zodb/serialize.py	Wed Sep 17 10:37:34 2003
@@ -167,6 +167,14 @@
         refs = findrefs(data)
         return data, refs
 
+    def getStateFromResolved(self, ghost, state):
+        # This method is only used in the ResolvedObjectWriter subclass,
+        # but it is defined here to keep all the details of the data
+        # record format internal to this module.
+        data = self._dump(getClassMetadata(ghost), state)
+        refs = findrefs(data)
+        return data, refs
+
     def _dump(self, classmeta, state):
         # To reuse the existing cStringIO object, we must reset
         # the file position to 0 and truncate the file after the


=== ZODB4/src/zodb/conflict.py 1.15 => 1.15.20.1 ===
--- ZODB4/src/zodb/conflict.py:1.15	Thu Jun 19 17:41:10 2003
+++ ZODB4/src/zodb/conflict.py	Wed Sep 17 10:37:34 2003
@@ -28,34 +28,6 @@
 
 ResolvedSerial = "rs"
 
-class ResolvedObjectAdapter:
-    """Adapt an object's raw state to the ObjectWriter protocol.
-
-    ObjectWriter uses an object's __class__ and __getstate__() method
-    to determine how to pickle it.  When conflict resolution occurs,
-    there is no instantiated object; the code deals with the concrete
-    state as returned by __getstate__().  This adapter allows the
-    state to be passed to ObjectWriter without instantiating the
-    object.
-
-    This object should only be used in conjunction with the ObjectWriter.
-    """
-
-    def __init__(self, ghost, state):
-        self._class = ghost.__class__
-        self._state = state
-        self._p_state = 0 # required to make getClassMetadata() happy
-
-    def __getattribute__(self, name):
-        if name == "__class__":
-            return self._class
-        else:
-            _super = super(ResolvedObjectAdapter, self).__getattribute__
-            return _super(name)
-
-    def __getstate__(self):
-        return self._state
-
 class PersistentReference:
 
     __slots__ = "oid",
@@ -191,7 +163,6 @@
         resolved = resolve(old, committed, newstate)
 
         writer = ResolvedObjectWriter()
-        obj = ResolvedObjectAdapter(get_self(resolve), resolved)
-        state = writer.getState(obj)
+        state = writer.getStateFromResolved(get_self(resolve), resolved)
         writer.close()
         return state




More information about the Zodb-checkins mailing list