[Zope-Checkins] CVS: Zope2 - Acquisition.c:1.37
Jim Fulton
jim@digicool.com
Tue, 14 Mar 2000 12:59:08 -0500
Update of /cvs-repository/Zope2/lib/Components/ExtensionClass
In directory korak.digicool.com:/tmp/cvs-serv4562
Modified Files:
Acquisition.c
Log Message:
Hold on to your butts. ;)
Major restructuring to fix a number of bugs:
- Methods (retrieved as attributes) were sometimes not
bound to objects in the right context. This could cause
acquisition to fail within the methods.
- An optimization skipped calling the __of__ method, assuming that
it was skipping the standard acquistion __of__ method. This could
cause application __of__ methods to get skipped. Now the __of__
method is never skipped. The return value is inspected to
see if it can be simplified. In the future we might be willing
to skip calling __of__ if we *know* that we are skipping a known
__of__.
- The special value, Acquired, used to force acquisition
was not handled correctly when it was acquired from a container.
- Some error handling was not done quite correctly. I don't know
if this caused any problems.
- Nested explicit acquisition wrappers may not have been handled
correctly when accessed through attribute access of a containing
implicit wrapper.
Reduced code by sending all searches through the same routine,
Wrapper_findattr.
Added two new features:
- You can now assign the aq_parent attribute of a wrapper.
This is deemed to be useful in certain applications, including
XML/DOM.
- The method aq_acquire hysterically has two usages:
o To explicitly acquire from an Explicit acquirer wrapper.
o To apply a filter to guide the search process (e.g. for security).
Sometimes, someone might want to apply a filter without forcing
explict acquisition. An additional optional argument was added
to allow use of a filter without forcing explicit acquisition.