[mapguide-commits] r5131 - in trunk/MgDev: Server/src/Wfs Web/src/ApacheAgent Web/src/CgiAgent Web/src/HttpHandler Web/src/IsapiAgent Web/src/MapAgentCommon

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Tue Sep 14 05:45:29 EDT 2010


Author: liuar
Date: 2010-09-14 09:45:29 +0000 (Tue, 14 Sep 2010)
New Revision: 5131

Modified:
   trunk/MgDev/Server/src/Wfs/1.1.0.xml.awd
   trunk/MgDev/Web/src/ApacheAgent/ApacheResponseHandler.cpp
   trunk/MgDev/Web/src/CgiAgent/EchoTest.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpRequest.cpp
   trunk/MgDev/Web/src/HttpHandler/HttpRequestParam.cpp
   trunk/MgDev/Web/src/HttpHandler/OgcException.h
   trunk/MgDev/Web/src/HttpHandler/OgcServer.cpp
   trunk/MgDev/Web/src/HttpHandler/OgcWfsException.cpp
   trunk/MgDev/Web/src/HttpHandler/OgcWfsException.h
   trunk/MgDev/Web/src/HttpHandler/OgcWfsServer.cpp
   trunk/MgDev/Web/src/HttpHandler/OgcWmsException.h
   trunk/MgDev/Web/src/IsapiAgent/IsapiResponseHandler.cpp
   trunk/MgDev/Web/src/MapAgentCommon/MapAgentStrings.cpp
Log:
Ticket #1421 OGC WFS 1.1.0 support

'''Fixed OGC certification test failure.''' [[BR]]

1. Test wfs:wfs-1.1.0-Basic-GetCapabilities-tc11.1 (s0012/d1e34887_1/d1e732_1/d1e25171_1/d1e856_1)

Assertion: A response message containing an entity body must contain a Content-Type entity header field that correctly indicates the media type of the message body.

The OGC CITE test engine looks for a case-sensitive "Content-Type" in response header, but MapGuide generates "Content-type" in cgiAgent, isapiAgent and apacheAgent. So I updated the hard coded "Content-type" to "Content-Type".

2. Test wfs:wfs-1.1.0-Basic-GetCapabilities-tc9.2 (s0012/d1e34887_1/d1e732_1/d1e25171_1/d1e836_1)

Assertion: A valid http URL value shall conform to the syntax specified in RFC 2616. http_URL = 'http:' '//' host [ ':' port ] [ abs_path [ '?' query ]]

The OGC CITE test engine looks for a root element which is an ows:ExceptionReport document. The MapGuide WFS exception response template should be updated to

{{{
<!--

  Exception Format  - XML

-->
<Response request="Exception" content-type="text/xml">
<ows:ExceptionReport 
   version="&TemplateVersion;"
   xmlns:ows="http://www.opengis.net/ows"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd">
 <ows:Exception exceptionCode="&Exception.Type;" locator="&Exception.Locator;">
  <ows:ExceptionText>
   &Exception.message;
  </ows:ExceptionText>
 </ows:Exception>
</ows:ExceptionReport>
</Response>
}}}

3. Test wfs:wfs-1.1.0-Basic-GetCapabilities-tc16.1 (s0012/d1e34887_1/d1e732_1/d1e25171_1/d1e898_1)

Assertion: In the event that a GetCapabilities request cannot be processed for any reason, the response entity shall include an exception report. The exception code must be one of those listed in Table 5.

For request: http://xxx.xxx.xxx.xxx/mapguide/mapagent/mapagent.fcgi?&version=1.1.0&request=GetCapabilities, an !OperationNotSupported exception will be thrown from MapGuide, which should be a !MissingRequestParameter exception.

I also extended the OGCException by adding a new member m_pszLocator, since the optional ows:Locator attribute is required by the OGC test engine.

4. Test wfs:wfs-1.1.0-Basic-GetCapabilities-tc13.2 (s0012/d1e34887_1/d1e732_1/d1e25171_1/d1e872_1)

Assertion: A KVP-encoded GetCapabilities request shall include the following query parameters: service=WxS request=GetCapabilities, where WxS is a mnemonic label for a service type. See Table 2 for definitions of optional query parameters.

