http://jira.openlaszlo.org/jira/browse/LPP-6670

I assigned to Phil, because I believe he wrote most of these `in` tests, on my advice (bleah).

On 2008-07-15, at 23:58EDT, Henry Minsky wrote:

We should look for other cases where the code is using "in" to detect
what has become a declared
instance variable of a class.


On Tue, Jul 15, 2008 at 11:16 PM, Henry Minsky
<[EMAIL PROTECTED]> wrote:
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]




--
Henry Minsky
Software Architect
[EMAIL PROTECTED]

Reply via email to