[Zope3-checkins] SVN: Zope3/trunk/ implement IPersistent to LocalUtilityService

Jim Fulton jim at zope.com
Wed Dec 1 06:03:58 EST 2004


The test shouldn't be in the intid package. It doesn't test
intid. It should be in zope.app.utility.  Even there, it seems
wrong to provide that sort of coupling.

I wonder if it would be better to change the initid add subscriber
to ignore objects that can't be adapted to IKeyReference.

Jim


Dominik Huber wrote:
> Log message for revision 28544:
>   implement IPersistent to LocalUtilityService
>   to prevent intid utility errors during registration
>   and unregistration of local utility services.
> 
> Changed:
>   U   Zope3/trunk/doc/CHANGES.txt
>   U   Zope3/trunk/src/zope/app/intid/tests.py
>   U   Zope3/trunk/src/zope/app/utility/utility.py
> 
> -=-
> Modified: Zope3/trunk/doc/CHANGES.txt
> ===================================================================
> --- Zope3/trunk/doc/CHANGES.txt	2004-11-30 22:33:58 UTC (rev 28543)
> +++ Zope3/trunk/doc/CHANGES.txt	2004-12-01 07:39:52 UTC (rev 28544)
> @@ -197,6 +197,10 @@
>  
>      Bug Fixes
>  
> +      - Fixed intid utility: Registration and unregistration of
> +        local utitlity services, context aware registration of nested 
> +        components that may provide their own intids utiltities.
> +
>        - Fixed browser:defaultView metaconfigure: for_ passes a GlobalObject
>          and not a Token of GlobalObjects.
>  
> 
> Modified: Zope3/trunk/src/zope/app/intid/tests.py
> ===================================================================
> --- Zope3/trunk/src/zope/app/intid/tests.py	2004-11-30 22:33:58 UTC (rev 28543)
> +++ Zope3/trunk/src/zope/app/intid/tests.py	2004-12-01 07:39:52 UTC (rev 28544)
> @@ -210,7 +210,10 @@
>          self.assertEquals(events[0].original_event.object, parent_folder)
>          self.assertEquals(events[0].object, folder)
>  
> -    def test_localutilityservice_bug(self):
> +    def test_addIntIdSubscriber_and_localutilityservice(self):
> +        # Their was a bug caused when a local utility service was
> +        # registered within a intid utility
> +
>          # setup first some stuff
>          from zope.app.intid import addIntIdSubscriber
>          from zope.app.container.contained import ObjectAddedEvent
> @@ -225,18 +228,7 @@
>          utils = LocalUtilityService()
>          utils.__parent__ = folder # cheat IConnection adapter
>  
> -        # try to register the local utility sevice
> -        self.assertRaises(TypeError, addIntIdSubscriber, utils, ObjectAddedEvent(parent_folder))
> -
> -        # problem: local utility sevice does not provide IPersistent
> -        # -> LocalUtilityService implementsOnly(ILocalUtilityService, ISimpleService, IBindingAware)
> -        self.assertEquals(False, IPersistent.providedBy(utils))
> -
> -        # add IPersistent to utils
> -        from zope.interface import directlyProvides, directlyProvidedBy
> -        directlyProvides(utils, IPersistent, directlyProvidedBy(utils))
> -
> -        # try another time...
> +        # register utils
>          addIntIdSubscriber(utils, ObjectAddedEvent(parent_folder))
>  
>          # check that the utilis got registered
> 
> Modified: Zope3/trunk/src/zope/app/utility/utility.py
> ===================================================================
> --- Zope3/trunk/src/zope/app/utility/utility.py	2004-11-30 22:33:58 UTC (rev 28543)
> +++ Zope3/trunk/src/zope/app/utility/utility.py	2004-12-01 07:39:52 UTC (rev 28544)
> @@ -16,7 +16,7 @@
>  
>  $Id$
>  """
> -
> +from persistent.interfaces import IPersistent
>  from zope.app.adapter.adapter import LocalAdapterService
>  from zope.app import zapi
>  from zope.app.registration.registration import ComponentRegistration
> @@ -38,6 +38,7 @@
>          ILocalUtilityService,
>          zope.app.site.interfaces.ISimpleService,
>          zope.app.site.interfaces.IBindingAware,
> +        IPersistent # used for IKeyReference adaption
>          )
>  
>  
> 
> _______________________________________________
> Zope3-Checkins mailing list
> Zope3-Checkins at zope.org
> http://mail.zope.org/mailman/listinfo/zope3-checkins


-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org



More information about the Zope3-Checkins mailing list