SVN: CMF/branches/jens_tools_as_utilities/CMF - converted caching policy manager to utility usage

Jens Vagelpohl <[email protected]>
Newsgroups gmane.comp.web.zope.cmf.cvs
Message-ID <20061122114038.D8800203251__24295.0931344696$1164195664$gmane$org@mail.zope.org>
Log message for revision 71262:
  - converted caching policy manager to utility usage

Changed:
  U   CMF/branches/jens_tools_as_utilities/CMFCore/CachingPolicyManager.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/tests/test_cachingpolicymgr.py
  U   CMF/branches/jens_tools_as_utilities/CMFCore/testing.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/utils.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

-=-
Modified: CMF/branches/jens_tools_as_utilities/CMFCore/CachingPolicyManager.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/CachingPolicyManager.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/CachingPolicyManager.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -43,6 +43,7 @@
 from utils import _setCacheHeaders
 from utils import _ViewEmulator
 from utils import getToolByName
+from utils import registerToolInterface
 
 # This is lame :(
 # This listing is used to decide whether to wrap an object inside a "fake view"
@@ -876,8 +877,8 @@
 
 
 InitializeClass( CachingPolicyManager )
+registerToolInterface('caching_policy_manager', ICachingPolicyManager)
 
-
 def handleCachingPolicyManagerEvent(ob, event):
     """ Event subscriber for (un)registering a CPM as CacheManager
     """

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/actions.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/actions.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/actions.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -35,6 +35,7 @@
 from zope.component import adapts
 from zope.component import getUtility
 from zope.component import getSiteManager
+from zope.component.interfaces import ComponentLookupError
 
 _SPECIAL_PROVIDERS = ('portal_actions', 'portal_types', 'portal_workflow')
 
@@ -257,8 +258,9 @@
     """Export actions tool.
     """
     sm = getSiteManager(context.getSite())
-    tool = sm.getUtility(IActionsTool)
-    if tool is None:
+    try:
+        tool = sm.getUtility(IActionsTool)
+    except ComponentLookupError:
         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-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/cachingpolicymgr.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -16,7 +16,10 @@
 """
 
 from zope.component import adapts
+from zope.component import getUtility
+from zope.component import getSiteManager
 from zope.component import queryMultiAdapter
+from zope.component.interfaces import ComponentLookupError
 
 from Products.GenericSetup.interfaces import INode
 from Products.GenericSetup.interfaces import ISetupEnviron
@@ -27,7 +30,6 @@
 
 from Products.CMFCore.interfaces import ICachingPolicy
 from Products.CMFCore.interfaces import ICachingPolicyManager
-from Products.CMFCore.utils import getToolByName
 
 
 class CachingPolicyNodeAdapter(NodeAdapterBase):
@@ -172,17 +174,18 @@
 def importCachingPolicyManager(context):
     """Import caching policy manager settings from an XML file.
     """
-    site = context.getSite()
-    tool = getToolByName(site, 'caching_policy_manager')
+    sm = getSiteManager(context.getSite())
+    tool = sm.getUtility(ICachingPolicyManager)
 
     importObjects(tool, '', context)
 
 def exportCachingPolicyManager(context):
     """Export caching policy manager settings as an XML file.
     """
-    site = context.getSite()
-    tool = getToolByName(site, 'caching_policy_manager', None)
-    if tool is None:
+    sm = getSiteManager(context.getSite())
+    try:
+        tool = sm.getUtility(ICachingPolicyManager)
+    except ComponentLookupError:
         logger = context.getLogger('cachingpolicies')
         logger.info('Nothing to export.')
         return

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-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/exportimport/tests/test_cachingpolicymgr.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -26,8 +26,11 @@
 from Products.GenericSetup.tests.common import DummyExportContext
 from Products.GenericSetup.tests.common import DummyImportContext
 
+from Products.CMFCore.interfaces._tools import ICachingPolicyManager
 from Products.CMFCore.testing import ExportImportZCMLLayer
 
+from zope.component import getSiteManager
+
 _CP_XML = """\
 <caching-policy name="foo_policy" enable_304s="False" etag_func=""
    last_modified="True" max_age_secs="0" mtime_func="object/modified"