For request: http://xxx.xxx.xxx.xxx/mapguide/mapagent/mapagent.fcgi?&request=GetCapabilities&version=1.1.0, an OWS exception is expected by the OGC CITE test engine which is a WFS exception type. So, if SERVICE parameter is not specified, the default service will be WFS.

5. Test wfs:wfs-1.1.0-Basic-GetCapabilities-tc15.2 (s0012/d1e34887_1/d1e732_1/d1e25171_1/d1e892_1)

Assertion: Version negotiation using !AcceptVersions parameter (preference ordering): Return service metadata corresponding to the most preferred version that is supported. If none of the requested versions are supported, the server must generate an exception with code '!VersionNegotiationFailed'.

For request: http://xxx.xxx.xxx.xxx/mapguide/mapagent/mapagent.fcgi?&service=WFS&request=GetCapabilities&acceptversions=2006.10.25, an exception is expected by the OGC test engine but MapGuide doesn't check the acceptVersions parameter. I extended the !MgOgcWfsServer::ValidateRequest() to handle the unsupported versions case for WFS.

NOTE: acceptVersions is not supported in current MapGuide implementation.


Modified: trunk/MgDev/Server/src/Wfs/1.1.0.xml.awd
===================================================================
--- trunk/MgDev/Server/src/Wfs/1.1.0.xml.awd	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Server/src/Wfs/1.1.0.xml.awd	2010-09-14 09:45:29 UTC (rev 5131)
@@ -340,11 +340,17 @@
 
 -->
 <Response request="Exception" content-type="text/xml">
-<ServiceExceptionReport version="&TemplateVersion;">
- <ServiceException code="&Exception.Type;">
-  &Exception.message;
- </ServiceException>
-</ServiceExceptionReport>
+<ows:ExceptionReport 
+   version="&TemplateVersion;"
+   xmlns:ows="http://www.opengis.net/ows"
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd">
+ <ows:Exception exceptionCode="&Exception.Type;" locator="&Exception.Locator;">
+  <ows:ExceptionText>
+   &Exception.message;
+  </ows:ExceptionText>
+ </ows:Exception>
+</ows:ExceptionReport>
 </Response>
 
 </Template>

