Ticket #480 (closed defect: fixed)
Fdo WFS doesn't recognize class whose name contains "."
| Reported by: | CXYS | Owned by: | gregboone |
|---|---|---|---|
| Priority: | major | Milestone: | 3.5.0 |
| Component: | WFS Provider | Version: | 3.4.0 |
| Severity: | 2 | Keywords: | |
| Cc: | External ID: | 1200560.01 |
Description
Defect:
Connect to the following WFS server. < http://giswebservices.massgis.state.ma.us/geoserver/wfs> List all the feature classes and get only "TOWNS_POLYM"; however the server actually has quite a large number of feature classes.
Cause: The missing feature classes are caused by the "." in the class name. The class names in the wfs server all contain "." except "TOWNS_POLYM". Take one class "GISDATA.BUGS96_POLY" for example, after FdoFeatureSchemaCollection? read the xml requested from wfs server, the class name is transferred to "GISDATA-dot-BUGS96_POLY" -- please note, the "." is renamed as "-dot-" in FdoFeatureSchemaCollection?. However in another aspect FdoWfsFeatureTypeList? also parse the xml and build up a FdoWfsFeatureTypeCollection?. (FdoWfsFeatureTypeList?.cpp line 72:)
FdoPtr?<FdoWfsFeatureType?> featureType = FdoWfsFeatureType::Create();
featureType->InitFromXml?(context, atts); m_featureTypes->Add(featureType);
It doesn't do the translation of ".".
These difference cause the problem during DescribeSchema? command execute, which calls FdoWfsConnection::GetSchemas?() actually. FdoWfsConnection?.cpp line 600:
FdoPtr?<FdoWfsFeatureType?> pFeat = pFeatColl->FindItem?(classDef->GetName?());
As you can see, it tries to search in FdoWfsFeatureTypeCollection? by class name. But the class name is "GISDATA-dot-BUGS96_POLY" and the name recorded in feature type is "GISDATA.BUGS96_POLY", of course nothing can be found. Thus the class is treated as "abstract" by mistake.

