So 'datasets' is a declared instance var of the LzCanvas class, so
that is probably why 'in' is not
the way to test for it. I should probably just initialize it to an
empty hash table, {}, and remove that
null check.
On Tue, Jul 15, 2008 at 11:12 PM, Henry Minsky
<[EMAIL PROTECTED]> wrote:
> OK, if I change this code in LzDataset.setName, then it works
>
>
> - if (!('datasets' in canvas) || null == canvas.datasets ) {
> + if (!(canvas['datasets']) || null == canvas.datasets ) {
> canvas.datasets = {};
> }
>
>
> so "in" is not behaving the same in swf8 and swf9
>
> On Tue, Jul 15, 2008 at 11:04 PM, Henry Minsky
> <[EMAIL PROTECTED]> wrote:
>> I created a bug for this
>>
>> http://www.openlaszlo.org/jira/browse/LPP-6668
>>
>>
>> What is really weird is that I put some tracing in, and the bug is
>> happening on the failing datapointer
>> because when it sets is xpath to "ds1:/persons", the name
>> canvas.datasets['ds1'] is unbound,
>> (but canvas['ds1'] is bound!). How can that be? Why is the other
>> dataset, ds2, behaving properly?
>> Who is responsible for setting canvas.datasets[DSETNAME] ? Why would
>> it be getting set
>> in one case but not the other?
>>
>>
>>
>> On Tue, Jul 15, 2008 at 8:44 PM, Henry Minsky <[EMAIL PROTECTED]> wrote:
>>> I've isolated the issue with multiple tests failing down to this test
>>> case. There are two
>>> datasets and a datapointer for each one. In the "good" case, the order
>>> in the app is
>>> dataset, datapointer, dataset, datapointer.
>>>
>>> Both datapointers' ondata events fire.
>>>
>>>
>>> GOOD:
>>>
>>> <canvas width="100%" height="600" debug="true">
>>> <dataset name="ds1"
>>> src="http:namespace.xml" request="true" type="http"
>>> ondata="Debug.write('[1] dataset ds1 got ondata')"/>
>>> <datapointer xpath="ds1:/persons" name="pointer_ds1"
>>> ondata="Debug.write('pointer_ds1 ondata received')"/>
>>>
>>> <dataset name="ds2"
>>> src="http:namespace.xml" request="true" type="http"
>>> ondata="Debug.write('[2] dataset ds2 got ondata')"/>
>>>
>>> <datapointer xpath="ds2:/persons" name="pointer_ds2"
>>> ondata="Debug.write('pointer_ds2 ondata received')"/>
>>> </canvas>
>>>
>>>
>>> However, if the two datasets come first, and then the two datapointes,
>>> the first datapointer never seems
>>> to run its ondata handler. So what would the order of these objects
>>> have to do with it? argh. The debug trace
>>> shows that both datasets fire their ondata events. So is there some
>>> sort of race condition where the
>>> datapointer misses it's event? How do I tell? I guess putting a trace
>>> onto the event sender code, to see
>>> if the datapointer is actually registered for the event or not when it is
>>> sent.
>>>
>>> This bug does not occur in swf8 or dhtml
>>>
>>>
>>>
>>> BAD:
>>> <canvas width="100%" height="600" debug="true">
>>>
>>> <dataset name="ds1"
>>> src="http:namespace.xml" request="true" type="http"
>>> ondata="Debug.write('[1] dataset ds1 got ondata')"/>
>>> <dataset name="ds2"
>>> src="http:namespace.xml" request="true" type="http"
>>> ondata="Debug.write('[2] dataset ds2 got ondata')"/>
>>>
>>> <datapointer xpath="ds1:/persons" name="pointer_ds1"
>>> ondata="Debug.write('pointer_ds1 ondata received')"/>
>>> <datapointer xpath="ds2:/persons" name="pointer_ds2"
>>> ondata="Debug.write('pointer_ds2 ondata received')"/>
>>> </canvas>
>>>
>>>
>>> --
>>> Henry Minsky
>>> Software Architect
>>> [EMAIL PROTECTED]
>>>
>>
>>
>>
>> --
>> Henry Minsky
>> Software Architect
>> [EMAIL PROTECTED]
>>
>
>
>
> --
> Henry Minsky
> Software Architect
> [EMAIL PROTECTED]
>
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]