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)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@4227 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
+17
-11
@@ -103,17 +103,23 @@ OpenLayers.Tile.WFS = OpenLayers.Class(OpenLayers.Tile, {
|
|||||||
* request - {XMLHttpRequest}
|
* request - {XMLHttpRequest}
|
||||||
*/
|
*/
|
||||||
requestSuccess:function(request) {
|
requestSuccess:function(request) {
|
||||||
var doc = request.responseXML;
|
if (this.features) {
|
||||||
|
var doc = request.responseXML;
|
||||||
if (!doc || request.fileType!="XML") {
|
|
||||||
doc = OpenLayers.parseXMLString(request.responseText);
|
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});
|
if (this.layer.vectorMode) {
|
||||||
this.layer.addFeatures(gml.read(doc));
|
var gml = new OpenLayers.Format.GML({
|
||||||
} else {
|
'extractAttributes': this.layer.options.extractAttributes
|
||||||
var resultFeatures = OpenLayers.Ajax.getElementsByTagNameNS(doc, "http://www.opengis.net/gml","gml", "featureMember");
|
});
|
||||||
this.addResults(resultFeatures);
|
this.layer.addFeatures(gml.read(doc));
|
||||||
|
} else {
|
||||||
|
var resultFeatures = OpenLayers.Ajax.getElementsByTagNameNS(
|
||||||
|
doc, "http://www.opengis.net/gml", "gml", "featureMember"
|
||||||
|
);
|
||||||
|
this.addResults(resultFeatures);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,21 @@
|
|||||||
t.ok( tile.events != null, "tile's events intitialized");
|
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) {
|
function test_99_Tile_WFS_destroy(t) {
|
||||||
t.plan( 6 );
|
t.plan( 6 );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user