Modified: trunk/MgDev/Web/src/ApacheAgent/ApacheResponseHandler.cpp
===================================================================
--- trunk/MgDev/Web/src/ApacheAgent/ApacheResponseHandler.cpp	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/ApacheAgent/ApacheResponseHandler.cpp	2010-09-14 09:45:29 UTC (rev 5131)
@@ -64,7 +64,7 @@
             ap_rprintf(m_r, "\r\n"
                 "<html>\n<head>\n"
                 "<title>%s</title>\n"
-                "<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n"
+                "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"
                 "</head>\n"
                 "<body>\n<h2>%s</h2>\n%s\n</body>\n</html>\n",
                 MG_WCHAR_TO_CHAR(statusMessage),

Modified: trunk/MgDev/Web/src/CgiAgent/EchoTest.cpp
===================================================================
--- trunk/MgDev/Web/src/CgiAgent/EchoTest.cpp	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/CgiAgent/EchoTest.cpp	2010-09-14 09:45:29 UTC (rev 5131)
@@ -45,7 +45,7 @@
     char *contentLength = getenv("CONTENT_LENGTH");
     int len;
 
-    printf("Content-type: text/html\r\n"
+    printf("Content-Type: text/html\r\n"
         "\r\n"
         "<title>FastCGI echo</title>"
         "<h1>FastCGI echo</h1>\n"

Modified: trunk/MgDev/Web/src/HttpHandler/HttpRequest.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpRequest.cpp	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/HttpHandler/HttpRequest.cpp	2010-09-14 09:45:29 UTC (rev 5131)
@@ -218,11 +218,28 @@
             }
             else
             {
-                sParamValue = L"WMS";
+                sParamValue = L"WFS";
             }
             sParamValue.append(L".");
             sParamValue.append(sRequestValue);
         }
+        else
+        {
+            // Error handling for OGC certification.
+            // MapGuide should generate an WFS exception while receiveing following request:
+            // http://locahost/mapguide/mapagent/mapagent.fcgi??request~GetCapabilities!service~WFS!version~1.1.0
+            Ptr<MgStringCollection> parameterNames = m_requestParam->GetParameterNames();
+            for(int i = 0; i < parameterNames->GetCount(); i++)
+            {
+                STRING parameterName = parameterNames->GetItem(i);
+                if(parameterName.find(L"WFS") != STRING::npos)
+                {
+                    sParamValue = L"WFS";
+                    sParamValue.append(L".");
+                    sParamValue.append(L"GETCAPABILITIES");
+                }
+            }
+        }
     }
     if(sParamValue.length() > 0)
     {

Modified: trunk/MgDev/Web/src/HttpHandler/HttpRequestParam.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/HttpRequestParam.cpp	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/HttpHandler/HttpRequestParam.cpp	2010-09-14 09:45:29 UTC (rev 5131)
@@ -46,7 +46,9 @@
 /// </returns>
 bool MgHttpRequestParam::AddParameter(CREFSTRING name, CREFSTRING value)
 {
-    if (value.length()!=0 && !m_reqParamCollection->Contains(name))
+    // Empty string is valid parameter value.
+    //if (value.length()!=0 && !m_reqParamCollection->Contains(name))
+    if (!m_reqParamCollection->Contains(name))
     {
         m_reqParamCollection->Add(name, value);
         return true;

Modified: trunk/MgDev/Web/src/HttpHandler/OgcException.h
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/OgcException.h	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/HttpHandler/OgcException.h	2010-09-14 09:45:29 UTC (rev 5131)
@@ -24,10 +24,11 @@
 class MgOgcException
 {
 public:
-    MgOgcException(CPSZ pszElementName,CPSZ pszType,CPSZ pszMessage)
+    MgOgcException(CPSZ pszElementName,CPSZ pszType,CPSZ pszMessage,CPSZ pszLocator = _(""))
     : m_pszElementName(pszElementName)
     , m_pszType(pszType)
     , m_pszMessage(pszMessage)
+    , m_pszLocator(pszLocator)
     {
     }
 
@@ -37,13 +38,14 @@
     virtual CPSZ ElementName() const  { return m_pszElementName; }
     virtual CPSZ Type()        const  { return m_pszType;        }
     virtual CPSZ Message()     const  { return m_pszMessage;     }
-
+    virtual CPSZ Locator()     const  { return m_pszLocator;     }
     static CPSZ kpszInternalError;
 
 private:
     CPSZ m_pszElementName;
     CPSZ m_pszType;
     CPSZ m_pszMessage;
+    CPSZ m_pszLocator;
 };
 
 #endif//_MgOgcException_h

Modified: trunk/MgDev/Web/src/HttpHandler/OgcServer.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/OgcServer.cpp	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/HttpHandler/OgcServer.cpp	2010-09-14 09:45:29 UTC (rev 5131)
@@ -100,6 +100,7 @@
 CPSZ kpszDefinitionExceptionMessage  = _("Exception.Message");
 CPSZ kpszDefinitionExceptionElement  = _("Exception.Element");
 CPSZ kpszDefinitionExceptionContents = _("Exception.Contents");
+CPSZ kpszDefinitionExceptionLocator  = _("Exception.Locator");
 CPSZ kpszDefinitionEnumItem          = _("Enum.item");
 CPSZ kpszDefinitionEnumItemPrefix    = _("Enum.item.");
 CPSZ kpszDefinitionEnumIteration     = _("Enum.iteration");
@@ -442,6 +443,8 @@
     AddDefinition(kpszDefinitionExceptionType,Exception.Type());
     AddDefinition(kpszDefinitionExceptionMessage,Exception.Message());
     AddDefinition(kpszDefinitionExceptionElement,Exception.ElementName());
+    AddDefinition(kpszDefinitionExceptionLocator,Exception.Locator());
+
     CStringStream Out;
     Exception.WriteTo(Out);
     AddDefinition(kpszDefinitionExceptionContents,Out.Contents());

Modified: trunk/MgDev/Web/src/HttpHandler/OgcWfsException.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/OgcWfsException.cpp	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/HttpHandler/OgcWfsException.cpp	2010-09-14 09:45:29 UTC (rev 5131)
@@ -24,6 +24,7 @@
 CPSZ MgOgcWfsException::kpszUnknownParameterValue  = _("UnknownParameterValue");
 CPSZ MgOgcWfsException::kpszMissingRequestParameter  = _("MissingParameterValue");
 CPSZ MgOgcWfsException::kpszProcessingError  = _("RequestProcessingError");
+CPSZ MgOgcWfsException::kpszVersionNegotiationFailed = _("VersionNegotiationFailed");
 
 
 void MgOgcWfsException::WriteTo(CStream& Response) const

Modified: trunk/MgDev/Web/src/HttpHandler/OgcWfsException.h
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/OgcWfsException.h	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/HttpHandler/OgcWfsException.h	2010-09-14 09:45:29 UTC (rev 5131)
@@ -23,8 +23,8 @@
 class MgOgcWfsException: public MgOgcException
 {
 public:
-    MgOgcWfsException(CPSZ pszType,CPSZ pszMessage)
-    : MgOgcException(_("ServiceException"),pszType,pszMessage)
+    MgOgcWfsException(CPSZ pszType,CPSZ pszMessage,CPSZ pszLocator = _(""))
+    : MgOgcException(_("ServiceException"),pszType,pszMessage,pszLocator)
     {
     }
 
@@ -38,6 +38,7 @@
     static CPSZ kpszUnknownParameterValue;   // Specified a parameter value that is unknown.
     static CPSZ kpszMissingRequestParameter; // A required request parameter was not specified.
     static CPSZ kpszProcessingError;         // An error occurred while processing the request
+    static CPSZ kpszVersionNegotiationFailed; // None of the requested versions are supported
 };
 
 #endif//_OgcWfsException_h

Modified: trunk/MgDev/Web/src/HttpHandler/OgcWfsServer.cpp
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/OgcWfsServer.cpp	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/HttpHandler/OgcWfsServer.cpp	2010-09-14 09:45:29 UTC (rev 5131)
@@ -39,8 +39,12 @@
 CPSZ kpszQueryStringGetFeatureOutputFormatDefault_1_1_0    = _("Formats.GetFeature.default.1.1.0");
 CPSZ kpszPiGetFeatureCollection              = _("GetFeatureCollection");
 CPSZ kpszPiGetFeatureCollectionDefaultFormat = _("&GetFeatureCollection.xml;");
+CPSZ kpszQueryStringAcceptVersions           = _("acceptversions");
 
-extern CPSZ kpszPiAttributeSubset;      // = _("subset");
+extern CPSZ kpszPiAttributeSubset;            // = _("subset");
+extern CPSZ kpszElementVersion;               // = _("Version");
+extern CPSZ kpszAttributeNumber;              //= _("number");
+extern CPSZ kpszDictionarySupportedVersions;  //= _("SupportedVersions");
 
 // Localize
 CPSZ kpszExceptionMessageMissingServiceWfs = _("Expected required SERVICE=WFS argument."); // Localize
@@ -49,6 +53,7 @@
 CPSZ kpszExceptionMessageUnknownOutputFormat = _("Expected valid outputFormat argument, as enumerated by GetCapabilities. (Instead, found outputFormat='&Request.OutputFormat;'.)"); // Localize
 CPSZ kpszExceptionMessageUnknownTypeName   = _("Expected valid typeName argument, as enumerated by GetCapabilities. (Instead, found typeName='&Request.TypeName;'.)"); // Localize
 CPSZ kpszExceptionMessageWfsGetFeatureMissingFeatureType = _("A WFS GetFeature request requires at least one feature type to be specified."); // Localize
+CPSZ kpszExceptionMessageWfsVersionNegotiationFailed = _("Requested version is supported in AcceptVersions"); //Localize
 
 CPSZ kpszInternalErrorMissingGetFeatureRequestParams   = _("Internal Error: Missing WFS GetFeature request parameters."); // Localize
 //
@@ -101,7 +106,7 @@
         }
         default:
         {
-            ServiceExceptionReportResponse(MgOgcWmsException(MgOgcWfsException::kpszOperationNotSupported,
+            ServiceExceptionReportResponse(MgOgcWfsException(MgOgcWfsException::kpszOperationNotSupported,
                                                          kpszExceptionMessageWfsUnknownRequest));
             break;
         }
@@ -117,9 +122,9 @@
     CPSZ pService = RequestParameter(kpszQueryStringService);
     if(pService == NULL || SZ_NEI(pService,kpszQueryValueWfs))
     {
-        // TODO: verify that kpszOperationNotSupported is the right one to send back.
-        ServiceExceptionReportResponse(MgOgcWmsException(MgOgcWmsException::kpszOperationNotSupported,
-                                                         kpszExceptionMessageMissingServiceWfs));
+        ServiceExceptionReportResponse(MgOgcWfsException(MgOgcWfsException::kpszMissingRequestParameter,
+                                                         kpszExceptionMessageMissingServiceWfs,
+                                                         kpszQueryStringService));
         bValid = false;
     }
 
@@ -129,9 +134,9 @@
         CPSZ pszRequest = RequestParameter(kpszQueryStringRequest);
         if(pszRequest == NULL)
         {
-            // TODO: verify that kpszOperationNotSupported is the right one to send back.
-            ServiceExceptionReportResponse(MgOgcWmsException(MgOgcWfsException::kpszOperationNotSupported,
-                                                             kpszExceptionMessageWfsMissingRequest));
+            ServiceExceptionReportResponse(MgOgcWfsException(MgOgcWfsException::kpszMissingRequestParameter,
+                                                             kpszExceptionMessageWfsMissingRequest,
+                                                             kpszQueryStringRequest));
             bValid = false;
         }
     }
@@ -160,13 +165,52 @@
             }
             default:
             {
-                ServiceExceptionReportResponse(MgOgcWmsException(MgOgcWmsException::kpszOperationNotSupported,
+                ServiceExceptionReportResponse(MgOgcWfsException(MgOgcWmsException::kpszOperationNotSupported,
                                                              kpszExceptionMessageUnknownRequest));
                 break;
             }
         }
     }
 
+    if(bValid)
+    {
+        // Check that we have a acceptVersions parameter
+        CPSZ pszAcceptVersions = RequestParameter(kpszQueryStringAcceptVersions);
+        if(pszAcceptVersions != NULL)
+        {
+            STRING sAcceptVersions(pszAcceptVersions);
+            CPSZ pszSupportedVersions = Definition(kpszDictionarySupportedVersions);
+            // Pass out a NULL, which caller must use to tickle an exception.
+            if(pszSupportedVersions == NULL)
+                return false;
+
+            MgXmlParser SupportedVersions(pszSupportedVersions);
+
+            STRING sVersion;
+            bool bSupported = false;
+            while(SupportedVersions.Next()) {
+                if(SupportedVersions.Current().Type() == keBeginElement)
+                {
+                    MgXmlBeginElement& Begin = (MgXmlBeginElement&)SupportedVersions.Current();
+                    if(Begin.Name() == kpszElementVersion && Begin.GetAttribute(kpszAttributeNumber,sVersion))
+                    {
+                        if(sAcceptVersions.find(sVersion) != STRING::npos)
+                        {
+                            bSupported = true;
+                        }
+                    }    
+                }
+            }
+            if(!bSupported)
+            {
+                ServiceExceptionReportResponse(MgOgcWfsException(MgOgcWfsException::kpszVersionNegotiationFailed,
+                                                                 kpszExceptionMessageWfsVersionNegotiationFailed,
+                                                                 kpszQueryStringVersion));
+                bValid = false;
+            }
+        }
+    }
+
     return bValid;
 }
 
@@ -227,7 +271,8 @@
     if(pFeatureTypes == NULL || pFeatureTypes->GetCount() == 0)
     {
         ServiceExceptionReportResponse(MgOgcWfsException(MgOgcWfsException::kpszMissingRequestParameter,
-                                                 kpszExceptionMessageWfsGetFeatureMissingFeatureType));
+                                                 kpszExceptionMessageWfsGetFeatureMissingFeatureType,
+                                                 MgHttpResourceStrings::reqWfsTypeName.c_str()));
         return false;
     }
 
