[mapguide-commits] r9346 - in branches/3.1/MgDev: . Common/Stylization UnitTest/WebTier/MapAgent/MapAgentForms Web/src/HttpHandler Web/src/IsapiAgent

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sat Mar 3 05:34:57 PST 2018


Author: jng
Date: 2018-03-03 05:34:57 -0800 (Sat, 03 Mar 2018)
New Revision: 9346

Modified:
   branches/3.1/MgDev/
   branches/3.1/MgDev/Common/Stylization/StylizationEngine.cpp
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/describedrawingform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawinglayers.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawingsectionresources.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawingsections.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumerategroupsform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeraterepositoriesform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumerateusersform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getfeaturesetenvelopeform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getrepositorycontentform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getrepositoryheaderform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsiteinfoform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsitestatusform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsiteversionform.html
   branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/gettileprovidersform.html
   branches/3.1/MgDev/Web/src/HttpHandler/HttpDescribeDrawing.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingLayers.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingSectionResources.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingSections.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateGroups.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateRepositories.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateUsers.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpGetFeatureSetEnvelope.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpGetRepositoryContent.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpGetRepositoryHeader.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteInfo.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteStatus.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteVersion.cpp
   branches/3.1/MgDev/Web/src/HttpHandler/HttpGetTileProviders.cpp
   branches/3.1/MgDev/Web/src/IsapiAgent/IsapiResponseHandler.cpp
Log:
Merged revision(s) 9106-9107, 9147 from trunk/MgDev:
#2754: Fail to stylize layer when expression in symbol definition has invalid value

Some settings of a symbol definition e.g. width/height can be expressions. Suppose a table has a column HEIGHT which type is double, and the height of symbol is 0.1*HEIGHT. Then if a feature's HEIGHT is null, a FDOException will be thrown when stylizing the feature, and stylize layer will fail.

To fix this bug, we catch FDOException when applying styles.
........
Merge fix for #2750 to main branch.

#2750: Isapi mapagent crashes when server error message is too long

If there is an exception when MapGuide server processes a request, the  exception will be sent back to web extension. Isapi response handler will  convert this exception to html format. 
The crash happens when the error message is too long. We will get a  'security check fail or buffer overflow' error. We think it is related to  the unsafe API vsprintf(). It doesn't crash after changing the API to vsprintf_s().
........
#2767: Add missing JSON format conversion support for the following mapagent operations:

 - DESCRIBEDRAWING
 - ENUMERATEDRAWINGLAYERS
 - ENUMERATEDRAWINGSECTIONRESOURCES
 - ENUMERATEDRAWINGSECTIONS
 - ENUMERATEGROUPS
 - ENUMERATEUSERS
 - ENUMERATEREPOSITORIES
 - GETFEATURESETENVELOPE
 - GETREPOSITORYCONTENT
 - GETREPOSITORYHEADER
 - GETSITEINFO
 - GETSITESTATUS
 - GETSITEVERSION
 - GETTILEPROVIDERS
........


Index: branches/3.1/MgDev
===================================================================
--- branches/3.1/MgDev	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev	2018-03-03 13:34:57 UTC (rev 9346)

Property changes on: branches/3.1/MgDev
___________________________________________________________________
Modified: svn:mergeinfo
## -14,4 +14,4 ##
 /sandbox/jng/tiling:8174-8208
 /sandbox/jng/v30:8212-8227
 /sandbox/rfc94:5099-5163
-/trunk/MgDev:8955-8956,8969,8980-8981,8986,8996,9000,9004-9006,9010,9018-9021,9034,9038,9042,9094
\ No newline at end of property
+/trunk/MgDev:8955-8956,8969,8980-8981,8986,8996,9000,9004-9006,9010,9018-9021,9034,9038,9042,9094,9106-9107,9147
\ No newline at end of property
Modified: branches/3.1/MgDev/Common/Stylization/StylizationEngine.cpp
===================================================================
--- branches/3.1/MgDev/Common/Stylization/StylizationEngine.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Common/Stylization/StylizationEngine.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -1038,7 +1038,14 @@
 
             // evaluate the style (all expressions inside it) and convert to a
             // constant screen space render style
