SVN: CMF/branches/jens_tools_as_utilities/ - continuing work on utility conversion branch: portal_catalog

Jens Vagelpohl <[email protected]>
Newsgroups gmane.comp.web.zope.cmf.cvs
Message-ID <[email protected]>
Log message for revision 71651:
  - continuing work on utility conversion branch: portal_catalog
  

Changed:
  U   CMF/branches/jens_tools_as_utilities/CMFCalendar/tests/test_Calendar.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/CMFCatalogAware.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/CatalogTool.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/DiscussionTool.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/actions.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/cachingpolicymgr.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/catalog.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_actions.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_cachingpolicymgr.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_catalog.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/testing.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CMFCatalogAware.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CachingPolicyManager.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSDTMLMethod.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSPageTemplate.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSReSTMethod.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSSTXMethod.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_OpaqueItems.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_PortalContent.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_PortalFolder.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/utils.py
  U   CMF/branches/jens_tools_as_utilities/CMFDefault/DefaultWorkflow.py
  U   CMF/branches/jens_tools_as_utilities/CMFDefault/Extensions/update_catalogIndexes.py
  U   CMF/branches/jens_tools_as_utilities/CMFDefault/profiles/default/componentregistry.xml
  U   CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Discussions.py
  U   CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_File.py
  U   CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Image.py
  U   CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Portal.py
  U   CMF/branches/jens_tools_as_utilities/CMFTopic/Topic.py
  U   CMF/branches/jens_tools_as_utilities/CMFTopic/tests/test_DateC.py
  U   CMF/branches/jens_tools_as_utilities/CMFTopic/tests/test_Topic.py
  U   CMF/branches/jens_tools_as_utilities/CMFUid/UniqueIdHandlerTool.py
  U   CMF/branches/jens_tools_as_utilities/CMFUid/tests/test_uidhandling.py
  U   CMF/branches/jens_tools_as_utilities/DCWorkflow/DCWorkflow.py
  U   CMF/branches/jens_tools_as_utilities/DCWorkflow/tests/test_DCWorkflow.py

-=-
Modified: CMF/branches/jens_tools_as_utilities/CMFCalendar/tests/test_Calendar.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCalendar/tests/test_Calendar.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCalendar/tests/test_Calendar.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -21,10 +21,13 @@
 
 import locale
 
+from zope.component import getSiteManager
+
 from AccessControl.SecurityManagement import newSecurityManager
 from AccessControl.User import UnrestrictedUser
 from DateTime import DateTime
 
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCalendar.testing import FunctionalLayer
 
 
@@ -113,6 +116,10 @@
         sdm = self.app.session_data_manager
         self.app.REQUEST.set_lazy('SESSION', sdm.getSessionData)
 
+        # register utilities
+        sm = getSiteManager()
+        sm.registerUtility(self.app.site.portal_catalog, ICatalogTool)
+
     def _testURL(self, url, params=None):
         obj = self.app.site.restrictedTraverse(url)
         if params is None:

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/CMFCatalogAware.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/CMFCatalogAware.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/CMFCatalogAware.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -24,8 +24,10 @@
 from Globals import InitializeClass
 from OFS.interfaces import IObjectClonedEvent
 from OFS.interfaces import IObjectWillBeMovedEvent
+
 from zope.app.container.interfaces import IObjectAddedEvent
 from zope.app.container.interfaces import IObjectMovedEvent
+from zope.component import queryUtility
 from zope.component import subscribers
 
 from permissions import AccessContentsInformation
@@ -36,6 +38,7 @@
 from utils import getToolByName
 
 from interfaces import ICallableOpaqueItem
+from interfaces import ICatalogTool
 from interfaces.IOpaqueItems \
         import ICallableOpaqueItem as z2ICallableOpaqueItem
 
@@ -55,7 +58,7 @@
     # for a given content type
 
     def _getCatalogTool(self):
-        return getToolByName(self, 'portal_catalog', None)
+        return queryUtility(ICatalogTool)
 
     def _getWorkflowTool(self):
         return getToolByName(self, 'portal_workflow', None)

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/CatalogTool.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/CatalogTool.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/CatalogTool.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -44,6 +44,7 @@
 from utils import _getAuthenticatedUser
 from utils import _mergedLocalRoles
 from utils import getToolByName
+from utils import registerToolInterface
 from utils import UniqueObject
 
 
@@ -295,3 +296,4 @@
         self.catalog_object(object, uid, idxs, update_metadata)
 
 InitializeClass(CatalogTool)