@@ -265,7 +310,8 @@
 
     // If we get to here, we were unable to generate a response for the requested format
     ServiceExceptionReportResponse(MgOgcWfsException(MgOgcWfsException::kpszUnknownParameterValue,
-                                                     kpszExceptionMessageUnknownOutputFormat));
+                                                     kpszExceptionMessageUnknownOutputFormat,
+                                                     MgHttpResourceStrings::reqWfsOutputFormat.c_str()));
 }
 
 // Implements the WMS GetCapabilities response.
@@ -306,8 +352,9 @@
 
     // Conformance test wfs/1.0.0/basic/describefeaturetype/get/3
     // requires that we provide a specific exception report.
-    ServiceExceptionReportResponse(MgOgcWmsException(MgOgcWfsException::kpszUnknownParameterValue,
-                                                     kpszExceptionMessageUnknownOutputFormat));
+    ServiceExceptionReportResponse(MgOgcWfsException(MgOgcWfsException::kpszUnknownParameterValue,
+                                                     kpszExceptionMessageUnknownOutputFormat,
+                                                     MgHttpResourceStrings::reqWfsOutputFormat.c_str()));
 }
 
 
@@ -397,8 +444,9 @@
 void MgOgcWfsServer::GenerateTypeNameException(CREFSTRING sTypeName)
 {
     sTypeName; // RESERVED FOR FUTURE USE; unused for now... to provide this info in exception body.
-    ServiceExceptionReportResponse(MgOgcWmsException(MgOgcWfsException::kpszUnknownParameterValue,
-                                                     kpszExceptionMessageUnknownTypeName));
+    ServiceExceptionReportResponse(MgOgcWfsException(MgOgcWfsException::kpszUnknownParameterValue,
+                                                     kpszExceptionMessageUnknownTypeName,
+                                                     MgHttpResourceStrings::reqWfsTypeName.c_str()));
 }
 
 void MgOgcWfsServer::ProcedureGetFeatureCollection(MgXmlProcessingInstruction& PI)