-            style->evaluate(&evalCtx);
+            try
+            {
+                style->evaluate(&evalCtx);
+            }
+            catch (FdoException* e)
+            {
+                ProcessStylizerException(e, __LINE__, __WFILE__);
+            }
 
             // compute offset to apply to the clipping bounds
             if (bClip)
@@ -1210,7 +1217,14 @@
                 else
                 {
                     // apply the style to the geometry using the renderer
-                    style->apply(&applyCtx);
+                    try
+                    {
+                        style->apply(&applyCtx);
+                    }
+                    catch (FdoException* e)
+                    {
+                        ProcessStylizerException(e, __LINE__, __WFILE__);
+                    }
                 }
             }
         }

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/describedrawingform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/describedrawingform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/describedrawingform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -20,6 +20,11 @@
         <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
         <p> Resource ID:
         <input type="text" name="RESOURCEID" value="Library://Drawings/World.DrawingSource" size="100" ID="Text5">
+        <p> Format:
+        <select name="FORMAT">
+        <option value="text/xml">text/xml</option>
+        <option value="application/json">application/json</option>
+        </select>
         <p>
         <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
         </form>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawinglayers.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawinglayers.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawinglayers.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -21,6 +21,11 @@
         <input type="text" name="RESOURCEID" value="Library://Drawings/World.DrawingSource" size="100" ID="Text5">
         <p> Section name:
         <input type="text" name="SECTION" value="" size="100" ID="Text6">
+        <p> Format:
+        <select name="FORMAT">
+        <option value="text/xml">text/xml</option>
+        <option value="application/json">application/json</option>
+        </select>
         <p>
         <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
         </form>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawingsectionresources.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawingsectionresources.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawingsectionresources.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -17,6 +17,11 @@
             <P>Resource ID: <INPUT id="Text5" type="text" size="100" value="Library://Drawings/World.DrawingSource"
                     name="RESOURCEID">
             <P>Section name: <INPUT id="Text6" type="text" size="100" name="SECTION">
+            <p> Format:
+            <select name="FORMAT">
+            <option value="text/xml">text/xml</option>
+            <option value="application/json">application/json</option>
+            </select>
             <P>
             <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
         </FORM>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawingsections.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawingsections.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeratedrawingsections.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -16,7 +16,11 @@
             <P>Locale: <INPUT id="Text4" type="text" size="10" value="en" name="LOCALE">
             <P>Resource ID: <INPUT id="Text5" type="text" size="100" value="Library://Drawings/World.DrawingSource"
                     name="RESOURCEID">
-            </P>
+            <p> Format:
+            <select name="FORMAT">
+            <option value="text/xml">text/xml</option>
+            <option value="application/json">application/json</option>
+            </select>
             <p><input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset"></p>
         </FORM>
     </body>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumerategroupsform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumerategroupsform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumerategroupsform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -14,6 +14,11 @@
 <input type="text" name="LOCALE" value="en" size="10">
 <p> Client Agent:
 <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
+<p> Format:
+<select name="FORMAT">
+<option value="text/xml">text/xml</option>
+<option value="application/json">application/json</option>
+</select>
 <p>
 <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset"></form>
 </body>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeraterepositoriesform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeraterepositoriesform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumeraterepositoriesform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -16,6 +16,11 @@
 <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
 <p> Type:
 <input type="text" name="TYPE" value="Session" size="20">
+<p> Format:
+<select name="FORMAT">
+<option value="text/xml">text/xml</option>
+<option value="application/json">application/json</option>
+</select>
 <p>
 <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
 </form>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumerateusersform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumerateusersform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/enumerateusersform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -16,6 +16,11 @@
 <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
 <p> Group:
 <input type="text" name="GROUP" value="" size="20">
+<p> Format:
+<select name="FORMAT">
+<option value="text/xml">text/xml</option>
+<option value="application/json">application/json</option>
+</select>
 <p>
 <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
 </form>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getfeaturesetenvelopeform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getfeaturesetenvelopeform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getfeaturesetenvelopeform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -18,6 +18,13 @@
                 Map name: <input type="text" name="MAPNAME" value="TestMap" size="100" ID="Text4">
             <p>
                 FeatureSet XML: <input type="text" name="FEATURESET" size="100" ID="Text4">