+registerToolInterface('portal_catalog', ICatalogTool)

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/DiscussionTool.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/DiscussionTool.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/DiscussionTool.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -19,6 +19,8 @@
 from Globals import InitializeClass, DTMLFile
 from Acquisition import Implicit
 from AccessControl import ClassSecurityInfo
+
+from zope.component import getUtility
 from zope.interface import implements
 
 from ActionProviderBase import ActionProviderBase
@@ -26,6 +28,7 @@
 from permissions import ManagePortal
 from permissions import ReplyToItem
 from permissions import View
+from interfaces import ICatalogTool
 from interfaces import IOldstyleDiscussable
 from interfaces import IOldstyleDiscussionTool
 from interfaces.Discussions import OldDiscussable as z2IOldstyleDiscussable
@@ -91,7 +94,7 @@
             Often, the actual objects are not needed.  This is less expensive
             than fetching the objects.
         """
-        catalog = getToolByName(self.content, 'portal_catalog')
+        catalog = getUtility(ICatalogTool)
         return catalog.searchResults(in_reply_to=
                                       urllib.unquote('/'+self.absolute_url(1)))
 
@@ -101,7 +104,7 @@
             Return a sequence of the DiscussionResponse objects which are
             associated with this Discussable
         """
-        catalog = getToolByName(self.content, 'portal_catalog')
+        catalog = getUtility(ICatalogTool)
         results = self.getReplyResults()
         rids    = map(lambda x: x.data_record_id_, results)
         objects = map(catalog.getobject, rids)

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/actions.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/actions.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/actions.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -35,7 +35,7 @@
 from zope.component import adapts
 from zope.component import getUtility
 from zope.component import getSiteManager
-from zope.component.interfaces import ComponentLookupError
+from zope.component import queryUtility
 
 _SPECIAL_PROVIDERS = ('portal_actions', 'portal_types', 'portal_workflow')
 
@@ -258,9 +258,8 @@
     """Export actions tool.
     """
     sm = getSiteManager(context.getSite())
-    try:
-        tool = sm.getUtility(IActionsTool)
-    except ComponentLookupError:
+    tool = sm.queryUtility(IActionsTool)
+    if tool is None:
         logger = context.getLogger('actions')
         logger.info('Nothing to export.')
         return

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/cachingpolicymgr.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/cachingpolicymgr.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/cachingpolicymgr.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -19,7 +19,7 @@
 from zope.component import getUtility
 from zope.component import getSiteManager
 from zope.component import queryMultiAdapter
-from zope.component.interfaces import ComponentLookupError
+from zope.component import queryUtility
 
 from Products.GenericSetup.interfaces import INode
 from Products.GenericSetup.interfaces import ISetupEnviron
@@ -183,9 +183,8 @@
     """Export caching policy manager settings as an XML file.
     """
     sm = getSiteManager(context.getSite())
-    try:
-        tool = sm.getUtility(ICachingPolicyManager)
-    except ComponentLookupError:
+    tool = sm.queryUtility(ICachingPolicyManager)
+    if tool is None:
         logger = context.getLogger('cachingpolicies')
         logger.info('Nothing to export.')
         return

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/catalog.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/catalog.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/catalog.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -15,25 +15,28 @@
 $Id$
 """
 
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.GenericSetup.utils import exportObjects
 from Products.GenericSetup.utils import importObjects
 
-from Products.CMFCore.utils import getToolByName
+from zope.component import getSiteManager
+from zope.component import getUtility
+from zope.component import queryUtility
 
 
 def importCatalogTool(context):
     """Import catalog tool.
     """
-    site = context.getSite()
-    tool = getToolByName(site, 'portal_catalog')
+    sm = getSiteManager(context.getSite())
+    tool = sm.getUtility(ICatalogTool)
 
     importObjects(tool, '', context)
 
 def exportCatalogTool(context):
     """Export catalog tool.
     """
-    site = context.getSite()
-    tool = getToolByName(site, 'portal_catalog', None)
+    sm = getSiteManager(context.getSite())
+    tool = sm.queryUtility(ICatalogTool)
     if tool is None:
         logger = context.getLogger('catalog')
         logger.info('Nothing to export.')

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_actions.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_actions.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_actions.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -330,7 +330,7 @@
         self.assertEqual(obj.action_providers[0], 'portal_actions')
 
     def setUp(self):
-        from Products.CMFCore.interfaces._tools import IActionsTool
+        from Products.CMFCore.interfaces import IActionsTool
         from Products.CMFCore.ActionsTool import ActionsTool
         from zope.component import getGlobalSiteManager
 

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_cachingpolicymgr.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_cachingpolicymgr.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_cachingpolicymgr.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -26,7 +26,7 @@
 from Products.GenericSetup.tests.common import DummyExportContext
 from Products.GenericSetup.tests.common import DummyImportContext
 
-from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.interfaces import ICachingPolicyManager
 from Products.CMFCore.testing import ExportImportZCMLLayer
 
 from zope.component import getSiteManager

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_catalog.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_catalog.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_catalog.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -25,11 +25,14 @@
 from Products.ZCTextIndex.Lexicon import StopWordRemover
 from Products.ZCTextIndex.ZCTextIndex import PLexicon
 
+from zope.component import getSiteManager
+
 from Products.GenericSetup.tests.common import BaseRegistryTests
 from Products.GenericSetup.tests.common import DummyExportContext
 from Products.GenericSetup.tests.common import DummyImportContext
 
 from Products.CMFCore.CatalogTool import CatalogTool
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.testing import ExportImportZCMLLayer
 
 _EMPTY_EXPORT = """\