Modified: trunk/MgDev/Web/src/HttpHandler/OgcWmsException.h
===================================================================
--- trunk/MgDev/Web/src/HttpHandler/OgcWmsException.h	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/HttpHandler/OgcWmsException.h	2010-09-14 09:45:29 UTC (rev 5131)
@@ -23,8 +23,8 @@
 class MgOgcWmsException: public MgOgcException
 {
 public:
-    MgOgcWmsException(CPSZ pszType,CPSZ pszMessage)
-    : MgOgcException(_("ServiceException"),pszType,pszMessage)
+    MgOgcWmsException(CPSZ pszType,CPSZ pszMessage,CPSZ pszLocator = _(""))
+    : MgOgcException(_("ServiceException"),pszType,pszMessage,pszLocator)
     {
     }
 

Modified: trunk/MgDev/Web/src/IsapiAgent/IsapiResponseHandler.cpp
===================================================================
--- trunk/MgDev/Web/src/IsapiAgent/IsapiResponseHandler.cpp	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/IsapiAgent/IsapiResponseHandler.cpp	2010-09-14 09:45:29 UTC (rev 5131)
@@ -67,7 +67,7 @@
             WriteContext("\r\n"
                 "<html>\n<head>\n"
                 "<title>%s</title>\n"
-                "<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n"
+                "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"
                 "</head>\n"
                 "<body>\n<h2>%s</h2>\n%s\n</body>\n</html>\n",
                 MG_WCHAR_TO_CHAR(statusMessage),

Modified: trunk/MgDev/Web/src/MapAgentCommon/MapAgentStrings.cpp
===================================================================
--- trunk/MgDev/Web/src/MapAgentCommon/MapAgentStrings.cpp	2010-09-13 08:43:18 UTC (rev 5130)
+++ trunk/MgDev/Web/src/MapAgentCommon/MapAgentStrings.cpp	2010-09-14 09:45:29 UTC (rev 5131)
@@ -43,7 +43,7 @@
 const char* MapAgentStrings::WWWAuth = "WWW-Authenticate: Basic realm=\"%s\"\r\n";
 const char* MapAgentStrings::UnauthorizedHeader = "Status: 401 Unauthorized\r\n";
 const char* MapAgentStrings::Unauthorized = "401 Unauthorized";
-const char* MapAgentStrings::ContentTypeHeader = "Content-type: %s%s\r\n";
+const char* MapAgentStrings::ContentTypeHeader = "Content-Type: %s%s\r\n";
 const char* MapAgentStrings::Utf8Text = "; charset=utf-8";
 const char* MapAgentStrings::ContentLengthHeader = "Content-Length: %d\r\n";
 const char* MapAgentStrings::StatusHeader = "Status: %d %s\r\n";



More information about the mapguide-commits mailing list