I have been testing some queries to a complex feature service using app-schema and am getting the following exception report for one query:
<ows:ExceptionReport version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/ows http://xxxx.geosciml.org/xxxxxxxx/schemas/ows/1.0.0/owsExceptionReport.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows">
<ows:Exception exceptionCode="NoApplicableCode">
<ows:ExceptionText>java.lang.ClassCastException: org.geotools.feature.NameImpl cannot be cast to org.opengis.feature.type.AttributeDescriptor
org.geotools.feature.NameImpl cannot be cast to org.opengis.feature.type.AttributeDescriptor</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>
Details as below:
Tested versions v2.3.1 and nightly build of 2013-05-09
The source data is in PostGIS with the tables created by the scripts in https://www.seegrid.csiro.au/subversion/GeoSciML/cgi-reference-dataset/tags/2013-05-15/data/database/cgi-reference-postgis.sql
The GeoServer app-schema configuration files are as in the data directory https://www.seegrid.csiro.au/subversion/GeoSciML/cgi-reference-dataset/tags/2013-05-15/services/geoserver/postgis/data
app-schema joining has been switched on.
The query which fails with the above exception is:
Query 1 (fails)
---
<?xml version="1.0" encoding="UTF-8"?>
<wfs:GetFeature xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"
xmlns:gsml="http://xmlns.geosciml.org/GeoSciML-Core/3.1"
xmlns:gsmlgu="http://xmlns.geosciml.org/GeologicUnit/3.1" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:gml="http://www.opengis.net/gml/3.2" service="WFS"
version="1.1.0"
maxFeatures="100"
outputFormat="gml32">
<wfs:Query typeName="gsml:MappedFeature">
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>gsml:specification/gsmlgu:GeologicUnit/gsml:relatedFeature/gsmlga:GeologicHistory/gsml:relatedFeature/gsmlga:GeologicEvent/gsmlga:olderNamedAge/@xlink:href</ogc:PropertyName>
<ogc:Literal>http://resource.geosciml.org/classifier/ics/ischart/Devonian</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>
---
A similar query but which queries some element rather than attribute content below works correctly to retrieve the matching features.
Query 2 (succeeds)
---
<?xml version="1.0" encoding="UTF-8"?>
<wfs:GetFeature xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"
xmlns:gsml="http://xmlns.geosciml.org/GeoSciML-Core/3.1"
xmlns:gsmlgu="http://xmlns.geosciml.org/GeologicUnit/3.1" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:gml="http://www.opengis.net/gml/3.2" service="WFS"
version="1.1.0"
maxFeatures="100"
outputFormat="gml32">
<wfs:Query typeName="gsml:MappedFeature">
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>gsml:specification/gsmlgu:GeologicUnit/gsml:relatedFeature/gsmlga:GeologicHistory/gsml:relatedFeature/gsmlga:GeologicEvent/gsmlga:eventEnvironment/swe:Category/swe:label</ogc:PropertyName>
<ogc:Literal>terrestrial setting</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>
---
Another query very similar to Query 1 that queries the contents of the same xlink:href attribute but queries on gsmlgu:GeologicUnit features rather than the parent gsml:MappedFeature features of Query 1 succeeds in retrieving the matching features:
Query 3 (succeeds)
---
<?xml version="1.0" encoding="UTF-8"?>
<wfs:GetFeature xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"
xmlns:gsmlgu="http://xmlns.geosciml.org/GeologicUnit/3.1" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:gml="http://www.opengis.net/gml/3.2" service="WFS"
version="1.1.0"
maxFeatures="100"
outputFormat="gml32">
<wfs:Query typeName="gsmlgu:GeologicUnit">
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>gsml:relatedFeature/gsmlga:GeologicHistory/gsml:relatedFeature/gsmlga:GeologicEvent/gsmlga:olderNamedAge/@xlink:href</ogc:PropertyName>
<ogc:Literal>http://resource.geosciml.org/classifier/ics/ischart/Devonian</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>
---
Any ideas? Should I report a bug?
Marcus Sen
This message (and any attachments) is for the recipient only. NERC is subject to the Freedom of Information Act 2000 and the contents of this email and any reply you make may be disclosed by NERC unless it is exempt from release under the Act. Any material supplied to NERC may be stored in an electronic records management system.