[Checkins] SVN: zope.locking/trunk/src/zope/locking/adapters.py Make subclassing the broker easier to reuse code

Gary Poster gary at zope.com
Tue Sep 5 12:07:42 EDT 2006


Log message for revision 69977:
  Make subclassing the broker easier to reuse code
  

Changed:
  U   zope.locking/trunk/src/zope/locking/adapters.py

-=-
Modified: zope.locking/trunk/src/zope/locking/adapters.py
===================================================================
--- zope.locking/trunk/src/zope/locking/adapters.py	2006-09-05 13:30:04 UTC (rev 69976)
+++ zope.locking/trunk/src/zope/locking/adapters.py	2006-09-05 16:07:41 UTC (rev 69977)
@@ -14,8 +14,8 @@
         self.utility = component.getUtility(
             interfaces.ITokenUtility, context=context)
 
-
-    def lock(self, principal_id=None, duration=None):
+    # for subclasses to call, to avoid duplicating code
+    def _getLockPrincipalId(self, principal_id):
         interaction_principals = getInteractionPrincipals()
         if principal_id is None:
             if (interaction_principals is None or
@@ -25,10 +25,15 @@
         elif (interaction_principals is None or
               principal_id not in interaction_principals):
             raise interfaces.ParticipationError
+        return principal_id
+
+    def lock(self, principal_id=None, duration=None):
+        principal_id = self._getLockPrincipalId(principal_id)
         return self.utility.register(
             tokens.ExclusiveLock(self.context, principal_id, duration))
 
-    def lockShared(self, principal_ids=None, duration=None):
+    # for subclasses to call, to avoid duplicating code
+    def _getSharedLockPrincipalIds(self, principal_ids):
         interaction_principals = getInteractionPrincipals()
         if principal_ids is None:
             if (interaction_principals is None or
@@ -38,6 +43,10 @@
         elif (interaction_principals is None or
               set(principal_ids).difference(interaction_principals)):
             raise interfaces.ParticipationError
+        return principal_ids
+
+    def lockShared(self, principal_ids=None, duration=None):
+        principal_ids = self._getSharedLockPrincipalIds(principal_ids)
         return self.utility.register(
             tokens.SharedLock(self.context, principal_ids, duration))
 



More information about the Checkins mailing list