[Checkins] SVN: Products.GenericSetup/trunk/Products/GenericSetup/ Adapter removal.
Laurence Rowe
l at lrowe.co.uk
Fri Sep 18 12:56:34 EDT 2009
Log message for revision 104356:
Adapter removal.
Changed:
U Products.GenericSetup/trunk/Products/GenericSetup/CHANGES.txt
U Products.GenericSetup/trunk/Products/GenericSetup/components.py
U Products.GenericSetup/trunk/Products/GenericSetup/tests/test_components.py
-=-
Modified: Products.GenericSetup/trunk/Products/GenericSetup/CHANGES.txt
===================================================================
--- Products.GenericSetup/trunk/Products/GenericSetup/CHANGES.txt 2009-09-18 16:27:34 UTC (rev 104355)
+++ Products.GenericSetup/trunk/Products/GenericSetup/CHANGES.txt 2009-09-18 16:56:33 UTC (rev 104356)
@@ -4,6 +4,8 @@
GenericSetup 1.5.0 (unreleased)
-------------------------------
+- Adapter removal.
+
- Fix utility removal so utility is not added when it is missing from the
local component registry.
Modified: Products.GenericSetup/trunk/Products/GenericSetup/components.py
===================================================================
--- Products.GenericSetup/trunk/Products/GenericSetup/components.py 2009-09-18 16:27:34 UTC (rev 104355)
+++ Products.GenericSetup/trunk/Products/GenericSetup/components.py 2009-09-18 16:56:33 UTC (rev 104356)
@@ -137,6 +137,11 @@
for interface in for_.split():
required.append(_resolveDottedName(interface))
+ if child.hasAttribute('remove'):
+ self.context.unregisterAdapter(factory,
+ required, provided, name)
+ continue
+
self.context.registerAdapter(factory,
required=required,
provided=provided,
Modified: Products.GenericSetup/trunk/Products/GenericSetup/tests/test_components.py
===================================================================
--- Products.GenericSetup/trunk/Products/GenericSetup/tests/test_components.py 2009-09-18 16:27:34 UTC (rev 104355)
+++ Products.GenericSetup/trunk/Products/GenericSetup/tests/test_components.py 2009-09-18 16:56:33 UTC (rev 104356)
@@ -41,6 +41,7 @@
from zope.component import getMultiAdapter
from zope.component import getGlobalSiteManager
from zope.component import getSiteManager
+from zope.component import queryAdapter
from zope.component import queryUtility
from zope.component.globalregistry import base
from zope.interface import implements
@@ -87,7 +88,17 @@
def verify(self):
return True
+class DummyAdapter(object):
+ """A dummy adapter."""
+ implements(IDummyInterface)
+
+ def __init__(self, context):
+ pass
+
+ def verify(self):
+ return True
+
class DummyTool(SimpleItem):
"""A dummy tool."""
implements(IDummyInterface)
@@ -130,7 +141,15 @@
_COMPONENTS_BODY = """\
<?xml version="1.0"?>
<componentregistry>
- <adapters/>
+ <adapters>
+ <adapter factory="Products.GenericSetup.tests.test_components.DummyAdapter"
+ for="zope.interface.Interface"
+ provides="Products.GenericSetup.tests.test_components.IDummyInterface"/>
+ <adapter name="foo"
+ factory="Products.GenericSetup.tests.test_components.DummyAdapter"
+ for="zope.interface.Interface"
+ provides="Products.GenericSetup.tests.test_components.IDummyInterface"/>
+ </adapters>
<utilities>
<utility factory="Products.GenericSetup.tests.test_components.DummyUtility"
id="dummy_utility"
@@ -151,6 +170,11 @@
_REMOVE_IMPORT = """\
<?xml version="1.0"?>
<componentregistry>
+ <adapters>
+ <adapter factory="Products.GenericSetup.tests.test_components.DummyAdapter"
+ provides="Products.GenericSetup.tests.test_components.IDummyInterface"
+ for="*" remove="True"/>
+ </adapters>
<utilities>
<utility id="dummy_utility"
factory="Products.GenericSetup.tests.test_components.DummyUtility"
@@ -178,6 +202,9 @@
return ComponentRegistryXMLAdapter
def _populate(self, obj):
+ obj.registerAdapter(DummyAdapter, required=(None,))
+ obj.registerAdapter(DummyAdapter, required=(None,), name=u'foo')
+
util = DummyUtility()
name = 'dummy_utility'
util.__name__ = name
@@ -201,6 +228,14 @@
obj.registerUtility(tool2, IDummyInterface2, name=u'dummy tool name2')
def _verifyImport(self, obj):
+ adapted = queryAdapter(object(), IDummyInterface)
+ self.failUnless(IDummyInterface.providedBy(adapted))
+ self.failUnless(adapted.verify())
+
+ adapted = queryAdapter(object(), IDummyInterface, name=u'foo')
+ self.failUnless(IDummyInterface.providedBy(adapted))
+ self.failUnless(adapted.verify())
+
util = queryUtility(IDummyInterface2, name=u'foo')
self.failUnless(IDummyInterface.providedBy(util))
self.failUnless(util.verify())
@@ -293,7 +328,7 @@
util = queryUtility(IDummyInterface)
self.failUnless(util is None)
- def test_remove_utilities(self):
+ def test_remove_components(self):
from Products.GenericSetup.components import importComponentRegistry
obj = self._obj
@@ -304,6 +339,13 @@
context._files['componentregistry.xml'] = _REMOVE_IMPORT
importComponentRegistry(context)
+ adapted = queryAdapter(object(), IDummyInterface)
+ self.failUnless(adapted is None)
+
+ # This one should still exist
+ adapted = queryAdapter(object(), IDummyInterface, name=u'foo')
+ self.failIf(adapted is None)
+
util = queryUtility(IDummyInterface2, name=u'foo')
name = 'Products.GenericSetup.tests.test_components.IDummyInterface2-foo'
self.failUnless(util is None)
More information about the checkins
mailing list