+            <p> Format:
+            <select name="FORMAT">
+            <option value="text/xml">text/xml</option>
+            <option value="application/json">application/json</option>
+            </select>
+            <p>
+            <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
             </div>
         </form>
     </body>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getrepositorycontentform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getrepositorycontentform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getrepositorycontentform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -16,6 +16,11 @@
 <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
 <p> Resource ID:
 <input type="text" name="RESOURCEID" value="Library://" size="100">
+<p> Format:
+<select name="FORMAT">
+<option value="text/xml">text/xml</option>
+<option value="application/json">application/json</option>
+</select>
 <p>
 <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
 </form>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getrepositoryheaderform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getrepositoryheaderform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getrepositoryheaderform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -16,6 +16,11 @@
 <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
 <p> Resource ID:
 <input type="text" name="RESOURCEID" value="Library://" size="100">
+<p> Format:
+<select name="FORMAT">
+<option value="text/xml">text/xml</option>
+<option value="application/json">application/json</option>
+</select>
 <p>
 <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
 </form>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsiteinfoform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsiteinfoform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsiteinfoform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -18,6 +18,11 @@
         <input type="text" name="LOCALE" value="en" size="10" ID="Text4">
         <p> Client Agent:
         <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
+        <p> Format:
+        <select name="FORMAT">
+        <option value="text/xml">text/xml</option>
+        <option value="application/json">application/json</option>
+        </select>
         <p>
         <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
         </form>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsitestatusform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsitestatusform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsitestatusform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -18,6 +18,11 @@
         <input type="text" name="LOCALE" value="en" size="10" ID="Text4">
         <p> Client Agent:
         <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
+        <p> Format:
+        <select name="FORMAT">
+        <option value="text/xml">text/xml</option>
+        <option value="application/json">application/json</option>
+        </select>
         <p>
         <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
         </form>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsiteversionform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsiteversionform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/getsiteversionform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -18,6 +18,11 @@
         <input type="text" name="LOCALE" value="en" size="10" ID="Text4">
         <p> Client Agent:
         <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
+        <p> Format:
+        <select name="FORMAT">
+        <option value="text/xml">text/xml</option>
+        <option value="application/json">application/json</option>
+        </select>
         <p>
         <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
         </form>

Modified: branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/gettileprovidersform.html
===================================================================
--- branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/gettileprovidersform.html	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/UnitTest/WebTier/MapAgent/MapAgentForms/gettileprovidersform.html	2018-03-03 13:34:57 UTC (rev 9346)
@@ -13,6 +13,12 @@
             <p>
                 Client Agent: <input type="text" name="CLIENTAGENT" value="MapGuide Developer" size="100">
             <p>
+				Format:
+				<select name="FORMAT">
+				<option value="text/xml">text/xml</option>
+				<option value="application/json">application/json</option>
+				</select>
+            <p>
                 <input type="submit" value="Submit" onclick="SetActionTarget()"> <input type="reset">
             </div>
         </form>

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpDescribeDrawing.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpDescribeDrawing.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpDescribeDrawing.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -61,6 +61,10 @@
 
     // call the C++ API
     Ptr<MgByteReader> byteReaderResult = service->DescribeDrawing(&resId);
+
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReaderResult);
+
     hResult->SetResultObject(byteReaderResult, byteReaderResult->GetMimeType());
 
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpDescribeDrawing.Execute")

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingLayers.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingLayers.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingLayers.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -63,7 +63,13 @@
 
     // call the C++ API
     Ptr<MgStringCollection> layers = service->EnumerateLayers(&resId, m_sectionName);
-    hResult->SetResultObject(layers, MgMimeType::Xml);
 
+    Ptr<MgByteReader> byteReader = layers->ToXml();
+
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReader);
+
+    hResult->SetResultObject(byteReader, byteReader->GetMimeType());
+
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpEnumerateDrawingLayers.Execute")
 }

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingSectionResources.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingSectionResources.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingSectionResources.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -62,8 +62,12 @@
     Ptr<MgDrawingService> service = (MgDrawingService*)(CreateService(MgServiceType::DrawingService));
 
     // call the C++ API
