[Laszlo-dev] For Review: Change 20071105-ptw-V Summary: Ensure deferred events do not recurse

P T Withington ptw at pobox.com
Fri Nov 30 09:41:58 PST 2007


I updated the change to correctly handle your new test case.  Would  
you like to re-review it (http://svn.openlaszlo.org/openlaszlo/patches/20071105-ptw-V.tar 
)

I 'improved' your test case just a bit to make more sense to me:

<canvas debug="true" >
   <class name="foo" extends="node" >
     <attribute name="bar" value="123" setter="setBar(bar)" />
     <method name="setBar" args="bar" >
       this.bar = bar;
       if (this["onbar"]) {
         this.onbar.sendEvent(bar);
       }
     </method>
     <method name="provokeError" >
       this.setBar("789");
     </method>
     <method name="provokeError2" >
       this.setBar("xxx");
     </method>
   </class>
   <foo bar="456" >
     <handler name="onbar" args="bar">
       Debug.write("onbar - 1 - begin with %s", bar);
       this.provokeError();
       Debug.write("onbar - 1 - end with %s", this.bar);
     </handler>
     <handler name="onbar" args="bar">
       Debug.write("onbar - 2 - begin with %s", bar);
       this.provokeError2();
       Debug.write("onbar - 2 - end with %s", this.bar);
     </handler>
     <!-- later -->
     <handler name="oninit" reference="canvas" >
       Debug.write("-----");
       this.setBar("abc");
     </handler>
   </foo>
</canvas>

On 2007-11-06, at 19:28 EST, André Bargull wrote:

> Approved.
>
> I've got another testcase which shows a different event-handling  
> (comparing queued and non-queued delegates),
> even after applying this fix, but I don't know whether it is a bit  
> too much constructed:
>
> <canvas debug="true" >
> <class name="foo" extends="node" >
>   <attribute name="bar" value="123" setter="setBar(bar)" />
>     <method name="setBar" args="bar" >
>     this.bar = bar;
>     if (this["onbar"]) {
>       this.onbar.sendEvent(bar);
>     }
>   </method>
>     <method name="provokeError" >
>     this.setBar("789");
>   </method>
>     <method name="provokeError2" >
>     this.setBar("xxx");
>   </method>
> </class>
> <foo bar="456" >
>   <handler name="onbar" args="bar">
>     Debug.write("onbar - 1 - begin with %s", bar);
>     this.provokeError();
>     Debug.write("onbar - 1 - end with %s", bar);
>   </handler>
>     <handler name="onbar" args="bar">
>     Debug.write("onbar - 2 - begin with %s", bar);
>     this.provokeError2();
>     Debug.write("onbar - 2 - end with %s", bar);
>   </handler>
>     <!-- later -->
>   <handler name="oninit" reference="canvas" >
>     Debug.write("-----");
>     this.setBar("abc");
>   </handler>
> </foo>
> </canvas>
>
> On 11/7/2007 12:23 AM, P T Withington wrote:
>> Change 20071105-ptw-V by ptw at dueling-banjos.local on 2007-11-05  
>> 15:10:35 EST
>>   in /Users/ptw/OpenLaszlo/ringding-2
>>   for http://svn.openlaszlo.org/openlaszlo/trunk
>>
>> Summary: Ensure deferred events do not recurse
>>
>> Bugs Fixed:
>> LPP-4950 'LzDelegate single-execution mechanism does not work for  
>> queued delegates'
>>
>> Technical Reviewer: hminksy (pending)
>> QA Reviewer: a.bargull at intensis.de (pending)
>>
>> Tests:
>>   Test case from bug no longer shows the event recursing.
>>
>> Files:
>> M      WEB-INF/lps/lfc/events/LaszloEvents.lzs
>>
>>
>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071105-ptw-V.tar
>>




More information about the Laszlo-dev mailing list