I've been looking at this issue from the bottom up. In LzDatapath.__LZApplyData, if you force cdat to true, it will always send the ondata event and you should see some events start to pass. For some reason, this.data is always null so the events are never sent.

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
<mailto:[EMAIL PROTECTED]>[EMAIL PROTECTED]

Reply via email to