[Checkins] SVN: five.localsitemanager/trunk/ fix a regression when unregistering a utility by interface if no utility is registered for that interface
David Glick
davidglick at onenw.org
Sun Nov 15 23:57:56 EST 2009
Log message for revision 105684:
fix a regression when unregistering a utility by interface if no utility is registered for that interface
Changed:
U five.localsitemanager/trunk/CHANGES.txt
U five.localsitemanager/trunk/src/five/localsitemanager/localsitemanager.txt
U five.localsitemanager/trunk/src/five/localsitemanager/registry.py
-=-
Modified: five.localsitemanager/trunk/CHANGES.txt
===================================================================
--- five.localsitemanager/trunk/CHANGES.txt 2009-11-16 03:46:20 UTC (rev 105683)
+++ five.localsitemanager/trunk/CHANGES.txt 2009-11-16 04:57:54 UTC (rev 105684)
@@ -4,6 +4,10 @@
2.0.2 - Unreleased
------------------
+* Fix regression in five.localsitemanager 2.0.1 where unregistering a utility
+ based on its provided interface broke if no utility was registered for that
+ interface.
+ [davisagli]
2.0.1 - 2009-10-19
------------------
Modified: five.localsitemanager/trunk/src/five/localsitemanager/localsitemanager.txt
===================================================================
--- five.localsitemanager/trunk/src/five/localsitemanager/localsitemanager.txt 2009-11-16 03:46:20 UTC (rev 105683)
+++ five.localsitemanager/trunk/src/five/localsitemanager/localsitemanager.txt 2009-11-16 04:57:54 UTC (rev 105684)
@@ -88,7 +88,12 @@
...
ComponentLookupError: (<InterfaceClass ...ITestUtility>, 'to_remove')
+Trying to unregister a utility that is not registered should return False.
+ >>> sitemanager.unregisterUtility(provided=ITestUtility)
+ False
+
+
Adapters
---------
Modified: five.localsitemanager/trunk/src/five/localsitemanager/registry.py
===================================================================
--- five.localsitemanager/trunk/src/five/localsitemanager/registry.py 2009-11-16 03:46:20 UTC (rev 105683)
+++ five.localsitemanager/trunk/src/five/localsitemanager/registry.py 2009-11-16 04:57:54 UTC (rev 105684)
@@ -302,12 +302,15 @@
"provided")
provided = _getUtilityProvided(component)
- old = self._utility_registrations.get((provided, name))
- if isinstance(old[0], ComponentPathWrapper):
- # If the existing registration is a ComponentPathWrapper, we
- # convert the component that is to be unregistered to a wrapper.
- # This ensures that our custom comparision methods are called.
- component = ComponentPathWrapper(Acquisition.aq_base(component),'')
-
+ # If the existing registration is a ComponentPathWrapper, we
+ # convert the component that is to be unregistered to a wrapper.
+ # This ensures that our custom comparision methods are called.
+ if component is not None:
+ old = self._utility_registrations.get((provided, name))
+ if old is not None:
+ if isinstance(old[0], ComponentPathWrapper):
+ unwrapped_component = Acquisition.aq_base(component)
+ component = ComponentPathWrapper(unwrapped_component,'')
+
return super(PersistentComponents, self).unregisterUtility(
component=component, provided=provided, name=name)
More information about the checkins
mailing list