@@ -79,6 +82,9 @@
         site = self.root.site = Folder(id='site')
         ctool = site.portal_catalog = CatalogTool()
 
+        sm = getSiteManager(site)
+        sm.registerUtility(ctool, ICatalogTool)
+
         for obj_id in ctool.objectIds():
             ctool._delObject(obj_id)
         for idx_id in ctool.indexes():

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/testing.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/testing.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/testing.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -130,6 +130,7 @@
         zcml.load_config('meta.zcml', Products.Five)
         zcml.load_config('event.zcml', Products.Five)
         zcml.load_config('event.zcml', Products.CMFCore)
+        setHooks()
 
     @classmethod
     def tearDown(cls):
@@ -151,6 +152,23 @@
         cleanUp()
 
 
+class TraversingEventZCMLLayer:
+
+    @classmethod
+    def setUp(cls):
+        import Products.Five
+
+        zcml.load_config('meta.zcml', Products.Five)
+        zcml.load_config('traversing.zcml', Products.Five)
+        zcml.load_config('event.zcml', Products.Five)
+        zcml.load_config('event.zcml', Products.CMFCore)
+        setHooks()
+
+    @classmethod
+    def tearDown(cls):
+        cleanUp()
+
+
 class FunctionalZCMLLayer:
 
     @classmethod

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CMFCatalogAware.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CMFCatalogAware.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CMFCatalogAware.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -22,12 +22,16 @@
 from AccessControl.SecurityManagement import newSecurityManager
 from OFS.Folder import Folder
 from OFS.SimpleItem import SimpleItem
+
+from zope.component import getSiteManager
 from zope.interface import implements
 
 from Products.CMFCore.CMFCatalogAware import CMFCatalogAware
 from Products.CMFCore.exceptions import NotFound
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import IContentish
 from Products.CMFCore.testing import EventZCMLLayer
+from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.test_PortalFolder import _AllowedUser
 from Products.CMFCore.tests.test_PortalFolder import _SensitiveSecurityPolicy
 from Products.CMFCore.tests.base.testcase import LogInterceptor
@@ -115,11 +119,15 @@
 
 class CMFCatalogAwareTests(unittest.TestCase, LogInterceptor):
 
+    layer = TraversingZCMLLayer
+
     def setUp(self):
         self.root = DummyRoot('')
         self.root.site = SimpleFolder('site')
         self.site = self.root.site
+        sm = getSiteManager(self.site)
         self.site._setObject('portal_catalog', DummyCatalog())
+        sm.registerUtility(self.site.portal_catalog, ICatalogTool)
         self.site._setObject('portal_workflow', DummyWorkflowTool())
         self.site.foo = TheClass('foo')
 
@@ -219,8 +227,10 @@
 
     def _makeSite(self):
         self.app._setObject('site', SimpleFolder('site'))
+        sm = getSiteManager(self.app.site)
         site = self.app._getOb('site')
         site._setObject('portal_catalog', DummyCatalog())
