On membrane trunk I've implemented the previously discussed changes to
the object_implements index.

The object_implements index used to use the ZCA to find out not only
what interfaces an object provided, but what interfaces an object could
be adapted to out to the second order (adapting two objects).  Providing
this degree of magical awareness proved to be a large performance
problem.

As such, the object_implements index now uses special marker interfaces
(ending in "Avail" by convention) to designate what membrane interfaces
membrane content objects provide or can be adapted to.  IOW, the work of
determining what membrane capabilities a membrane content object can
provide is not shifted to the developer instead of the poorly performing
code.

When implementing a content object that directly provides a
IMembraneQueryableInterface interface, be sure that object also provides
the corresponding "I*Avail" marker interface.  When implementing an
adapter that provides an IMembraneQueryableInterface interface, be sure
that objects that can be adapted to the interface also provide the
corresponding "I*Avail" marker interface.

See the implements declaration of
Products.membrane.examples.simplemember.SimpleMember for an example.

If you can, I'd very much appreciate any testing against trunk before I
roll up a release.  This is a significant enough change that I'd like to
get some eyes on it before cutting a release just to make my life
easier.  :)

Ross



--
Archive: 
http://www.coactivate.org/projects/remember/lists/remember/archive/2009/06/1245745092436
To unsubscribe send an email with subject "unsubscribe" to 
[email protected].  Please contact 
[email protected] for questions.

Reply via email to