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 Fulton
Zope Corporation

Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )

Reply via email to