-    Ptr<MgByteReader> sectionResources = service->EnumerateSectionResources(&resId, m_sectionName);
-    hResult->SetResultObject(sectionResources, MgMimeType::Xml);
+    Ptr<MgByteReader> byteReader = service->EnumerateSectionResources(&resId, m_sectionName);
 
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReader);
+
+    hResult->SetResultObject(byteReader, byteReader->GetMimeType());
+
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpEnumerateDrawingSectionResources.Execute")
 }

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingSections.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingSections.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateDrawingSections.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -60,8 +60,12 @@
     Ptr<MgDrawingService> service = (MgDrawingService*)(CreateService(MgServiceType::DrawingService));
 
     // call the C++ API
-    Ptr<MgByteReader> sections = service->EnumerateSections(&resId);
-    hResult->SetResultObject(sections, MgMimeType::Xml);
+    Ptr<MgByteReader> byteReader = service->EnumerateSections(&resId);
 
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReader);
+
+    hResult->SetResultObject(byteReader, byteReader->GetMimeType());
+
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpEnumerateDrawingSections.Execute")
 }

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateGroups.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateGroups.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateGroups.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -59,6 +59,9 @@
     // Run API command
     Ptr<MgByteReader> byteReaderResult = mgSite->EnumerateGroups();
 
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReaderResult);
+
     hResult->SetResultObject(byteReaderResult, byteReaderResult->GetMimeType());
 
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpEnumerateGroups.Execute")

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateRepositories.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateRepositories.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateRepositories.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -64,6 +64,9 @@
     // Run API command
     Ptr<MgByteReader> byteReaderResult = mgprService->EnumerateRepositories(m_type);
 
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReaderResult);
+
     hResult->SetResultObject(byteReaderResult, byteReaderResult->GetMimeType());
 
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpEnumerateRepositories.Execute")

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateUsers.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateUsers.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpEnumerateUsers.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -64,6 +64,9 @@
     // Run API command
     Ptr<MgByteReader> byteReaderResult = mgSite->EnumerateUsers( m_group );
 
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReaderResult);
+
     hResult->SetResultObject(byteReaderResult, byteReaderResult->GetMimeType());
 
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpEnumerateUsers.Execute")

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpGetFeatureSetEnvelope.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpGetFeatureSetEnvelope.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpGetFeatureSetEnvelope.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -66,7 +66,10 @@
     Ptr<MgEnvelope> envelope = selection->GetExtents(featureService);
     Ptr<MgByteReader> byteReader = envelope->ToXml();
 
-    hResult->SetResultObject(byteReader, MgMimeType::Xml);
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReader);
 
+    hResult->SetResultObject(byteReader, byteReader->GetMimeType());
+
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpGetFeatureSetEnvelope.Execute")
 }

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpGetRepositoryContent.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpGetRepositoryContent.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpGetRepositoryContent.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -67,6 +67,9 @@
     // Run API command
     Ptr<MgByteReader> byteReaderResult = mgprService->GetRepositoryContent(&mgrIdentifier);
 
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReaderResult);
+
     hResult->SetResultObject(byteReaderResult, byteReaderResult->GetMimeType());
 
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpGetRepositoryContent.Execute")

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpGetRepositoryHeader.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpGetRepositoryHeader.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpGetRepositoryHeader.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -67,6 +67,9 @@
     // Run API command
     Ptr<MgByteReader> byteReaderResult = mgprService->GetRepositoryHeader(&mgrIdentifier);
 
+    // Convert to requested response format, if necessary
+    ProcessFormatConversion(byteReaderResult);
+
     hResult->SetResultObject(byteReaderResult, byteReaderResult->GetMimeType());
 
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpGetRepositoryHeader.Execute")

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteInfo.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteInfo.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteInfo.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -125,12 +125,18 @@
     }
     xml += EndXml();
 
-    Ptr<MgHttpPrimitiveValue> value = new MgHttpPrimitiveValue(xml);
-    if(!value)
-        throw new MgOutOfMemoryException(L"", __LINE__, __WFILE__, NULL, L"", NULL);
+    std::string mbXml;
+    MgUtil::WideCharToMultiByte(xml, mbXml);
 
-    hResult->SetResultObject(value, MgMimeType::Xml);
+    Ptr<MgByteSource> byteSource = new MgByteSource((BYTE_ARRAY_IN)mbXml.c_str(), (INT32)mbXml.length());
+    byteSource->SetMimeType(MgMimeType::Xml);
+    Ptr<MgByteReader> byteReader = byteSource->GetReader();
 
