Commit 6b64a8d1 authored by Jeremy Hylton's avatar Jeremy Hylton

General code cleanup -- whitespace, local variable alias removal, &c.

parent 3309969b
......@@ -19,14 +19,15 @@ from ZODB.POSException import ConflictError
#import traceback
bad_classes={}
bad_classes = {}
def bad_class(class_tuple):
if bad_classes.has_key(class_tuple) or class_tuple[0][0] == '*':
# if we've seen the class before or if it's a ZClass, we know that
# we can't resolve the conflict
return 1
ResolvedSerial='rs'
ResolvedSerial = 'rs'
def _classFactory(location, name,
_silly=('__doc__',), _globals={}):
......@@ -34,12 +35,12 @@ def _classFactory(location, name,
name)
def state(self, oid, serial, prfactory, p=''):
p=p or self.loadSerial(oid, serial)
file=StringIO(p)
unpickler=Unpickler(file)
unpickler.persistent_load=prfactory
class_tuple=unpickler.load()
state=unpickler.load()
p = p or self.loadSerial(oid, serial)
file = StringIO(p)
unpickler = Unpickler(file)
unpickler.persistent_load = prfactory.persistent_load
class_tuple = unpickler.load()
state = unpickler.load()
return state
......@@ -53,26 +54,21 @@ class PersistentReference:
class PersistentReferenceFactory:
data=None
def __call__(self, oid,
getattr=getattr, None=None):
data = None
data=self.data
if not data: data=self.data={}
def persistent_load(self, oid):
if self.data is None:
self.data = {}
r=data.get(oid, None)
r = self.data.get(oid, None)
if r is None:
r=PersistentReference()
r.data=oid
data[oid]=r
r = PersistentReference()
r.data = oid
self.data[oid] = r
return r
def persistent_id(object,
PersistentReference=PersistentReference,
getattr=getattr
):
def persistent_id(object):
if getattr(object, '__class__', 0) is not PersistentReference:
return None
return object.data
......@@ -81,38 +77,34 @@ def tryToResolveConflict(self, oid, committedSerial, oldSerial, newpickle,
committedData=''):
#class_tuple, old, committed, newstate = ('',''), 0, 0, 0
try:
file=StringIO(newpickle)
unpickler=Unpickler(file)
prfactory=PersistentReferenceFactory()
unpickler.persistent_load=prfactory
class_tuple=unpickler.load()[0]
file = StringIO(newpickle)
unpickler = Unpickler(file)
prfactory = PersistentReferenceFactory()
unpickler.persistent_load = prfactory.persistent_load
class_tuple = unpickler.load()[0]
if bad_class(class_tuple):
#sys.stderr.write(' b%s ' % class_tuple[1]); sys.stderr.flush()
return 0
newstate=unpickler.load()
klass=_classFactory(class_tuple[0], class_tuple[1])
inst=klass.__basicnew__()
newstate = unpickler.load()
klass = _classFactory(class_tuple[0], class_tuple[1])
inst = klass.__basicnew__()
try:
resolve=inst._p_resolveConflict
resolve = inst._p_resolveConflict
except AttributeError:
bad_classes[class_tuple]=1
#traceback.print_exc()
#sys.stderr.write(' b%s ' % class_tuple[1]); sys.stderr.flush()
bad_classes[class_tuple] = 1
return 0
old=state(self, oid, oldSerial, prfactory)
committed=state(self, oid, committedSerial, prfactory, committedData)
old = state(self, oid, oldSerial, prfactory)
committed = state(self, oid, committedSerial, prfactory, committedData)
resolved=resolve(old, committed, newstate)
resolved = resolve(old, committed, newstate)
file=StringIO()
pickler=Pickler(file,1)
pickler.persistent_id=persistent_id
file = StringIO()
pickler = Pickler(file,1)
pickler.persistent_id = persistent_id
pickler.dump(class_tuple)
pickler.dump(resolved)
#sys.stderr.write(' r%s ' % class_tuple[1]); sys.stderr.flush()
return file.getvalue(1)
except ConflictError:
return 0
......@@ -120,4 +112,4 @@ def tryToResolveConflict(self, oid, committedSerial, oldSerial, newpickle,
class ConflictResolvingStorage:
"Mix-in class that provides conflict resolution handling for storages"
tryToResolveConflict=tryToResolveConflict
tryToResolveConflict = tryToResolveConflict
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment