At 08:18 PM 4/21/01 +0200, Christian Scholz wrote:
Hi!
Good evening everybody!
I have some question regarding attribute and agent programming for ZPatterns.
I have some provider which is registered for the "handlers" and "attributes" methods and some attributes.
My problem is when trying to create a new object and directly editing it, e.g.
obj=newItem() obj.propertysheets.data.manage_changeProperties(foobar=13)
the propertysheet is defined and my provider is also registered for handling the property "foobar". Unfortunately my SetAttributeFor() method is never called.
Have you defined a namesForRegistration method in your provider?
Yes, as said above it registers for handlers and attributes. Also _objectChanged and _SetAttributeFor() etc. are called. They're just not called directly after creating the object (when being in the same request that is).
_objectChanged() is a transaction-commit message. You'll only get it when the (sub)transaction commits. You'll receive _objectChanging() just *before* the object changes. As for _SetAttributeFor(), it should be called at the time manage_changeProperties executes, not at object creation. Are you sure that you have it properly named and that it isn't still being defined by one of your ancestor classes instead? The "AttributeProvider" and "GTMixin" base classes in ZPatterns implement _SetAttributeFor() by simply noting the change for later. If you don't override this behavior, your class won't see _SetAttributFor() itself.