+        sm.registerUtility(site.portal_catalog, ICatalogTool)
         site._setObject('portal_workflow', DummyWorkflowTool())
         # Hack, we need a _p_mtime for the file, so we make sure that it
         # has one. We use a subtransaction, which means we can rollback

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CachingPolicyManager.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CachingPolicyManager.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CachingPolicyManager.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -41,7 +41,7 @@
 from Products.CMFCore.tests.base.dummy import DummyUserFolder
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import RequestTest
-from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.interfaces import ICachingPolicyManager
 
 ACCLARK = DateTime( '2001/01/01' )
 portal_owner = 'portal_owner'

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSDTMLMethod.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSDTMLMethod.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSDTMLMethod.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -26,7 +26,7 @@
 
 from Products.CMFCore.FSDTMLMethod import FSDTMLMethod
 from Products.CMFCore.FSMetadata import FSMetadata
-from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.interfaces import ICachingPolicyManager
 from Products.CMFCore.tests.base.dummy import DummyCachingManager
 from Products.CMFCore.tests.base.dummy import DummyCachingManagerWithPolicy
 from Products.CMFCore.tests.base.testcase import FSDVTest

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSPageTemplate.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSPageTemplate.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSPageTemplate.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -30,7 +30,7 @@
 
 from Products.CMFCore.FSPageTemplate import FSPageTemplate
 from Products.CMFCore.FSMetadata import FSMetadata
-from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.interfaces import ICachingPolicyManager
 from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyCachingManager
 from Products.CMFCore.tests.base.testcase import FSDVTest

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSReSTMethod.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSReSTMethod.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSReSTMethod.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -20,7 +20,7 @@
 
 from zope.component import getSiteManager
 
-from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.interfaces import ICachingPolicyManager
 from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import RequestTest

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSSTXMethod.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSSTXMethod.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSSTXMethod.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -20,7 +20,7 @@
 
 from zope.component import getSiteManager
 
-from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.interfaces import ICachingPolicyManager
 from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import RequestTest

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_OpaqueItems.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_OpaqueItems.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_OpaqueItems.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -28,7 +28,7 @@
 from Products.CMFCore.interfaces.IOpaqueItems \
         import ICallableOpaqueItemEvents as z2ICallableOpaqueItemEvents
 from Products.CMFCore.PortalFolder import PortalFolder
-from Products.CMFCore.testing import EventZCMLLayer
+from Products.CMFCore.testing import TraversingEventZCMLLayer
 from Products.CMFCore.tests.base.dummy \
     import DummyContent as OriginalDummyContent
 from Products.CMFCore.tests.base.testcase import SecurityTest
@@ -140,7 +140,7 @@
 
 class ManageBeforeAfterTests(SecurityTest):
 
-    layer = EventZCMLLayer
+    layer = TraversingEventZCMLLayer
 
     def setUp(self):
         SecurityTest.setUp(self)

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_PortalContent.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_PortalContent.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_PortalContent.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -23,7 +23,7 @@
 from OFS.Folder import Folder
 
 from Products.CMFCore.exceptions import NotFound
-from Products.CMFCore.testing import EventZCMLLayer
+from Products.CMFCore.testing import TraversingEventZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummyObject
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -95,7 +95,7 @@
     # Tests related to http://www.zope.org/Collectors/CMF/205
     # Copy/pasting a content item must set ownership to pasting user
 
-    layer = EventZCMLLayer
+    layer = TraversingEventZCMLLayer
 
     def setUp(self):
         SecurityRequestTest.setUp(self)

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_PortalFolder.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_PortalFolder.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_PortalFolder.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -26,14 +26,17 @@
 from Acquisition import Implicit
 from DateTime import DateTime
 from OFS.Image import manage_addFile
+
 from zope.component import getGlobalSiteManager
+from zope.component import getSiteManager
 from zope.component.interfaces import IFactory
 
 from Products.CMFCore.CatalogTool import CatalogTool
 from Products.CMFCore.exceptions import BadRequest
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.testing import ConformsToFolder
-from Products.CMFCore.testing import EventZCMLLayer
 from Products.CMFCore.testing import FunctionalZCMLLayer
+from Products.CMFCore.testing import TraversingEventZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummyFactoryDispatcher
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -55,7 +58,7 @@
 
 class PortalFolderFactoryTests(SecurityTest):
 
-    layer = EventZCMLLayer
+    layer = TraversingEventZCMLLayer
     _PORTAL_TYPE = 'Test Folder'
 
     def _getTargetObject(self):
@@ -217,9 +220,11 @@
         # Test is a new object does get cataloged upon _setObject
         # and uncataloged upon manage_deleteObjects
         #
