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]

Reply via email to