OpenLayers.Format.WPSExecute fails with WFS references, p=ahocevar,me r=ahocevar (closes #3448)

This commit is contained in:
Bart van den Eijnden
2011-10-21 13:52:50 +02:00
parent 7ad7e4d57c
commit 155108f10b
5 changed files with 66 additions and 6 deletions

View File

@@ -297,7 +297,7 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
"Filter": function(filter) {
var node = this.createElementNSPlus("ogc:Filter");
if (filter.type === "FID") {
this.writeFeatureIdNodes(filter, node);
OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this, filter, node);
} else {
this.writeNode(this.getFilterType(filter), filter, node);
}
@@ -314,7 +314,7 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
for (var i=0, ii=filter.filters.length; i<ii; ++i) {
childFilter = filter.filters[i];
if (childFilter.type === "FID") {
this.writeFeatureIdNodes(childFilter, node);
OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this, childFilter, node);
} else {
this.writeNode(
this.getFilterType(childFilter), childFilter, node
@@ -329,7 +329,7 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
for (var i=0, ii=filter.filters.length; i<ii; ++i) {
childFilter = filter.filters[i];
if (childFilter.type === "FID") {
this.writeFeatureIdNodes(childFilter, node);
OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this, childFilter, node);
} else {
this.writeNode(
this.getFilterType(childFilter), childFilter, node
@@ -342,7 +342,7 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
var node = this.createElementNSPlus("ogc:Not");
var childFilter = filter.filters[0];
if (childFilter.type === "FID") {
this.writeFeatureIdNodes(childFilter, node);
OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this, childFilter, node);
} else {
this.writeNode(
this.getFilterType(childFilter), childFilter, node

View File

@@ -429,7 +429,7 @@ OpenLayers.Format.WFST.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
setFilterProperty: function(filter) {
if(filter.filters) {
for(var i=0, len=filter.filters.length; i<len; ++i) {
this.setFilterProperty(filter.filters[i]);
OpenLayers.Format.WFST.v1.prototype.setFilterProperty.call(this, filter.filters[i]);
}
} else {
if(filter instanceof OpenLayers.Filter.Spatial && !filter.property) {

View File

@@ -169,7 +169,7 @@ OpenLayers.Format.WFST.v1_1_0 = OpenLayers.Class(
}
}
if(options.filter) {
this.setFilterProperty(options.filter);
OpenLayers.Format.WFST.v1_1_0.prototype.setFilterProperty.call(this, options.filter);
this.writeNode("ogc:Filter", options.filter, node);
}
return node;

View File

@@ -242,6 +242,7 @@ OpenLayers.Format.WPSExecute = OpenLayers.Class(OpenLayers.Format.XML, {
},
"wcs": OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,
"wfs": OpenLayers.Format.WFST.v1_1_0.prototype.writers.wfs,
"ogc": OpenLayers.Format.Filter.v1_1_0.prototype.writers.ogc,
"ows": OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows
},

View File

@@ -458,6 +458,65 @@
t.xml_eq(result, expected, "WPS Execute written out correctly");
}
function test_write_WPSExecuteFID(t) {
t.plan(1);
var result,
expected,
format = ({geometryName: 'the_geom'});
expected = '<?xml version="1.0" encoding="UTF-8"?>' +
'<wps:Execute xmlns:wps="http://www.opengis.net/wps/1.0.0" version="1.0.0" service="WPS" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' +
' <ows:Identifier xmlns:ows="http://www.opengis.net/ows/1.1">gs:Bounds</ows:Identifier>' +
' <wps:DataInputs>' +
' <wps:Input>' +
' <ows:Identifier xmlns:ows="http://www.opengis.net/ows/1.1">features</ows:Identifier>' +
' <wps:Reference mimeType="text/xml" xlink:href="http://geoserver/wfs" xmlns:xlink="http://www.w3.org/1999/xlink" method="POST">' +
' <wps:Body>' +
' <wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.0.0">' +
' <wfs:Query typeName="foo:bar">' +
' <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">' +
' <ogc:FeatureId fid="123"/>' +
' </ogc:Filter>' +
' </wfs:Query>' +
' </wfs:GetFeature>' +
' </wps:Body>' +
' </wps:Reference>' +
' </wps:Input>' +
' </wps:DataInputs>' +
' <wps:ResponseForm>' +
' <wps:RawDataOutput>' +
' <ows:Identifier xmlns:ows="http://www.opengis.net/ows/1.1">bounds</ows:Identifier>' +
' </wps:RawDataOutput>' +
' </wps:ResponseForm>' +
'</wps:Execute>';
result = new OpenLayers.Format.WPSExecute().write({
identifier: 'gs:Bounds',
dataInputs: [{
identifier: 'features',
reference: {
mimeType: 'text/xml',
href: 'http://geoserver/wfs',
method: 'POST',
body: {
wfs: {
featureType: 'foo:bar',
version: '1.0.0',
filter: new OpenLayers.Filter.FeatureId({fids: [123]})
}
}
}
}],
responseForm: {
rawDataOutput: {
identifier: 'bounds'
}
}
});
t.xml_eq(result, expected, 'WPS Execute written out correctly with a FID filter');
}
</script>
</head>
<body>