On Dec 2, 2009, at 12:47 PM, Francis J. Lacoste wrote:

> On December 2, 2009, Gary Poster wrote:
>> On Dec 2, 2009, at 11:41 AM, Muharem Hrnjadovic wrote:
>>> Gary Poster wrote:
>>>> On Dec 2, 2009, at 10:41 AM, Muharem Hrnjadovic wrote:
>>>>> Quick question:
>>>>> 
>>>>> do we use the zope class registry anywhere?
>>>> 
>>>> I doubt it.
>>>> 
>>>>> Is it safe to use within
>>>>> Launchpad?
>>>> 
>>>> I'd prefer to use utility registration if that can work with your use
>>>> case.
>>> 
>>> Sorry for not being precise enough. In my particular case a number of
>>> classes would implement the interface in question (IBuildFarmJob).
>>> 
>>> I understood the utility registration mechanism requires that there is
>>> exactly one class that implements a particular interface in which case I
>>> could not use it for the interface/purpose at hand.
>> 
>> The class registry you showed had keys and values.
>> 
>> You can register different utilities for the same interface by providing a
>> different name for each one (I think of this as a namespace).
>> 
>> You can then get all of the utilities for that interface with 
> getUtilitiesFor.  From docs:
>>>>> sorted(components.getUtilitiesFor(tests.I2))
>> 
>> [(u'', U12(2)), (u'three', U12(3))]
>> 
>> In that example, ``components`` could be obtained as follows:
>> 
>> from zope.component import getSiteManager
>> components = getSiteManager()
> 
> Another possibility is to use subscriptions. You can register components for 
> the IBuildFarmJob interface and get all the registered subscribers.

Absolutely.

FWIW, I don't like subscription adapters because their functionality can be 
essentially duplicated in the way I described, with named utilities.  I'm 
trying to reduce the number of things to learn about in Zope's Component 
Architecture in zope-dev.  So I don't recommend them...but that's just me. :-)

Gary
_______________________________________________
Mailing list: https://launchpad.net/~launchpad-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to