[OpenLayers-Commits] r4227 - in trunk/openlayers: lib/OpenLayers/Tile tests/Tile

commits at openlayers.org commits at openlayers.org
Tue Sep 11 22:37:10 EDT 2007


Author: euzuro
Date: 2007-09-11 22:37:09 -0400 (Tue, 11 Sep 2007)
New Revision: 4227

Modified:
   trunk/openlayers/lib/OpenLayers/Tile/WFS.js
   trunk/openlayers/tests/Tile/test_WFS.html
Log:
Temporary fix for WFS race condition where a tile is destroy()ed but an associated httprequest has not yet returned. Great report, Pierre G. (Closes #820)

Modified: trunk/openlayers/lib/OpenLayers/Tile/WFS.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Tile/WFS.js	2007-09-12 02:18:33 UTC (rev 4226)
+++ trunk/openlayers/lib/OpenLayers/Tile/WFS.js	2007-09-12 02:37:09 UTC (rev 4227)
@@ -103,18 +103,24 @@
     * request - {XMLHttpRequest}
     */
     requestSuccess:function(request) {
-        var doc = request.responseXML;
-        
-        if (!doc || request.fileType!="XML") {
-            doc = OpenLayers.parseXMLString(request.responseText);
+        if (this.features) {
+            var doc = request.responseXML;
+            
+            if (!doc || request.fileType!="XML") {
+                doc = OpenLayers.parseXMLString(request.responseText);
+            }
+            if (this.layer.vectorMode) {
+                var gml = new OpenLayers.Format.GML({
+                    'extractAttributes': this.layer.options.extractAttributes
+                });
+                this.layer.addFeatures(gml.read(doc));
+            } else {
+                var resultFeatures = OpenLayers.Ajax.getElementsByTagNameNS(
+                    doc, "http://www.opengis.net/gml", "gml", "featureMember"
+                );
+                this.addResults(resultFeatures);
+            }
         }
-        if (this.layer.vectorMode) {
-            var gml = new OpenLayers.Format.GML({extractAttributes: this.layer.options.extractAttributes});
-            this.layer.addFeatures(gml.read(doc));
-        } else {
-            var resultFeatures = OpenLayers.Ajax.getElementsByTagNameNS(doc, "http://www.opengis.net/gml","gml", "featureMember");
-            this.addResults(resultFeatures);
-        }
     },
 
     /**

Modified: trunk/openlayers/tests/Tile/test_WFS.html
===================================================================
--- trunk/openlayers/tests/Tile/test_WFS.html	2007-09-12 02:18:33 UTC (rev 4226)
+++ trunk/openlayers/tests/Tile/test_WFS.html	2007-09-12 02:37:09 UTC (rev 4227)
@@ -26,6 +26,21 @@
         t.ok( tile.events != null, "tile's events intitialized");
     }
 
+    function test_Tile_WFS_requestSuccess(t) {
+        t.plan(1);
+        var layer = {}; // bogus layer
+        var position = new OpenLayers.Pixel(10,20);
+        var bounds = new OpenLayers.Bounds(1,2,3,4);
+        var url = "bobob";
+        var size = new OpenLayers.Size(5,6);
+        
+        tile = new OpenLayers.Tile.WFS(layer, position, bounds, url, size);
+        tile.destroy();
+        tile.requestSuccess({'requestText': '<xml><foo /></xml>'});
+        t.ok(true, "Didn't fail after calling requestSuccess on destroyed tile.");
+        
+    }
+    
     function test_99_Tile_WFS_destroy(t) {
         t.plan( 6 );
 



More information about the Commits mailing list