[Laszlo-dev] For Review: Change 20070806-maxcarlson-x Summary: Remove setter for LzNode.data
Max Carlson
max at openlaszlo.org
Mon Aug 6 20:05:28 PDT 2007
P T Withington wrote:
> On 2007-08-06, at 21:36 EDT, Max Carlson wrote:
>
>> From my email on Friday:
>> > Per the call this afternoon (and as signed off by David) we will add a
>> > new method to LzNode called setData().
>> >
>> > LzNode.setData(dataelement) is called by the replicator immediately
>> > after the .data property is set and ondata is sent, but before
>> > applyData() is called on the node being replicated. By default,
>> > setData() creates a new datapath for the replicated view (if one
>> doesn't
>> > already exist) and it always sets the view datapath to the new
>> > dataelement passed in.
>> >
>> > This approach allows replicated views to use $path expressions and
>> > support datapath bindings out of the box. setData() can still be
>> > overridden on an instance or subclass of node to do something more
>> > efficient (like read the data directly and set attributes).
>>
>> I didn't expect a setter to be added. I thought we'd just add the
>> setData() method to LzNode and follow the contract above. The change
>> I made to replicator now does this.
>
> Surely you can understand my confusion. Elsewhere in the system, when
> we define setFoo and foo, it is standard for setters.foo to be
> 'setFoo'. In fact, I now find it utterly confusing that we have a
> setData method that is not the setter for the data attribute.
I do. Perhaps we should name setData to setReplicatorData or something
more descriptive.
>> After looking closer at what LzDatapath does now, maybe setData()
>> should be emulating the behavior of LzDatapath.__LZApplyData(). Do
>> you think some or all of LzDatapath.__LZApplyData() should be hoisted
>> up to LzNode (instead of applyData)?
>
> I'm not sure I follow. __LZApplyData is how a datapath applies its data
> to the node that encloses it. What would it mean for one node to apply
> its data to its parent node? When would this happen?
It seems like LzNode.setData() and LzDatapath__LZApplyData() do many of
the same things. Perhaps some of this functionality could be moved to
LzNode and shared.
--
Regards,
Max Carlson
OpenLaszlo.org
More information about the Laszlo-dev
mailing list