Previously yuppie wrote: > Hi! > > > Wichert Akkerman wrote: > >Previously yuppie wrote: > >>Wichert Akkerman wrote: > >>>Previously yuppie wrote: > >>>>- The exports created by the new components handler are still flawed, > >>>>ISiteRoot and placeless components are not exported correctly. > >>>I'm quite sure I fixed that: I was able to export the components and > >>>import them again. Has that been broken since? > >>Don't know since when these things are broken, but in the latest code > >>there are these 2 bugs: > >> > >> > >>1.) Exporting the ISiteRoot utility, 'object' should be empty. But I get > >>this instead: > >> > >> <utility interface="Products.CMFCore.interfaces._content.ISiteRoot" > >> object="SITE_ID"/> > >> > >> > >>2.) By placeless components I mean something like this: > >> > >> <utility component="foo.bar" interface="foo.IBar"/> > >> > >>The import works fine, but the export looks like this: > >> > >> <utility factory="foo.Bar" interface="foo.IBar"/> > > Attached is a diff for test_components.py. Unfortunately the > AssertionErrors are a bit cryptic, but they show that the factory is > exported instead of the component.
I'll take a look at those. > >I get something else: if I import this: > > > > <utility interface="foo.IBar" factory="foo.bar"/> > > > >the export looks like this: > > > > <utility interface="foo.IBar" object=""/> > > That seems to be a similar but different bug. > > >this is caused by the zope.component.registerUtility not storing the > >factory method but the return value from the factory, so we no longer > >have the factory method available when we export. > > > >The only way to fix that appears to be for us to keep a a registry of > >factory methods in the setup tool. That may be too big of a change > >in a minor release though. > > Not sure if your issue is a problem in real life. AFAICS this only > happens if you use a factory that is meant for ZODB objects. In that > case you should register an object. Ah, that makes sense I guess. My test-case was this: from Products.MailHost.MailHost import MailHost def genMail(): return MailHost() <utility interface="Products.MailHost.interfaces.IMailHost" factory="Products.GenericSetup.hack.genMail"/> and a MailHost is indeed a ZODB object. Wichert. -- Wichert Akkerman <[EMAIL PROTECTED]> It is simple to make things. http://www.wiggy.net/ It is hard to make things simple. _______________________________________________ Zope-CMF maillist - Zope-CMF@lists.zope.org http://mail.zope.org/mailman/listinfo/zope-cmf See http://collector.zope.org/CMF for bug reports and feature requests