@@ -128,6 +131,9 @@
         mgr = CachingPolicyManager()
         site._setObject( mgr.getId(), mgr )
 
+        sm = getSiteManager(site)
+        sm.registerUtility(site.caching_policy_manager, ICachingPolicyManager)
+
         if with_policy:
             mgr.addPolicy( policy_id=self.POLICY_ID
                          , predicate=self.PREDICATE

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/testing.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/testing.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/testing.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -144,6 +144,7 @@
 
         zcml.load_config('meta.zcml', Products.Five)
         zcml.load_config('traversing.zcml', Products.Five)
+        setHooks()
 
     @classmethod
     def tearDown(cls):
@@ -161,6 +162,7 @@
         i18n._fallback_translation_service = _FallbackTranslationService()
 
         zcml.load_config('testing.zcml', Products.CMFCore)
+        setHooks()
 
     @classmethod
     def tearDown(cls):

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CachingPolicyManager.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CachingPolicyManager.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_CachingPolicyManager.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -28,6 +28,9 @@
 from DateTime.DateTime import DateTime
 from OFS.Cache import Cacheable
 
+from zope.app.component.hooks import setHooks
+from zope.component import getSiteManager
+
 from Products.CMFCore.FSPageTemplate import FSPageTemplate
 from Products.CMFCore.FSDTMLMethod import FSDTMLMethod
 from Products.CMFCore.testing import FunctionalZCMLLayer
@@ -38,6 +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
 
 ACCLARK = DateTime( '2001/01/01' )
 portal_owner = 'portal_owner'
@@ -680,6 +684,9 @@
         CachingPolicyManager.manage_addCachingPolicyManager(self.portal)
         cpm = self.portal.caching_policy_manager
 
+        sm = getSiteManager(self.portal)
+        sm.registerUtility(cpm, ICachingPolicyManager)
+
         # This policy only applies to doc1. It will not emit any ETag header
         # but it enables If-modified-since handling.
         cpm.addPolicy(policy_id = 'policy_no_etag',
@@ -903,6 +910,11 @@
         from Products.CMFCore import CachingPolicyManager
         CachingPolicyManager.manage_addCachingPolicyManager(self.portal)
 
+        sm = getSiteManager(self.portal)
+        sm.registerUtility( self.portal.caching_policy_manager
+                          , ICachingPolicyManager
+                          )
+
     def tearDown(self):
         RequestTest.tearDown(self)
         FSObjMaker.tearDown(self)
@@ -1223,6 +1235,9 @@
         CachingPolicyManager.manage_addCachingPolicyManager(self.portal)
         cpm = self.portal.caching_policy_manager
 
+        sm = getSiteManager(self.portal)
+        sm.registerUtility(cpm, ICachingPolicyManager)
+
         # This policy only applies to doc1. It will not emit any ETag header
         # but it enables If-modified-since handling.
         cpm.addPolicy(policy_id = 'policy_1',

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSDTMLMethod.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSDTMLMethod.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSDTMLMethod.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -26,6 +26,7 @@
 
 from Products.CMFCore.FSDTMLMethod import FSDTMLMethod
 from Products.CMFCore.FSMetadata import FSMetadata
+from Products.CMFCore.interfaces._tools 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
@@ -33,7 +34,10 @@
 from Products.CMFCore.tests.base.testcase import SecurityTest
 from Products.CMFCore.tests.base.dummy import DummyContent
 
+from zope.app.component.hooks import setHooks
+from zope.component import getSiteManager
 
+
 class FSDTMLMaker(FSDVTest):
 
     def _makeOne( self, id, filename ):
@@ -48,11 +52,19 @@
     def setUp(self):
         FSDTMLMaker.setUp(self)
         RequestTest.setUp(self)
+        setHooks()
 
     def tearDown(self):
         RequestTest.tearDown(self)
         FSDTMLMaker.tearDown(self)
 
+    def _setupCachingPolicyManager(self, cpm_object):
+        self.root.caching_policy_manager = cpm_object
+        sm = getSiteManager(self.root)
+        sm.registerUtility( self.root.caching_policy_manager
+                          , ICachingPolicyManager
+                          )
+
     def test_Call( self ):
         script = self._makeOne( 'testDTML', 'testDTML.dtml' )
         script = script.__of__(self.app)
@@ -60,7 +72,7 @@
 
     def test_caching( self ):
         #   Test HTTP caching headers.
-        self.root.caching_policy_manager = DummyCachingManager()
+        self._setupCachingPolicyManager(DummyCachingManager())
         original_len = len( self.RESPONSE.headers )
         script = self._makeOne('testDTML', 'testDTML.dtml')
         script = script.__of__(self.root)
@@ -87,7 +99,7 @@
         from webdav.common import rfc1123_date
 
         mod_time = DateTime()
-        self.root.caching_policy_manager = DummyCachingManagerWithPolicy()
+        self._setupCachingPolicyManager(DummyCachingManagerWithPolicy())
         content = DummyContent(id='content')
         content.modified_date = mod_time
         content = content.__of__(self.root)

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSPageTemplate.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSPageTemplate.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSPageTemplate.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -23,10 +23,14 @@
 
 from OFS.Folder import Folder
 from Products.StandardCacheManagers import RAMCacheManager
+
+from zope.app.component.hooks import setHooks
+from zope.component import getSiteManager
 from zope.tales.tales import Undefined
 
 from Products.CMFCore.FSPageTemplate import FSPageTemplate
 from Products.CMFCore.FSMetadata import FSMetadata
+from Products.CMFCore.interfaces._tools import ICachingPolicyManager
 from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.dummy import DummyCachingManager
 from Products.CMFCore.tests.base.testcase import FSDVTest
@@ -55,6 +59,13 @@
         RequestTest.tearDown(self)
         FSPTMaker.tearDown(self)
 
+    def _setupCachingPolicyManager(self, cpm_object):
+        self.root.caching_policy_manager = cpm_object
+        sm = getSiteManager(self.root)
+        sm.registerUtility( self.root.caching_policy_manager
+                          , ICachingPolicyManager
+                          )
+
     def test_Call( self ):
         script = self._makeOne( 'testPT', 'testPT.pt' )
         script = script.__of__(self.app)
@@ -105,7 +116,7 @@
     def test_caching( self ):
 
         #   Test HTTP caching headers.
-        self.root.caching_policy_manager = DummyCachingManager()
+        self._setupCachingPolicyManager(DummyCachingManager())
         original_len = len( self.RESPONSE.headers )
         script = self._makeOne('testPT', 'testPT.pt')
         script = script.__of__(self.root)

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSReSTMethod.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSReSTMethod.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSReSTMethod.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -18,12 +18,13 @@
 import os
 import re
 
-from zope.component.testing import PlacelessSetup
+from zope.component import getSiteManager
 
+from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import RequestTest
 from Products.CMFCore.tests.base.testcase import SecurityTest
-from Products.CMFCore.tests.base.utils import _setUpDefaultTraversable
 
 
 class FSReSTMaker(FSDVTest):
@@ -75,22 +76,21 @@
     return ' '.join(WS.split(text.rstrip()))
 
 
-class FSReSTMethodTests(RequestTest, FSReSTMaker, PlacelessSetup):
+class FSReSTMethodTests(RequestTest, FSReSTMaker):
 
+    layer = TraversingZCMLLayer
+
     def setUp(self):
         RequestTest.setUp(self)
         FSReSTMaker.setUp(self)
-        PlacelessSetup.setUp(self)
 
     def tearDown(self):
-        PlacelessSetup.tearDown(self)
         FSReSTMaker.tearDown(self)
         RequestTest.tearDown(self)
 
     def test___call__( self ):
         script = self._makeOne( 'testReST', 'testReST.rst' )
         script = script.__of__(self.app)
-        _setUpDefaultTraversable()
         self.assertEqual(_normalize_whitespace(script(self.REQUEST)),
                          _normalize_whitespace(_EXPECTED_HTML))
 
@@ -98,10 +98,15 @@
         #   Test HTTP caching headers.
         from Products.CMFCore.tests.base.dummy import DummyCachingManager
         self.root.caching_policy_manager = DummyCachingManager()
+
+        sm = getSiteManager(self.root)
+        sm.registerUtility( self.root.caching_policy_manager
+                          , ICachingPolicyManager
+                          )
+        
         original_len = len( self.RESPONSE.headers )
         script = self._makeOne('testReST', 'testReST.rst')
         script = script.__of__(self.root)
-        _setUpDefaultTraversable()
         script(self.REQUEST, self.RESPONSE)
         self.failUnless( len( self.RESPONSE.headers ) >= original_len + 2 )
         self.failUnless( 'foo' in self.RESPONSE.headers.keys() )
@@ -129,6 +134,12 @@
 
         mod_time = DateTime()
         self.root.caching_policy_manager = DummyCachingManagerWithPolicy()
+
+        sm = getSiteManager(self.root)
+        sm.registerUtility( self.root.caching_policy_manager
+                          , ICachingPolicyManager
+                          )
+
         script = self._makeOne('testReST', 'testReST.rst')
         script = script.__of__(self.root)
         self.REQUEST.environ[ 'IF_MODIFIED_SINCE'
@@ -146,16 +157,12 @@
                  ,
                  )
 
-class FSReSTMethodCustomizationTests(SecurityTest,
-                                     FSReSTMaker,
-                                     PlacelessSetup,
-                                    ):
+class FSReSTMethodCustomizationTests(SecurityTest, FSReSTMaker):
 
     def setUp( self ):
         from OFS.Folder import Folder
         SecurityTest.setUp( self )
         FSReSTMaker.setUp(self)
-        PlacelessSetup.setUp(self)
 
         self.root._setObject( 'portal_skins', Folder( 'portal_skins' ) )
         self.skins = self.root.portal_skins
@@ -172,7 +179,6 @@
         self.fsReST = self.fsdir.testReST
 
     def tearDown( self ):
-        PlacelessSetup.tearDown(self)
         FSReSTMaker.tearDown( self )
         SecurityTest.tearDown( self )
 

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSSTXMethod.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSSTXMethod.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/tests/test_FSSTXMethod.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -18,8 +18,10 @@
 import os
 import re
 
-from zope.component.testing import PlacelessSetup
+from zope.component import getSiteManager
 
+from Products.CMFCore.interfaces._tools import ICachingPolicyManager
+from Products.CMFCore.testing import TraversingZCMLLayer
 from Products.CMFCore.tests.base.testcase import FSDVTest
 from Products.CMFCore.tests.base.testcase import RequestTest
 from Products.CMFCore.tests.base.testcase import SecurityTest
@@ -93,17 +95,16 @@
 class FSSTXMethodTests(RequestTest,
                        FSSTXMaker,
                        _TemplateSwitcher,
-                       PlacelessSetup,
                       ):
 
+    layer = TraversingZCMLLayer
+
     def setUp(self):
         _TemplateSwitcher.setUp(self)
         FSSTXMaker.setUp(self)
         RequestTest.setUp(self)
-        PlacelessSetup.setUp(self)
 
     def tearDown(self):
-        PlacelessSetup.tearDown(self)
         RequestTest.tearDown(self)
         FSSTXMaker.tearDown(self)
         _TemplateSwitcher.tearDown(self)
@@ -128,6 +129,12 @@
         from Products.CMFCore.tests.base.dummy import DummyCachingManager
         self._setWhichTemplate('DTML')
         self.root.caching_policy_manager = DummyCachingManager()
+
+        sm = getSiteManager(self.root)
+        sm.registerUtility( self.root.caching_policy_manager
+                          , ICachingPolicyManager
+                          )
+
         original_len = len( self.RESPONSE.headers )
         script = self._makeOne('testSTX', 'testSTX.stx')
         script = script.__of__(self.root)
@@ -158,6 +165,12 @@
 
         mod_time = DateTime()
         self.root.caching_policy_manager = DummyCachingManagerWithPolicy()
+
+        sm = getSiteManager(self.root)
+        sm.registerUtility( self.root.caching_policy_manager
+                          , ICachingPolicyManager
+                          )
+
         script = self._makeOne('testSTX', 'testSTX.stx')
         script = script.__of__(self.root)
         self.REQUEST.environ[ 'IF_MODIFIED_SINCE'
@@ -178,7 +191,6 @@
 class FSSTXMethodCustomizationTests(SecurityTest,
                                     FSSTXMaker,
                                     _TemplateSwitcher,
-                                    PlacelessSetup,
                                    ):
 
     def setUp( self ):
@@ -186,7 +198,6 @@
         FSSTXMaker.setUp(self)
         SecurityTest.setUp( self )
         _TemplateSwitcher.setUp( self )
-        PlacelessSetup.setUp(self)
 
         self.root._setObject( 'portal_skins', Folder( 'portal_skins' ) )
         self.skins = self.root.portal_skins
@@ -203,7 +214,6 @@
         self.fsSTX = self.fsdir.testSTX
 
     def tearDown( self ):
-        PlacelessSetup.tearDown(self)
         _TemplateSwitcher.tearDown( self )
         FSSTXMaker.tearDown( self )
         SecurityTest.tearDown( self )

Modified: CMF/branches/jens_tools_as_utilities/CMFCore/utils.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFCore/utils.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFCore/utils.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -52,6 +52,7 @@
 
 from exceptions import AccessControl_Unauthorized
 from exceptions import NotFound
+from interfaces._tools import ICachingPolicyManager
 
 SUBTEMPLATE = '__SUBTEMPLATE__'
 
@@ -331,8 +332,9 @@
         # not a conditional GET
         return False
 
-    manager = getToolByName(obj, 'caching_policy_manager', None)
-    if manager is None:
+    try:
+        manager = getUtility(ICachingPolicyManager)
+    except ComponentLookupError:
         return False
 
     ret = manager.getModTimeAndETag(aq_parent(obj), obj.getId(), extra_context)
@@ -412,23 +414,26 @@
         delattr(REQUEST, SUBTEMPLATE)
 
         content = aq_parent(obj)
-        manager = getToolByName(obj, 'caching_policy_manager', None)
-        if manager is not None:
-            view_name = obj.getId()
-            headers = manager.getHTTPCachingHeaders(
-                              content, view_name, extra_context
-                              )
-            RESPONSE = REQUEST['RESPONSE']
-            for key, value in headers:
-                if key == 'ETag':
-                    RESPONSE.setHeader(key, value, literal=1)
-                else:
-                    RESPONSE.setHeader(key, value)
-            if headers:
-                RESPONSE.setHeader('X-Cache-Headers-Set-By',
-                                   'CachingPolicyManager: %s' %
-                                   '/'.join(manager.getPhysicalPath()))
+        try:
+            manager = getUtility(ICachingPolicyManager)
+        except ComponentLookupError:
+            return
 
+        view_name = obj.getId()
+        headers = manager.getHTTPCachingHeaders(
+                          content, view_name, extra_context
+                          )
+        RESPONSE = REQUEST['RESPONSE']
+        for key, value in headers:
+            if key == 'ETag':
+                RESPONSE.setHeader(key, value, literal=1)
+            else:
+                RESPONSE.setHeader(key, value)
+        if headers:
+            RESPONSE.setHeader('X-Cache-Headers-Set-By',
+                               'CachingPolicyManager: %s' %
+                               '/'.join(manager.getPhysicalPath()))
+
 class _ViewEmulator(Implicit):
     """Auxiliary class used to adapt FSFile and FSImage
     for caching_policy_manager

Modified: CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_File.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_File.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_File.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -20,6 +20,10 @@
 
 from os.path import join as path_join
 
+from zope.app.component.hooks import setHooks
+from zope.component import getSiteManager
+
+from Products.CMFCore.interfaces._tools import ICachingPolicyManager
 from Products.CMFCore.testing import ConformsToContent
 from Products.CMFCore.tests.base.dummy import DummyCachingManagerWithPolicy
 from Products.CMFCore.tests.base.dummy import DummyCachingManager
@@ -75,6 +79,10 @@
 
 class CachingTests(RequestTest):
 
+    def setUp(self):
+        RequestTest.setUp(self)
+        setHooks()
+
     def _getTargetClass(self):
         from Products.CMFDefault.File import File
 
@@ -93,8 +101,15 @@
 
         return TEST_SWF, data
 
+    def _setupCachingPolicyManager(self, cpm_object):
+        self.root.caching_policy_manager = cpm_object
+        sm = getSiteManager(self.root)
+        sm.registerUtility( self.root.caching_policy_manager
+                          , ICachingPolicyManager
+                          )
+
     def test_index_html_with_304_from_cpm( self ):
-        self.root.caching_policy_manager = DummyCachingManagerWithPolicy()
+        self._setupCachingPolicyManager(DummyCachingManagerWithPolicy())
         path, ref = self._extractFile()
 
         from webdav.common import rfc1123_date
@@ -116,7 +131,7 @@
 
     def test_index_html_200_with_cpm( self ):
         # should behave the same as without cpm installed
-        self.root.caching_policy_manager = DummyCachingManager()
+        self._setupCachingPolicyManager(DummyCachingManager())
         path, ref = self._extractFile()
 
         from webdav.common import rfc1123_date
@@ -139,7 +154,7 @@
                         , rfc1123_date( mod_time ) )
 
     def test_caching( self ):
-        self.root.caching_policy_manager = DummyCachingManager()
+        self._setupCachingPolicyManager(DummyCachingManager())
         original_len = len(self.RESPONSE.headers)
         file = self._makeOne('test_file', 'test_file.swf')
         file = file.__of__(self.root)

Modified: CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Image.py
===================================================================
--- CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Image.py	2006-11-22 11:33:21 UTC (rev 71261)
+++ CMF/branches/jens_tools_as_utilities/CMFDefault/tests/test_Image.py	2006-11-22 11:40:37 UTC (rev 71262)
@@ -21,10 +21,14 @@
 from os.path import join as path_join
 from cStringIO import StringIO
 
+from zope.app.component.hooks import setHooks
+from zope.component import getSiteManager
+
 import transaction
 from AccessControl.SecurityManagement import newSecurityManager
 from AccessControl.User import UnrestrictedUser
 
+from Products.CMFCore.interfaces._tools import ICachingPolicyManager
 from Products.CMFCore.testing import ConformsToContent
 from Products.CMFCore.tests.base.dummy import DummyCachingManager
 from Products.CMFCore.tests.base.dummy import DummyCachingManagerWithPolicy
@@ -174,6 +178,10 @@
 
 class TestCaching(RequestTest):
 
+    def setUp(self):
+        RequestTest.setUp(self)
+        setHooks()
+
     def _extractFile( self ):
 
         f = open( TEST_JPG, 'rb' )
@@ -192,8 +200,15 @@
     def _makeOne(self, *args, **kw):
         return self._getTargetClass()(*args, **kw)
 
+    def _setupCachingPolicyManager(self, cpm_object):
+        self.root.caching_policy_manager = cpm_object
+        sm = getSiteManager(self.root)
+        sm.registerUtility( self.root.caching_policy_manager
+                          , ICachingPolicyManager
+                          )
+
     def test_index_html_with_304_from_cpm( self ):
-        self.root.caching_policy_manager = DummyCachingManagerWithPolicy()
+        self._setupCachingPolicyManager(DummyCachingManagerWithPolicy())
         path, ref = self._extractFile()
 
         from webdav.common import rfc1123_date
@@ -214,7 +229,7 @@
         self.assertEqual( self.RESPONSE.getStatus(), 304 )
 
     def test_caching( self ):
-        self.root.caching_policy_manager = DummyCachingManager()
+        self._setupCachingPolicyManager(DummyCachingManager())
         original_len = len(self.RESPONSE.headers)
         image = self._makeOne('test_image', 'test_image.jpg')
         image = image.__of__(self.root)
@@ -226,7 +241,7 @@
         self.assertEqual(headers['test_path'], '/test_image')
 
     def test_index_html_200_with_cpm( self ):
-        self.root.caching_policy_manager = DummyCachingManagerWithPolicy()
+        self._setupCachingPolicyManager(DummyCachingManagerWithPolicy())
         path, ref = self._extractFile()
 
         from webdav.common import rfc1123_date
@@ -252,7 +267,7 @@
     def test_index_html_with_304_and_caching( self ):
 
         # See collector #355
-        self.root.caching_policy_manager = DummyCachingManager()
+        self._setupCachingPolicyManager(DummyCachingManager())
         original_len = len(self.RESPONSE.headers)
         path, ref = self._extractFile()
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.