+    //Convert to alternate response format, if necessary
+    ProcessFormatConversion(byteReader);
+
+    hResult->SetResultObject(byteReader, byteReader->GetMimeType());
+
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpGetSiteInfo.Execute")
 }
 

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteStatus.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteStatus.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteStatus.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -105,12 +105,18 @@
 
     xml += EndXml();
 
-    Ptr<MgHttpPrimitiveValue> value = new MgHttpPrimitiveValue(xml);
-    if(!value)
-        throw new MgOutOfMemoryException(L"", __LINE__, __WFILE__, NULL, L"", NULL);
+    std::string mbXml;
+    MgUtil::WideCharToMultiByte(xml, mbXml);
 
-    hResult->SetResultObject(value, MgMimeType::Xml);
+    Ptr<MgByteSource> byteSource = new MgByteSource((BYTE_ARRAY_IN)mbXml.c_str(), (INT32)mbXml.length());
+    byteSource->SetMimeType(MgMimeType::Xml);
+    Ptr<MgByteReader> byteReader = byteSource->GetReader();
 
+    //Convert to alternate response format, if necessary
+    ProcessFormatConversion(byteReader);
+
+    hResult->SetResultObject(byteReader, byteReader->GetMimeType());
+
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpGetSiteStatus.Execute")
 }
 

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteVersion.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteVersion.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpGetSiteVersion.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -117,12 +117,18 @@
     }
     xml += EndXml();
 
-    Ptr<MgHttpPrimitiveValue> value = new MgHttpPrimitiveValue(xml);
-    if(!value)
-        throw new MgOutOfMemoryException(L"", __LINE__, __WFILE__, NULL, L"", NULL);
+    std::string mbXml;
+    MgUtil::WideCharToMultiByte(xml, mbXml);
 
-    hResult->SetResultObject(value, MgMimeType::Xml);
+    Ptr<MgByteSource> byteSource = new MgByteSource((BYTE_ARRAY_IN)mbXml.c_str(), (INT32)mbXml.length());
+    byteSource->SetMimeType(MgMimeType::Xml);
+    Ptr<MgByteReader> byteReader = byteSource->GetReader();
 
+    //Convert to alternate response format, if necessary
+    ProcessFormatConversion(byteReader);
+
+    hResult->SetResultObject(byteReader, byteReader->GetMimeType());
+
     MG_HTTP_HANDLER_CATCH_AND_THROW_EX(L"MgHttpGetSiteVersion.Execute")
 }
 

Modified: branches/3.1/MgDev/Web/src/HttpHandler/HttpGetTileProviders.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/HttpHandler/HttpGetTileProviders.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/HttpHandler/HttpGetTileProviders.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -59,6 +59,9 @@
         // Call the C++ API
         Ptr<MgByteReader> providers = service->GetTileProviders();
 
+        // Convert to requested response format, if necessary
+        ProcessFormatConversion(providers);
+
         // Set the result
         hResult->SetResultObject(providers, providers->GetMimeType());
     }

Modified: branches/3.1/MgDev/Web/src/IsapiAgent/IsapiResponseHandler.cpp
===================================================================
--- branches/3.1/MgDev/Web/src/IsapiAgent/IsapiResponseHandler.cpp	2018-03-03 13:25:04 UTC (rev 9345)
+++ branches/3.1/MgDev/Web/src/IsapiAgent/IsapiResponseHandler.cpp	2018-03-03 13:34:57 UTC (rev 9346)
@@ -249,12 +249,15 @@
 
 void IsapiResponseHandler::WriteContext(const char *pszFormat, ...)
 {
-    char szBuffer[4096];
+    char* szBuffer;
+    int len;
     va_list arg_ptr;
     va_start(arg_ptr, pszFormat);
-    vsprintf(szBuffer, pszFormat, arg_ptr);
+    len = _vscprintf(pszFormat, arg_ptr) + 1;
+    szBuffer = (char*)malloc(len * sizeof(char));
+    vsprintf_s(szBuffer, len, pszFormat, arg_ptr);
     va_end(arg_ptr);
-
     DWORD dwSize = (DWORD)strlen(szBuffer);
     m_pECB->WriteClient(m_pECB->ConnID, szBuffer, &dwSize, 0);
+    free(szBuffer);
 }



More information about the mapguide-commits mailing list