[Checkins] SVN: Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/ add fallback to using wrapper class

Miles Waller miles at jamkit.com
Wed Mar 18 06:44:50 EDT 2009


Log message for revision 98222:
  add fallback to using wrapper class

Changed:
  U   Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/CatalogTool.py
  U   Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/tests/test_CatalogTool.py

-=-
Modified: Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/CatalogTool.py
===================================================================
--- Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/CatalogTool.py	2009-03-18 10:01:08 UTC (rev 98221)
+++ Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/CatalogTool.py	2009-03-18 10:44:50 UTC (rev 98222)
@@ -26,6 +26,7 @@
 from Products.ZCatalog.ZCatalog import ZCatalog
 from zope.interface import implements
 from zope.component import adapts
+from zope.component import queryMultiAdapter
 from zope.interface import providedBy
 from zope.interface.declarations import getObjectSpecification
 from zope.interface.declarations import ObjectSpecification
@@ -257,10 +258,13 @@
         # information just before cataloging.
         # XXX: this method violates the rules for tools/utilities:
         # it depends on a non-utility tool
-        if not IIndexableObject.providedBy(obj):
-            w = IIndexableObject((obj, self))
+        if IIndexableObject.providedBy(obj):
+            w = obj
         else:
-            w = obj
+            w = queryMultiAdapter( (obj, self), IIndexableObject )
+            if w is None:
+                # BBB
+                w = IndexableObjectWrapper(obj, self)
         ZCatalog.catalog_object(self, w, uid, idxs, update_metadata,
                                 pghandler)
 

Modified: Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/tests/test_CatalogTool.py
===================================================================
--- Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/tests/test_CatalogTool.py	2009-03-18 10:01:08 UTC (rev 98221)
+++ Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/tests/test_CatalogTool.py	2009-03-18 10:44:50 UTC (rev 98222)
@@ -500,11 +500,12 @@
 
     def test_wrapping2(self):
         # DummyContent does not implement IIndexableObject
-        # no wrapper registered - should create an error
+        # no wrapper registered - should fall back to using
+        # wrapper class directly
         dummy = DummyContent(catalog=1)
         ctool = self._makeOne()
-        self.assertRaises(TypeError, ctool.catalog_object, 
-                              dummy, '/dummy')
+        ctool.catalog_object(dummy, '/dummy')
+        self.assertEqual(1, len(ctool._catalog.searchResults()))
 
     def test_wrapping3(self):
         # DummyContent does not implement IIndexableObject



More information about the Checkins mailing list