MapGuide RFC 105 - Enhance feature service GetCapabilities API
This page contains a change request (RFC) for the MapGuide Open Source project. More MapGuide RFCs can be found on the RFCs page.
Status
RFC Template Version | (1.0) |
Submission Date | July 20, 2010 |
Last Modified | Bruce Dechant July 27, 2010 |
Author | Bruce Dechant |
RFC Status | adopted |
Implementation Status | implemented |
Proposed Milestone | 2.3 |
Assigned PSC guide(s) | Bruce Dechant |
Voting History | |
+1 | Bob, Bruce, Haris, Jackie, Jason, Paul, Tom, Trevor, Zac |
+0 | |
-0 | |
-1 | |
Abstained |
Overview
This RFC proposes to add a NEW GetCapabilites() API to the feature service which contains an additional connection string parameter. This new method should only be used to get connection-based capabilities on WFS and WMS providers until FDO specifies how connection-based connections should behave; use on any other providers may cause compatibility problems in the future.
Motivation
The existing Feature service GetCapabilties() API works correctly for most providers, but fails to return the true capabilities of the server connected to by a WFS/WMS provider because there is no way to specify the connection string containing the server.
Here is a subset of the WFS capabilities showing the differences.
WFS provider returned capabilites (existing API):
<Filter> <SupportsGeodesicDistance>false</SupportsGeodesicDistance> <SupportsNonLiteralGeometricOperations>true</SupportsNonLiteralGeometricOperations> </Filter>
WFS provider returned capabilites (NEW API with server specified in connection string):
<Filter> <Condition> <Type>Comparison</Type> <Type>Like</Type> <Type>Spatial</Type> </Condition> <Spatial> <Operation>EnvelopeIntersects</Operation> <Operation>Intersects</Operation> </Spatial> <SupportsGeodesicDistance>false</SupportsGeodesicDistance> <SupportsNonLiteralGeometricOperations>true</SupportsNonLiteralGeometricOperations> </Filter>
Proposed Solution
Create a NEW GetCapabilities() API that takes an additional connection string parameter.
Existing API: (This will not change)
MgByteReader* GetCapabilities(CREFSTRING providerName);
Proposed NEW API:
MgByteReader* GetCapabilities(CREFSTRING providerName, CREFSTRING connectionString);
Note: This NEW API will behave exactly the same as the old API if it is given an empty string as the connection string parameter.
Implications
This change will NOT break existing API compatibility.
Test Plan
Build/Run on Windows/Linux.
Funding/Resources
Supplied by Autodesk.