On Jun 19, 2008, at 9:37 AM, Philipp von Weitershausen wrote:
David Glick wrote:
On Jun 18, 2008, at 1:44 PM, Malthe Borch wrote:
Martijn Faassen wrote:
There's one major problem that I see. What's the backwards
compatibility story? I'm sure there are a lot of cases in lots of
code where people look up views with a getMultiAdapter, and if we
started registering views differently, wouldn't that code break?
How to we get from A to B?
It deserves consideration, but I don't think code will be prone to
break since we're merely providing more information to lookup a
view component, not less.
Exactly. The interface passed to getMultiAdapter or
queryMultiAdapter is a minimum requirement. Making views provide
IView won't stop them from providing Interface, which is the default.
Well, true, view *lookup* for Interface will still work if we
register views for a more specific interface. But if Zope's browser
publication now starts looking up views with the more specific
interface and there are still views around that haven't been
registered for that but for Interface, we'll run into backward
compatibility problems.
I suppose the browser publication would have to be smart about it
and do a legacy lookup for Interface if it can't find a view for the
specific one.
Either way, it's not *that* simple...
I suggest:
- decide on and advertise the new interface
- continue to do look ups the way we do now
- update relevant zcml directives (view, page, resource. etc.) to use
the new interface
- issue informative deprecation warnings when we register adapters
providing Interface.
- Later, switch to looking up using the new interface. Maybe make
this an application option so that people can choose to use the new
interface sooner.
Jim
--
Jim Fulton
Zope Corporation
_______________________________________________
Zope-Dev maillist - [email protected]
http://mail.zope.org/mailman/listinfo/zope-dev
** No cross posts or HTML encoding! **
(Related lists -
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )