OpenLayers.Format.WPSExecute fails with WFS references, p=ahocevar,me r=ahocevar (closes #3448)
This commit is contained in:
@@ -297,7 +297,7 @@ OpenLayers.Format.Filter.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
"Filter": function(filter) {
|
"Filter": function(filter) {
|
||||||
var node = this.createElementNSPlus("ogc:Filter");
|
var node = this.createElementNSPlus("ogc:Filter");
|
||||||
if (filter.type === "FID") {
|
if (filter.type === "FID") {
|
||||||
this.writeFeatureIdNodes(filter, node);
|
OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this, filter, node);
|
||||||
} else {
|
} else {
|
||||||
this.writeNode(this.getFilterType(filter), filter, node);
|
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) {
|
for (var i=0, ii=filter.filters.length; i<ii; ++i) {
|
||||||
childFilter = filter.filters[i];
|
childFilter = filter.filters[i];
|
||||||
if (childFilter.type === "FID") {
|
if (childFilter.type === "FID") {
|
||||||
this.writeFeatureIdNodes(childFilter, node);
|
OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this, childFilter, node);
|
||||||
} else {
|
} else {
|
||||||
this.writeNode(
|
this.writeNode(
|
||||||
this.getFilterType(childFilter), childFilter, node
|
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) {
|
for (var i=0, ii=filter.filters.length; i<ii; ++i) {
|
||||||
childFilter = filter.filters[i];
|
childFilter = filter.filters[i];
|
||||||
if (childFilter.type === "FID") {
|
if (childFilter.type === "FID") {
|
||||||
this.writeFeatureIdNodes(childFilter, node);
|
OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this, childFilter, node);
|
||||||
} else {
|
} else {
|
||||||
this.writeNode(
|
this.writeNode(
|
||||||
this.getFilterType(childFilter), childFilter, node
|
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 node = this.createElementNSPlus("ogc:Not");
|
||||||
var childFilter = filter.filters[0];
|
var childFilter = filter.filters[0];
|
||||||
if (childFilter.type === "FID") {
|
if (childFilter.type === "FID") {
|
||||||
this.writeFeatureIdNodes(childFilter, node);
|
OpenLayers.Format.Filter.v1.prototype.writeFeatureIdNodes.call(this, childFilter, node);
|
||||||
} else {
|
} else {
|
||||||
this.writeNode(
|
this.writeNode(
|
||||||
this.getFilterType(childFilter), childFilter, node
|
this.getFilterType(childFilter), childFilter, node
|
||||||
|
|||||||
@@ -429,7 +429,7 @@ OpenLayers.Format.WFST.v1 = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
setFilterProperty: function(filter) {
|
setFilterProperty: function(filter) {
|
||||||
if(filter.filters) {
|
if(filter.filters) {
|
||||||
for(var i=0, len=filter.filters.length; i<len; ++i) {
|
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 {
|
} else {
|
||||||
if(filter instanceof OpenLayers.Filter.Spatial && !filter.property) {
|
if(filter instanceof OpenLayers.Filter.Spatial && !filter.property) {
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ OpenLayers.Format.WFST.v1_1_0 = OpenLayers.Class(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(options.filter) {
|
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);
|
this.writeNode("ogc:Filter", options.filter, node);
|
||||||
}
|
}
|
||||||
return node;
|
return node;
|
||||||
|
|||||||
@@ -242,6 +242,7 @@ OpenLayers.Format.WPSExecute = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
},
|
},
|
||||||
"wcs": OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,
|
"wcs": OpenLayers.Format.WCSGetCoverage.prototype.writers.wcs,
|
||||||
"wfs": OpenLayers.Format.WFST.v1_1_0.prototype.writers.wfs,
|
"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
|
"ows": OpenLayers.Format.OWSCommon.v1_1_0.prototype.writers.ows
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -458,6 +458,65 @@
|
|||||||
t.xml_eq(result, expected, "WPS Execute written out correctly");
|
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>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
Reference in New Issue
Block a user