+        sm = getSiteManager(self.site)
         test = self._makeOne('test')
         ttool = self.site._setObject( 'portal_types', TypesTool() )
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
+        sm.registerUtility(ctool, ICatalogTool)
         self.assertEqual( len(ctool), 0 )
 
         test._setObject( 'foo', DummyContent( 'foo' , catalog=1 ) )
@@ -239,8 +244,10 @@
         # Test to ensure a portal folder itself is *not* cataloged upon
         # instantiation (Tracker issue 309)
         #
+        sm = getSiteManager(self.site)
         ttool = self.site._setObject( 'portal_types', TypesTool() )
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
+        sm.registerUtility(ctool, ICatalogTool)
         wftool = self.site._setObject( 'portal_workflow', WorkflowTool() )
         test = self._makeOne('test')
         wftool.notifyCreated(test)
@@ -254,9 +261,11 @@
         #
         from Products.CMFCore.PortalFolder import PortalFolder
 
+        sm = getSiteManager(self.site)
         test = self._makeOne('test')
         ttool = self.site._setObject( 'portal_types', TypesTool() )
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
+        sm.registerUtility(ctool, ICatalogTool)
         self.assertEqual( len(ctool), 0 )
 
         test._setObject( 'sub', PortalFolder( 'sub', '' ) )
@@ -425,7 +434,7 @@
 
 class PortalFolderMoveTests(SecurityTest):
 
-    layer = EventZCMLLayer
+    layer = TraversingEventZCMLLayer
 
     def setUp(self):
         SecurityTest.setUp(self)
@@ -443,8 +452,10 @@
         #
         from Products.CMFCore.PortalFolder import PortalFolder
 
+        sm = getSiteManager(self.site)
         ttool = self.site._setObject( 'portal_types', TypesTool() )
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
+        sm.registerUtility(ctool, ICatalogTool)
         ctool.addIndex('getId', 'FieldIndex')
         self.assertEqual( len(ctool), 0 )
 
@@ -489,7 +500,9 @@
         #
         #   Does copy / paste work?
         #
+        sm = getSiteManager(self.site)
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
+        sm.registerUtility(ctool, ICatalogTool)
         ttool = self.site._setObject( 'portal_types', TypesTool() )
         fti = FTIDATA_DUMMY[0].copy()
         ttool._setObject( 'Dummy Content', FTI(**fti) )

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/utils.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/utils.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/utils.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -47,12 +47,13 @@
 from thread import allocate_lock
 from webdav.common import rfc1123_date
 from zope.component import getUtility
+from zope.component import queryUtility
 from zope.component.interfaces import ComponentLookupError
 from zope.i18nmessageid import MessageFactory
 
 from exceptions import AccessControl_Unauthorized
 from exceptions import NotFound
-from interfaces._tools import ICachingPolicyManager
+from interfaces import ICachingPolicyManager
 
 SUBTEMPLATE = '__SUBTEMPLATE__'
 
@@ -332,9 +333,8 @@
         # not a conditional GET
         return False
 
-    try:
-        manager = getUtility(ICachingPolicyManager)
-    except ComponentLookupError:
+    manager = queryUtility(ICachingPolicyManager)
+    if manager is None:
         return False
 
     ret = manager.getModTimeAndETag(aq_parent(obj), obj.getId(), extra_context)
@@ -414,9 +414,8 @@
         delattr(REQUEST, SUBTEMPLATE)
 
         content = aq_parent(obj)
-        try:
-            manager = getUtility(ICachingPolicyManager)
-        except ComponentLookupError:
+        manager = queryUtility(ICachingPolicyManager)
+        if manager is None:
             return
 
         view_name = obj.getId()

Modified: CMF/branches/jens_tools_as_utilities/CMFDefault/DefaultWorkflow.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFDefault/DefaultWorkflow.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFDefault/DefaultWorkflow.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -21,8 +21,11 @@
 from AccessControl import ClassSecurityInfo
 from DateTime import DateTime
 from Globals import InitializeClass
+
+from zope.component import queryUtility
 from zope.interface import implements
 
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import IWorkflowDefinition
 from Products.CMFCore.interfaces.portal_workflow \
         import WorkflowDefinition as z2IWorkflowDefinition
@@ -156,18 +159,20 @@
             return None
 
         actions = []
