Details
Description
In complex features, namespaces are used for the property names, eg:
wfs?request=GetFeature&typeName=gsml:MappedFeature&propertyName=gsml:shape&bbox=132,-27,133,-26
This fails, because in FilterFactoryImpl, it resets the property name and loses the namespace information.
I removed line 311 in this method, since it did the damage, and it's redundant.
public BBOX bbox(Expression e, double minx, double miny, double maxx, double maxy, String srs) {
PropertyName name = null;
if ( e instanceof PropertyName )
else
{ throw new IllegalArgumentException(); } BBoxExpression bbox = null;
try
catch (IllegalFilterException ife)
BBOXImpl box = new BBOXImpl(this,e,bbox);
>>> removed >>> box.setPropertyName( name.getPropertyName() );
By passing name.getPropertyName() as String, it loses the namespace hints from the PropertyName name.
It also doesn't make sense to set property name (expression1) again because it's already passed in through BBoxImpl constructor as e. If you look higher, name = e.
My test in gt-app-schema now passes (not yet committed obviously).
Just add @test in testBBoxWithPropertyName() to activate it.
This fix is essential to allow bbox queries for features with >1 geometries.