diff --git a/src/ol/parser/ogc/filter_v1.js b/src/ol/parser/ogc/filter_v1.js
index 43c13a82e4..a030b9bf78 100644
--- a/src/ol/parser/ogc/filter_v1.js
+++ b/src/ol/parser/ogc/filter_v1.js
@@ -12,8 +12,6 @@ goog.require('ol.expr.Identifier');
goog.require('ol.expr.Literal');
goog.require('ol.expr.Logical');
goog.require('ol.expr.LogicalOp');
-goog.require('ol.expr.Math');
-goog.require('ol.expr.MathOp');
goog.require('ol.expr.Not');
goog.require('ol.expr.functions');
goog.require('ol.parser.XML');
@@ -64,13 +62,9 @@ ol.parser.ogc.Filter_v1 = function() {
if (num === 1) {
expr = expressions[0];
} else {
- expr = new ol.expr.Literal('');
- if (num > 1) {
- var add = ol.expr.MathOp.ADD;
- for (var i = 0; i < num; ++i) {
- expr = new ol.expr.Math(add, expr, expressions[i]);
- }
- }
+ expr = new ol.expr.Call(
+ new ol.expr.Identifier(ol.expr.functions.CONCAT),
+ expressions);
}
return expr;
},
diff --git a/test/spec/ol/parser/ogc/filter_v1_0_0.test.js b/test/spec/ol/parser/ogc/filter_v1_0_0.test.js
index 941bc62bb6..c38c5de22e 100644
--- a/test/spec/ol/parser/ogc/filter_v1_0_0.test.js
+++ b/test/spec/ol/parser/ogc/filter_v1_0_0.test.js
@@ -235,6 +235,8 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
});
describe('_expression reader', function() {
+ var evaluate = ol.expr.evaluateFeature;
+
it('handles combined propertyname and text', function() {
var xml = '10';
@@ -247,7 +249,7 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
xml = '' +
'fooxbar';
expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
- expect(expr.evaluate({x: 4})).to.eql('foo4bar');
+ expect(evaluate(expr, new ol.Feature({x: 4}))).to.eql('foo4bar');
});
it('handles combined propertyname and literal', function() {
@@ -258,7 +260,7 @@ describe('ol.parser.ogc.Filter_v1_0_0', function() {
'x' +
'foo';
var expr = reader.call(parser, goog.dom.xml.loadXml(xml).documentElement);
- expect(expr.evaluate({x: 42})).to.eql('bar42foo');
+ expect(evaluate(expr, new ol.Feature({x: 42}))).to.eql('bar42foo');
});
});