-        catalog = getToolByName(self, 'portal_catalog', None)
-        if catalog is not None:
-            pending = len(catalog.searchResults(
-                review_state='pending'))
-            if pending > 0:
-                actions.append(
-                    {'name': 'Pending review (%d)' % pending,
-                     'url': info.portal_url +
-                     '/search?review_state=pending',
-                     'permissions': (ReviewPortalContent, ),
-                     'category': 'global'}
-                    )
+        catalog = query(ICatalogTool)
+        if catalog is None:
+            return actions
+
+        pending = len(catalog.searchResults(review_state='pending'))
+        if pending > 0:
+            actions.append(
+                {'name': 'Pending review (%d)' % pending,
+                 'url': info.portal_url +
+                 '/search?review_state=pending',
+                 'permissions': (ReviewPortalContent, ),
+                 'category': 'global'}
+                )
+
         return actions
 
     security.declarePrivate('isActionSupported')

Modified: CMF/branches/jens_tools_as_utilities/CMFDefault/Extensions/update_catalogIndexes.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFDefault/Extensions/update_catalogIndexes.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFDefault/Extensions/update_catalogIndexes.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -1,4 +1,5 @@
-from Products.CMFCore.utils import getToolByName
+from zope.component import queryUtility
+from Products.CMFCore.interfaces import ICatalogTool
 
 def update_catalogIndexes(self, REQUEST):
     '''
@@ -8,7 +9,7 @@
     rIndexes = {'allowedRolesAndUsers': 'KeywordIndex'
               , 'effective': 'FieldIndex'
               , 'expires': 'FieldIndex'}
-    ct = getToolByName(self, 'portal_catalog')
+    ct = queryUtility(ICatalogTool)
     map(lambda x, ct=ct: ct.delIndex(x), rIndexes.keys())
     map(lambda x, ct=ct: ct.addIndex(x[0], x[1]), rIndexes.items()) 
     ct.manage_reindexIndex(ids=rIndexes.keys(), REQUEST=REQUEST)

Modified: CMF/branches/jens_tools_as_utilities/CMFDefault/profiles/default/componentregistry.xml
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFDefault/profiles/default/componentregistry.xml	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFDefault/profiles/default/componentregistry.xml	2006-12-26 12:55:10 UTC (rev 71651)
@@ -8,5 +8,8 @@
   <utility
      interface="Products.CMFCore.interfaces._tools.ICachingPolicyManager"
      object="/caching_policy_manager"/>
+  <utility
+     interface="Products.CMFCore.interfaces._tools.ICatalogTool"
+     object="/portal_catalog"/>
  </utilities>
 </componentregistry>

Modified: CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Discussions.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Discussions.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Discussions.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -18,7 +18,11 @@
 import unittest
 import Testing
 
+from zope.component import getSiteManager
+
+
 from Products.CMFCore.CatalogTool import CatalogTool
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.testing import EventZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -196,7 +200,9 @@
         assert parents[ 0 ] == reply1
 
     def test_itemCataloguing( self ):
+        sm = getSiteManager(self.site)
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
+        sm.registerUtility(ctool, ICatalogTool)
         dtool = self.site.portal_discussion
         catalog = ctool._catalog
         test = self._makeDummyContent('test', catalog=1)
@@ -258,7 +264,9 @@
                 DiscussionItem.notifyWorkflowCreated = old_method
 
     def test_deletePropagation( self ):
+        sm = getSiteManager(self.site)
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
+        sm.registerUtility(ctool, ICatalogTool)
         dtool = self.site.portal_discussion
         test = self._makeDummyContent('test', catalog=1)
         test.allow_discussion = 1
@@ -272,8 +280,10 @@
         self.assertEqual( len(ctool), 0 )
 
     def test_deleteReplies(self):
+        sm = getSiteManager(self.site)
         dtool = self.site.portal_discussion
         ctool = self.site._setObject( 'portal_catalog', CatalogTool() )
+        sm.registerUtility(ctool, ICatalogTool)
         test = self._makeDummyContent('test')
         test.allow_discussion = 1
 

Modified: CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_File.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_File.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_File.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -23,7 +23,7 @@
 from zope.app.component.hooks import setHooks
 from zope.component import getSiteManager
 
-from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.interfaces import ICachingPolicyManager
 from Products.CMFCore.testing import ConformsToContent
 from Products.CMFCore.tests.base.dummy import DummyCachingManagerWithPolicy
 from Products.CMFCore.tests.base.dummy import DummyCachingManager

Modified: CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Image.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Image.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Image.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -28,7 +28,7 @@
 from AccessControl.SecurityManagement import newSecurityManager
 from AccessControl.User import UnrestrictedUser
 
-from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.interfaces import ICachingPolicyManager
 from Products.CMFCore.testing import ConformsToContent
 from Products.CMFCore.tests.base.dummy import DummyCachingManager
 from Products.CMFCore.tests.base.dummy import DummyCachingManagerWithPolicy

Modified: CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Portal.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Portal.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Portal.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -22,6 +22,9 @@
 from AccessControl.User import UnrestrictedUser
 from Acquisition import aq_base
 
+from zope.component import getSiteManager
+
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFDefault.testing import FunctionalLayer
 
 
@@ -29,6 +32,12 @@
 
     layer = FunctionalLayer
 
+    def afterSetUp(self):
+        ZopeTestCase.FunctionalTestCase.afterSetUp(self)
+
+        sm = getSiteManager()
+        sm.registerUtility(self.app.site.portal_catalog, ICatalogTool)
+
     def _makeContent( self, site, portal_type, id='document', **kw ):
         newSecurityManager(None, UnrestrictedUser('god', '', ['Manager'], ''))
 

Modified: CMF/branches/jens_tools_as_utilities/CMFTopic/Topic.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFTopic/Topic.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFTopic/Topic.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -18,10 +18,13 @@
 from AccessControl import ClassSecurityInfo
 from Acquisition import aq_parent, aq_inner
 from Globals import InitializeClass
+
+from zope.component import getUtility
 from zope.component.factory import Factory
 from zope.interface import implements
 
 from Products.CMFDefault.SkinnedFolder import SkinnedFolder
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.utils import getToolByName
 
 from interfaces import IMutableTopic
@@ -80,7 +83,7 @@
     def listAvailableFields(self):
         """ Return a list of available fields for new criteria.
         """
-        portal_catalog = getToolByName( self, 'portal_catalog' )
+        portal_catalog = getUtility(ICatalogTool)
         currentfields = map( lambda x: x.Field(), self.listCriteria() )
         availfields = filter(
             lambda field, cf=currentfields: field not in cf,
@@ -140,7 +143,7 @@
         o Built-in criteria update any criteria passed in 'kw'.
         """
         kw.update( self.buildQuery() )
-        portal_catalog = getToolByName( self, 'portal_catalog' )
+        portal_catalog = getUtility(ICatalogTool)
         return portal_catalog.searchResults(REQUEST, **kw)
 
     security.declareProtected(View, 'synContentValues')

Modified: CMF/branches/jens_tools_as_utilities/CMFTopic/tests/test_DateC.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFTopic/tests/test_DateC.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFTopic/tests/test_DateC.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -18,8 +18,11 @@
 import unittest
 from Testing import ZopeTestCase
 
+from zope.component import getSiteManager
+
 from DateTime.DateTime import DateTime
 
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFDefault.testing import FunctionalLayer
 from Products.CMFTopic.Topic import Topic
@@ -161,6 +164,8 @@
 
     def afterSetUp(self):
         self.site = self.app.site
+        sm = getSiteManager()
+        sm.registerUtility(self.site.portal_catalog, ICatalogTool)
         self.site._setObject( 'topic', Topic('topic') )
         self.topic = self.site.topic
         self.topic.addCriterion('modified', 'Friendly Date Criterion')

Modified: CMF/branches/jens_tools_as_utilities/CMFTopic/tests/test_Topic.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFTopic/tests/test_Topic.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFTopic/tests/test_Topic.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -21,6 +21,9 @@
 
 from Acquisition import Implicit
 
+from zope.component import getSiteManager
+
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.testing import ConformsToFolder
 from Products.CMFCore.testing import EventZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -62,7 +65,7 @@
         for index_id in index_ids:
             self._indexes[ index_id ] = {}
 
-    def _index( self, obj ):
+    def _index( self, obj, idxs=[] ):
 
         marker = object()
         self._objects.append( obj )
@@ -80,6 +83,8 @@
 
     indexObject = _index
 
+    reindexObject = _index
+
     def searchResults( self, REQUEST=None, **kw ):
 
         limit = None
@@ -136,7 +141,9 @@
                                     self._getTargetClass()(id, *args, **kw))
 
     def _initSite(self, max_items=15, index_ids=()):
+        sm = getSiteManager(self.site)
         self.site.portal_catalog = DummyCatalog( index_ids )
+        sm.registerUtility(self.site.portal_catalog, ICatalogTool)
         self.site.portal_syndication = DummySyndicationTool( max_items )
 
     def _initDocuments(self, **kw):

Modified: CMF/branches/jens_tools_as_utilities/CMFUid/UniqueIdHandlerTool.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFUid/UniqueIdHandlerTool.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFUid/UniqueIdHandlerTool.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -27,9 +27,12 @@
 from Globals import package_home
 from OFS.SimpleItem import SimpleItem
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
+
+from zope.component import getUtility
 from zope.interface import implements
 
 from Products.CMFCore.ActionProviderBase import ActionProviderBase
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.permissions import ManagePortal
 from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.utils import UniqueObject
@@ -80,7 +83,7 @@
     def _reindexObject(self, obj):
         # add uid index and colums to catalog if not yet done
         UID_ATTRIBUTE_NAME = self.UID_ATTRIBUTE_NAME
-        catalog = getToolByName(self, 'portal_catalog')
+        catalog = getUtility(ICatalogTool)
         if UID_ATTRIBUTE_NAME not in catalog.indexes():
             catalog.addIndex(UID_ATTRIBUTE_NAME, 'FieldIndex')
             catalog.addColumn(UID_ATTRIBUTE_NAME)
@@ -179,7 +182,7 @@
         generator = getToolByName(self, 'portal_uidgenerator')
         uid = generator.convert(uid)
 
-        catalog = getToolByName(self, 'portal_catalog')
+        catalog = getUtility(ICatalogTool)
         searchMethod = getattr(catalog, searchMethodName)
         result = searchMethod({self.UID_ATTRIBUTE_NAME: uid})
         len_result = len(result)

Modified: CMF/branches/jens_tools_as_utilities/CMFUid/tests/test_uidhandling.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFUid/tests/test_uidhandling.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/CMFUid/tests/test_uidhandling.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -18,6 +18,9 @@
 import unittest
 import Testing
 
+from zope.component import getSiteManager
+
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummyFolder
 from Products.CMFCore.tests.base.dummy import DummySite
@@ -51,6 +54,9 @@
         self.root._setObject('dummy', DummyContent(id='dummy'))
         self.root._setObject('dummy2', DummyContent(id='dummy2'))
 
+        sm = getSiteManager()
+        sm.registerUtility(self.root.portal_catalog, ICatalogTool)
+
     def test_z3interfaces(self):
         from zope.interface.verify import verifyClass
         from Products.CMFUid.interfaces import IUniqueIdBrainQuery

Modified: CMF/branches/jens_tools_as_utilities/DCWorkflow/DCWorkflow.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/DCWorkflow/DCWorkflow.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/DCWorkflow/DCWorkflow.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -25,13 +25,15 @@
 from Globals import InitializeClass
 from OFS.Folder import Folder
 from OFS.ObjectManager import bad_id
+
+from zope.component import getUtility
 from zope.interface import implements
 
 # CMFCore
+from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import IWorkflowDefinition
 from Products.CMFCore.interfaces.portal_workflow \
         import WorkflowDefinition as z2IWorkflowDefinition
-from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.WorkflowCore import ObjectDeleted
 from Products.CMFCore.WorkflowCore import ObjectMoved
 from Products.CMFCore.WorkflowCore import WorkflowException
@@ -230,7 +232,7 @@
                     var_match_keys = qdef.getVarMatchKeys()
                     if var_match_keys:
                         # Check the catalog for items in the worklist.
-                        catalog = getToolByName(self, 'portal_catalog')
+                        catalog = getUtility(ICatalogTool)
                         kw = {}
                         for k in var_match_keys:
                             v = qdef.getVarMatch(k)

Modified: CMF/branches/jens_tools_as_utilities/DCWorkflow/tests/test_DCWorkflow.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/DCWorkflow/tests/test_DCWorkflow.py	2006-12-25 20:03:18 UTC (rev 71650)
+++ CMF/branches/jens_tools_as_utilities/DCWorkflow/tests/test_DCWorkflow.py	2006-12-26 12:55:10 UTC (rev 71651)
@@ -18,6 +18,7 @@
 import unittest
 import Testing
 
+from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyContent
 from Products.CMFCore.tests.base.dummy import DummySite
 from Products.CMFCore.tests.base.dummy import DummyTool
@@ -26,6 +27,8 @@
 
 class DCWorkflowDefinitionTests(unittest.TestCase):
 
+    layer = TraversingZCMLLayer
+
     def setUp(self):
         self.site = DummySite('site')
         self.site._setObject( 'portal_types', DummyTool() )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.