[mapguide-commits] r9144 - in sandbox/jng/clean_json: . Common Common/CoordinateSystem Common/Foundation Common/Foundation/System Common/Geometry Common/MapGuideCommon Common/MapGuideCommon/Controller Common/MapGuideCommon/MapLayer Common/MdfModel Common/MdfParser Common/PlatformBase Common/PlatformBase/MapLayer Common/PlatformBase/Services Common/Renderers Common/Schema Common/Stylization Desktop Desktop/DesktopUnmanagedApi/DotNet Desktop/DesktopUnmanagedApi/DotNet/Partials Desktop/DesktopUnmanagedApi/JavaApiEx Desktop/MapViewer/Properties Desktop/MapViewer.Desktop/Properties Desktop/MgAppLayout/Properties Desktop/MgDesktop Desktop/UnitTest Doc/devguide/source Oem Oem/ACE/ACE_wrappers/lib Oem/DWFTK/develop/global/build/VC 14.0/DWFCore Oem/DWFTK/develop/global/build/VC 14.0/DWFToolkit Oem/DWFTK/develop/global/build/VC 14.0/W3DToolkit Oem/DWFTK/develop/global/build/VC 14.0/WhipToolkit Oem/DWFTK/develop/global/build/VC 14.0/XAML Oem/LinuxApt Oem/SQLite/src/SqliteDotNet Oem/agg-2.4/include Oem/ge os/src/io Oem/httpd/lib Oem/httpd/lib64 Oem/jsoncpp/src/lib_json Oem/php/Release_TS Oem/php/Zend Oem/php/main Oem/php/x64/Release_TS Server Server/src/Common/Base Server/src/Common/Cache Server/src/Common/Manager Server/src/Common/Thread Server/src/Core Server/src/Gws/GwsCommon Server/src/Gws/GwsQueryEngine Server/src/Gws/GwsResource Server/src/Services/Drawing Server/src/Services/Feature Server/src/Services/Kml Server/src/Services/Mapping Server/src/Services/Profiling Server/src/Services/Rendering Server/src/Services/Resource Server/src/Services/ServerAdmin Server/src/Services/Site Server/src/Services/Tile Server/src/UnitTesting UnitTest/Acceptance UnitTest/Common/FoundationTest/DotNetUnmanagedApi UnitTest/TestData/FeatureService UnitTest/TestData/ResourceService UnitTest/WebTier/DotNet/MgTestRunner UnitTest/WebTier/DotNet/TestCommon UnitTest/WebTier/DotNet/TestMapGuideApi UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests UnitTest/WebTier/Php Web/src Web/src/ApacheAgent Web/src /CgiAgent Web/src/DotNetUnmanagedApi/Foundation Web/src/DotNetUnmanagedApi/Geometry Web/src/DotNetUnmanagedApi/MapGuideCommon Web/src/DotNetUnmanagedApi/PlatformBase Web/src/DotNetUnmanagedApi/Web Web/src/HttpHandler Web/src/IsapiAgent Web/src/JavaApi Web/src/JavaApiEx Web/src/MapGuideApi Web/src/PhpApi Web/src/WebApp Web/src/WebSupport Web/src/mapadmin Web/src/mapviewerjava Web/src/mapviewernet Web/src/mapviewerphp Web/src/schemareport Web/src/viewerfiles nuget/MapGuideNuget nuget/MapGuideNuget/CoordSysEnumTest nuget/MapGuideNuget/CoordSysEnumTest64 nuget/MapGuideNuget/DesktopConsoleTest nuget/MapGuideNuget/DesktopConsoleTest64 nuget/MapGuideNuget/DesktopViewerTest nuget/MapGuideNuget/DesktopViewerTest64

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Tue Apr 11 08:36:32 PDT 2017


Author: jng
Date: 2017-04-11 08:36:32 -0700 (Tue, 11 Apr 2017)
New Revision: 9144

Added:
   sandbox/jng/clean_json/Common/Geometry/GeometrySimplificationAlgorithmType.h
   sandbox/jng/clean_json/Common/Geometry/GeometrySimplifier.cpp
   sandbox/jng/clean_json/Common/Geometry/GeometrySimplifier.h
   sandbox/jng/clean_json/Oem/LinuxApt/apache-tomcat-7.0.68.tar.gz
   sandbox/jng/clean_json/Oem/LinuxApt/apr-1.5.2.tar.bz2
   sandbox/jng/clean_json/Oem/LinuxApt/httpd-2.4.18.tar.bz2
   sandbox/jng/clean_json/Oem/LinuxApt/php-5.6.23.tar.bz2
   sandbox/jng/clean_json/Oem/LinuxApt/tomcat-connectors-1.2.41-src.tar.gz
   sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/StatelessMapTests.cs
   sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/Utils.cs
   sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.aps
   sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.rc
   sandbox/jng/clean_json/Web/src/WebSupport/resource.h
   sandbox/jng/clean_json/nuget/MapGuideNuget/WebApiTest/
   sandbox/jng/clean_json/nuget/MapGuideNuget/WebApiTest64/
Removed:
   sandbox/jng/clean_json/Oem/LinuxApt/apache-tomcat-7.0.56.tar.gz
   sandbox/jng/clean_json/Oem/LinuxApt/apr-1.5.1.tar.bz2
   sandbox/jng/clean_json/Oem/LinuxApt/httpd-2.4.10.tar.bz2
   sandbox/jng/clean_json/Oem/LinuxApt/php-5.5.17.tar.bz2
   sandbox/jng/clean_json/Oem/LinuxApt/tomcat-connectors-1.2.40-src.tar.gz
   sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget/
   sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget64/
   sandbox/jng/clean_json/nuget/MapGuideNuget/Web.sln
   sandbox/jng/clean_json/nuget/MapGuideNuget/Web64.sln
Modified:
   sandbox/jng/clean_json/
   sandbox/jng/clean_json/Common/CoordinateSystem/CoordSysUtil.h
   sandbox/jng/clean_json/Common/Foundation/Foundation.rc
   sandbox/jng/clean_json/Common/Foundation/System/Resources.cpp
   sandbox/jng/clean_json/Common/Geometry/Geometry.rc
   sandbox/jng/clean_json/Common/Geometry/Geometry.vcxproj
   sandbox/jng/clean_json/Common/Geometry/Geometry.vcxproj.filters
   sandbox/jng/clean_json/Common/Geometry/GeometryBuild.cpp
   sandbox/jng/clean_json/Common/Geometry/GeometryClassId.h
   sandbox/jng/clean_json/Common/Geometry/GeometryCommon.h
   sandbox/jng/clean_json/Common/Geometry/Makefile.am
   sandbox/jng/clean_json/Common/MapGuideCommon/Controller/HtmlController.cpp
   sandbox/jng/clean_json/Common/MapGuideCommon/MapGuideCommon.rc
   sandbox/jng/clean_json/Common/MapGuideCommon/MapLayer/Map.cpp
   sandbox/jng/clean_json/Common/MapGuideCommon/MapLayer/Map.h
   sandbox/jng/clean_json/Common/MdfModel/MdfModel.rc
   sandbox/jng/clean_json/Common/MdfParser/MdfParser.rc
   sandbox/jng/clean_json/Common/PlatformBase/MapLayer/SelectionBase.h
   sandbox/jng/clean_json/Common/PlatformBase/PlatformBase.rc
   sandbox/jng/clean_json/Common/PlatformBase/Services/ResourceDefs.cpp
   sandbox/jng/clean_json/Common/PlatformBase/Services/ResourceDefs.h
   sandbox/jng/clean_json/Common/ProductVersion.h
   sandbox/jng/clean_json/Common/Renderers/AGGRenderer.cpp
   sandbox/jng/clean_json/Common/Renderers/Renderers.rc
   sandbox/jng/clean_json/Common/Schema/RuntimeMap-2.6.0.xsd
   sandbox/jng/clean_json/Common/Schema/RuntimeMap-3.0.0.xsd
   sandbox/jng/clean_json/Common/Stylization/Stylization.rc
   sandbox/jng/clean_json/Common/Stylization/StylizationEngine.cpp
   sandbox/jng/clean_json/Common/Stylization/StylizationUtil.cpp
   sandbox/jng/clean_json/Desktop/
   sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/DesktopApi.vcxproj
   sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/DesktopDotNetApi.vcxproj
   sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/Partials/AssemblyInfo.cs
   sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/JavaApiEx/JavaApiEx.rc
   sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/JavaApiEx/JavaApiEx.vcxproj
   sandbox/jng/clean_json/Desktop/MapViewer.Desktop/Properties/AssemblyInfo.cs
   sandbox/jng/clean_json/Desktop/MapViewer/Properties/AssemblyInfo.cs
   sandbox/jng/clean_json/Desktop/MgAppLayout/Properties/AssemblyInfo.cs
   sandbox/jng/clean_json/Desktop/MgDesktop/MgDesktop.vcxproj
   sandbox/jng/clean_json/Desktop/MgDesktop/changelog.txt
   sandbox/jng/clean_json/Desktop/MgDesktopApi.sln
   sandbox/jng/clean_json/Desktop/UnitTest/UnitTest.vcxproj
   sandbox/jng/clean_json/Doc/devguide/source/revision_history.rst
   sandbox/jng/clean_json/Doc/devguide/source/supplemental_development.rst
   sandbox/jng/clean_json/Oem/
   sandbox/jng/clean_json/Oem/ACE/ACE_wrappers/lib/
   sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/DWFCore/
   sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/DWFToolkit/
   sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/W3DToolkit/
   sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/WhipToolkit/
   sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/XAML/
   sandbox/jng/clean_json/Oem/LinuxApt/
   sandbox/jng/clean_json/Oem/LinuxApt/build_apt.sh
   sandbox/jng/clean_json/Oem/LinuxApt/php.ini-mapguide
   sandbox/jng/clean_json/Oem/SQLite/src/SqliteDotNet/SqliteDotNet.vcxproj
   sandbox/jng/clean_json/Oem/agg-2.4/include/agg_font_cache_manager.h
   sandbox/jng/clean_json/Oem/geos/src/io/WKTReader.cpp
   sandbox/jng/clean_json/Oem/geos/src/io/WKTWriter.cpp
   sandbox/jng/clean_json/Oem/httpd/lib/apr-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib/aprutil-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib/libapr-1.exp
   sandbox/jng/clean_json/Oem/httpd/lib/libapr-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib/libapriconv-1.exp
   sandbox/jng/clean_json/Oem/httpd/lib/libapriconv-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib/libaprutil-1.exp
   sandbox/jng/clean_json/Oem/httpd/lib/libaprutil-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib/libhttpd.exp
   sandbox/jng/clean_json/Oem/httpd/lib/libhttpd.lib
   sandbox/jng/clean_json/Oem/httpd/lib/mod_dav.exp
   sandbox/jng/clean_json/Oem/httpd/lib/mod_dav.lib
   sandbox/jng/clean_json/Oem/httpd/lib/xml.lib
   sandbox/jng/clean_json/Oem/httpd/lib64/apr-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib64/aprutil-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib64/libapr-1.exp
   sandbox/jng/clean_json/Oem/httpd/lib64/libapr-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib64/libapriconv-1.exp
   sandbox/jng/clean_json/Oem/httpd/lib64/libapriconv-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib64/libaprutil-1.exp
   sandbox/jng/clean_json/Oem/httpd/lib64/libaprutil-1.lib
   sandbox/jng/clean_json/Oem/httpd/lib64/libhttpd.exp
   sandbox/jng/clean_json/Oem/httpd/lib64/libhttpd.lib
   sandbox/jng/clean_json/Oem/httpd/lib64/mod_dav.exp
   sandbox/jng/clean_json/Oem/httpd/lib64/mod_dav.lib
   sandbox/jng/clean_json/Oem/httpd/lib64/xml.lib
   sandbox/jng/clean_json/Oem/jsoncpp/src/lib_json/lib_json.vcxproj
   sandbox/jng/clean_json/Oem/php/Release_TS/php5ts.lib
   sandbox/jng/clean_json/Oem/php/Zend/zend_config.w32.h
   sandbox/jng/clean_json/Oem/php/main/win95nt.h
   sandbox/jng/clean_json/Oem/php/x64/Release_TS/php5ts.lib
   sandbox/jng/clean_json/Server/
   sandbox/jng/clean_json/Server/src/Common/Base/ServerBase.rc
   sandbox/jng/clean_json/Server/src/Common/Cache/ServerCache.rc
   sandbox/jng/clean_json/Server/src/Common/Manager/ServerManager.rc
   sandbox/jng/clean_json/Server/src/Common/Thread/ServerThread.rc
   sandbox/jng/clean_json/Server/src/Core/Makefile.am
   sandbox/jng/clean_json/Server/src/Core/ServerCore.rc
   sandbox/jng/clean_json/Server/src/Core/mapguidectl
   sandbox/jng/clean_json/Server/src/Gws/GwsCommon/GwsCommon.rc
   sandbox/jng/clean_json/Server/src/Gws/GwsQueryEngine/GwsQueryEngine.rc
   sandbox/jng/clean_json/Server/src/Gws/GwsResource/GwsResource.rc
   sandbox/jng/clean_json/Server/src/Services/Drawing/ServerDrawingService.rc
   sandbox/jng/clean_json/Server/src/Services/Feature/SelectCommand.cpp
   sandbox/jng/clean_json/Server/src/Services/Feature/SelectCommand.h
   sandbox/jng/clean_json/Server/src/Services/Feature/ServerFeatureService.rc
   sandbox/jng/clean_json/Server/src/Services/Kml/ServerKmlService.rc
   sandbox/jng/clean_json/Server/src/Services/Mapping/MappingUtil.cpp
   sandbox/jng/clean_json/Server/src/Services/Mapping/ServerMappingService.cpp
   sandbox/jng/clean_json/Server/src/Services/Mapping/ServerMappingService.rc
   sandbox/jng/clean_json/Server/src/Services/Profiling/ServerProfilingService.rc
   sandbox/jng/clean_json/Server/src/Services/Rendering/ServerRenderingService.cpp
   sandbox/jng/clean_json/Server/src/Services/Rendering/ServerRenderingService.rc
   sandbox/jng/clean_json/Server/src/Services/Resource/ApplicationRepositoryManager.cpp
   sandbox/jng/clean_json/Server/src/Services/Resource/ServerResourceService.rc
   sandbox/jng/clean_json/Server/src/Services/Resource/TagManager.cpp
   sandbox/jng/clean_json/Server/src/Services/ServerAdmin/ServerAdminService.rc
   sandbox/jng/clean_json/Server/src/Services/Site/ServerSiteService.rc
   sandbox/jng/clean_json/Server/src/Services/Tile/ServerTileService.rc
   sandbox/jng/clean_json/Server/src/UnitTesting/TestGeometry.cpp
   sandbox/jng/clean_json/Server/src/UnitTesting/TestGeometry.h
   sandbox/jng/clean_json/Server/src/UnitTesting/TestMisc.cpp
   sandbox/jng/clean_json/Server/src/UnitTesting/TestMisc.h
   sandbox/jng/clean_json/Server/src/UnitTesting/UnitTesting.rc
   sandbox/jng/clean_json/UnitTest/Acceptance/nightwatch.json
   sandbox/jng/clean_json/UnitTest/Common/FoundationTest/DotNetUnmanagedApi/DotNetUnmanagedApi.rc
   sandbox/jng/clean_json/UnitTest/TestData/FeatureService/FeatureServiceTest.dump
   sandbox/jng/clean_json/UnitTest/TestData/ResourceService/ResourceServiceTest.dump
   sandbox/jng/clean_json/UnitTest/WebTier/DotNet/MgTestRunner/Program.cs
   sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestCommon/CommonTests.cs
   sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/RenderingServiceTests.cs
   sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/TestMapGuideApi.csproj
   sandbox/jng/clean_json/UnitTest/WebTier/Php/ResourceServiceHttpRequests.php
   sandbox/jng/clean_json/Web/src/
   sandbox/jng/clean_json/Web/src/ApacheAgent/ApacheAgent.rc
   sandbox/jng/clean_json/Web/src/CgiAgent/CgiAgent.rc
   sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Foundation/FoundationApi.rc
   sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApi.rc
   sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApi.vcxproj
   sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApiGen.xml
   sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryConstants.xml
   sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/MapGuideCommon/MapGuideCommonApi.rc
   sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/PlatformBase/PlatformBaseApi.rc
   sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Web/WebApi.rc
   sandbox/jng/clean_json/Web/src/HttpHandler/HttpGetDynamicMapOverlayImage.cpp
   sandbox/jng/clean_json/Web/src/HttpHandler/HttpHandler.rc
   sandbox/jng/clean_json/Web/src/IsapiAgent/IsapiAgent.rc
   sandbox/jng/clean_json/Web/src/IsapiAgent/IsapiResponseHandler.cpp
   sandbox/jng/clean_json/Web/src/JavaApi/JavaApi.rc
   sandbox/jng/clean_json/Web/src/JavaApiEx/JavaApiEx.rc
   sandbox/jng/clean_json/Web/src/MapGuideApi/Constants.xml
   sandbox/jng/clean_json/Web/src/MapGuideApi/MapGuideApiGen.xml
   sandbox/jng/clean_json/Web/src/PhpApi/PhpApi.rc
   sandbox/jng/clean_json/Web/src/WebApp/WebApp.rc
   sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.vcxproj
   sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.vcxproj.filters
   sandbox/jng/clean_json/Web/src/mapadmin/performanceReport.php
   sandbox/jng/clean_json/Web/src/mapadmin/resizableadmin.php
   sandbox/jng/clean_json/Web/src/mapviewerjava/ajaxviewerabout.jsp
   sandbox/jng/clean_json/Web/src/mapviewerjava/buffer.jsp
   sandbox/jng/clean_json/Web/src/mapviewerjava/common.jsp
   sandbox/jng/clean_json/Web/src/mapviewerjava/search.jsp
   sandbox/jng/clean_json/Web/src/mapviewerjava/selectwithin.jsp
   sandbox/jng/clean_json/Web/src/mapviewernet/ajaxviewerabout.aspx
   sandbox/jng/clean_json/Web/src/mapviewernet/buffer.aspx
   sandbox/jng/clean_json/Web/src/mapviewernet/common.aspx
   sandbox/jng/clean_json/Web/src/mapviewernet/search.aspx
   sandbox/jng/clean_json/Web/src/mapviewernet/selectwithin.aspx
   sandbox/jng/clean_json/Web/src/mapviewerphp/ajaxviewerabout.php
   sandbox/jng/clean_json/Web/src/mapviewerphp/buffer.php
   sandbox/jng/clean_json/Web/src/mapviewerphp/common.php
   sandbox/jng/clean_json/Web/src/mapviewerphp/search.php
   sandbox/jng/clean_json/Web/src/mapviewerphp/selectwithin.php
   sandbox/jng/clean_json/Web/src/schemareport/displayschemafunctions.php
   sandbox/jng/clean_json/Web/src/schemareport/showclass.php
   sandbox/jng/clean_json/Web/src/viewerfiles/
   sandbox/jng/clean_json/Web/src/viewerfiles/ajaxmappane.templ
   sandbox/jng/clean_json/build_oem.sh
   sandbox/jng/clean_json/configure.in
   sandbox/jng/clean_json/csmap_excludes.txt
   sandbox/jng/clean_json/nuget/MapGuideNuget/
   sandbox/jng/clean_json/nuget/MapGuideNuget/CoordSysEnumTest/
   sandbox/jng/clean_json/nuget/MapGuideNuget/CoordSysEnumTest64/
   sandbox/jng/clean_json/nuget/MapGuideNuget/DesktopConsoleTest/
   sandbox/jng/clean_json/nuget/MapGuideNuget/DesktopConsoleTest64/
   sandbox/jng/clean_json/nuget/MapGuideNuget/DesktopViewerTest/
   sandbox/jng/clean_json/nuget/MapGuideNuget/DesktopViewerTest64/
   sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget.sln
   sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget64.sln
   sandbox/jng/clean_json/prepare_webtier_components.bat
   sandbox/jng/clean_json/release64_excludes.txt
   sandbox/jng/clean_json/release_excludes.txt
   sandbox/jng/clean_json/setenvironment.bat
   sandbox/jng/clean_json/setenvironment64.bat
Log:
Fast-forward merge to line up with current trunk


Property changes on: sandbox/jng/clean_json
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.4/MgDev:6749-6756,6777-6783,6785-6787,6789,6791-6794,6796-6801,6954-6962,6986-7006
/branches/2.6/MgDev:8276-8286,8288-8292,8297,8299,8301,8303,8314-8315,8318,8335,8340,8354-8355,8365,8373
/branches/3.0/MgDev:8705,8710
/sandbox/VC140:8684-8759
/sandbox/adsk/2.6l:8727
/sandbox/adsk/3.0m:8563,8584,8607,8625,8694-8695
/sandbox/jng/convenience_apis:8262-8268,8271-8363
/sandbox/jng/createruntimemap:7486-7555
/sandbox/jng/dwftk:8321-8324,8328-8329,8331,8352
/sandbox/jng/geos34x:8256-8259
/sandbox/jng/tiling:8174-8208
/sandbox/jng/v30:8212-8227
/sandbox/rfc94:5099-5163
   + /branches/2.4/MgDev:6749-6756,6777-6783,6785-6787,6789,6791-6794,6796-6801,6954-6962,6986-7006
/branches/2.6/MgDev:8276-8286,8288-8292,8297,8299,8301,8303,8314-8315,8318,8335,8340,8354-8355,8365,8373
/branches/3.0/MgDev:8658,8705,8710
/branches/3.1/MgDev:9026,9058-9059,9067-9068
/sandbox/VC140:8684-8759
/sandbox/adsk/2.6l:8727
/sandbox/adsk/3.0m:8563,8584,8607,8625,8694-8695
/sandbox/adsk/3.1n:8871,8895,8901,8912-8913,8921-8922,8942,9019-9020
/sandbox/jng/convenience_apis:8262-8268,8271-8363
/sandbox/jng/createruntimemap:7486-7555
/sandbox/jng/dwftk:8321-8324,8328-8329,8331,8352
/sandbox/jng/geos34x:8256-8259
/sandbox/jng/php56x:8975-8985
/sandbox/jng/rfc155:8872-8884
/sandbox/jng/simplify:8814-9141
/sandbox/jng/tiling:8174-8208
/sandbox/jng/v30:8212-8227
/sandbox/rfc94:5099-5163
/trunk/MgDev:8818-9143

Modified: sandbox/jng/clean_json/Common/CoordinateSystem/CoordSysUtil.h
===================================================================
--- sandbox/jng/clean_json/Common/CoordinateSystem/CoordSysUtil.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/CoordinateSystem/CoordSysUtil.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -101,7 +101,20 @@
   if (str == 0)
     return 0;
 
-  return MgUtil::MultiByteToWideChar(str);
+  // Check input, discard invalid charactors
+  size_t len = strlen(str);
+  char* tempstr = new char[len+1];
+  size_t pos = 0;
+  for (size_t i = 0; i < len; i++)
+  {
+      if (str[i] > 0)
+          tempstr[pos++] = str[i];
+  }
+  tempstr[pos] = '\0';
+
+  wchar_t* ret = MgUtil::MultiByteToWideChar(tempstr);
+  delete []tempstr;
+  return ret;
 }
 
 inline char *

Modified: sandbox/jng/clean_json/Common/Foundation/Foundation.rc
===================================================================
--- sandbox/jng/clean_json/Common/Foundation/Foundation.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Foundation/Foundation.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "Foundation Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgFoundation"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgFoundation.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Common/Foundation/System/Resources.cpp
===================================================================
--- sandbox/jng/clean_json/Common/Foundation/System/Resources.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Foundation/System/Resources.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -38,8 +38,8 @@
 const STRING MgResources::ServerShuttingDown            = L"Server shutting down...";
 const STRING MgResources::ServerStarted                 = L"Server started.";
 const STRING MgResources::ServerStopped                 = L"Server stopped.";
-const STRING MgResources::ServerServiceName             = L"MapGuideServer3.0"; // Do not translate
-const STRING MgResources::ServerServiceDisplayName      = L"MapGuide Server v3.0"; // Do not translate
+const STRING MgResources::ServerServiceName             = L"MapGuideServer3.1"; // Do not translate
+const STRING MgResources::ServerServiceDisplayName      = L"MapGuide Server v3.1"; // Do not translate
 const STRING MgResources::ServerServiceDescription      = L"The MapGuide Server process.";
 const STRING MgResources::UsingDefaultResourceFile      = L"Defaulting to the \"en\" resource file.";
 const STRING MgResources::RegisteredLicenseDetected     = L"Registered license detected...";

Modified: sandbox/jng/clean_json/Common/Geometry/Geometry.rc
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/Geometry.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Geometry/Geometry.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "Geometry Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgGeometry"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgGeometry.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Common/Geometry/Geometry.vcxproj
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/Geometry.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Geometry/Geometry.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -450,6 +450,12 @@
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
     </ClCompile>
+    <ClCompile Include="GeometrySimplifier.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+    </ClCompile>
     <ClCompile Include="Parse\ArrayHelper.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@@ -892,6 +898,8 @@
     <ClInclude Include="Exception\InvalidCoordinateSystemException.h" />
     <ClInclude Include="Exception\InvalidCoordinateSystemTypeException.h" />
     <ClInclude Include="Exception\InvalidCoordinateSystemUnitsException.h" />
+    <ClInclude Include="GeometrySimplifier.h" />
+    <ClInclude Include="GeometrySimplificationAlgorithmType.h" />
     <ClInclude Include="Parse\Array.h" />
     <ClInclude Include="Parse\ArrayHelper.h" />
     <ClInclude Include="Parse\LexAwkt.h" />

Modified: sandbox/jng/clean_json/Common/Geometry/Geometry.vcxproj.filters
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/Geometry.vcxproj.filters	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Geometry/Geometry.vcxproj.filters	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
     <Filter Include="Buffer">
@@ -372,6 +372,7 @@
     <ClCompile Include="Region.cpp" />
     <ClCompile Include="Ring.cpp" />
     <ClCompile Include="WktReaderWriter.cpp" />
+    <ClCompile Include="GeometrySimplifier.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="Buffer\BorderWalker.h">
@@ -970,8 +971,10 @@
     <ClInclude Include="Ring.h" />
     <ClInclude Include="Transform.h" />
     <ClInclude Include="WktReaderWriter.h" />
+    <ClInclude Include="GeometrySimplifier.h" />
+    <ClInclude Include="GeometrySimplificationAlgorithmType.h" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="Geometry.rc" />
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file

Modified: sandbox/jng/clean_json/Common/Geometry/GeometryBuild.cpp
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/GeometryBuild.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Geometry/GeometryBuild.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -39,6 +39,7 @@
 #include "Geometry.cpp"
 #include "GeometryCollection.cpp"
 #include "GeometryFactory.cpp"
+#include "GeometrySimplifier.cpp"
 #include "GeometryUtil.cpp"
 #include "LinearRing.cpp"
 #include "LinearRingCollection.cpp"

Modified: sandbox/jng/clean_json/Common/Geometry/GeometryClassId.h
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/GeometryClassId.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Geometry/GeometryClassId.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -76,6 +76,9 @@
 #define Geometry_CurveRingCollection                      GEOMETRY_ID+52
 #define Geometry_LinearRingCollection                     GEOMETRY_ID+53
 
+// Simplifier
+#define Geometry_GeometrySimplifier                       GEOMETRY_ID+54
+
 // CoordinateSystem API
 #define CoordinateSystem_CoordinateSystem                           GEOMETRY_COORDINATE_SYSTEM_ID+0
 #define CoordinateSystem_CoordinateSystemFactory                    GEOMETRY_COORDINATE_SYSTEM_ID+1

Modified: sandbox/jng/clean_json/Common/Geometry/GeometryCommon.h
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/GeometryCommon.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Geometry/GeometryCommon.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -105,6 +105,8 @@
 
 #include "GeometryFactory.h"
 #include "GeometryUtil.h"
+#include "GeometrySimplifier.h"
+#include "GeometrySimplificationAlgorithmType.h"
 
 #include "CoordinateSystem/CoordinateSystem.h"
 #include "CoordinateSystem/CoordinateSystemDatum.h"

Copied: sandbox/jng/clean_json/Common/Geometry/GeometrySimplificationAlgorithmType.h (from rev 9143, trunk/MgDev/Common/Geometry/GeometrySimplificationAlgorithmType.h)
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/GeometrySimplificationAlgorithmType.h	                        (rev 0)
+++ sandbox/jng/clean_json/Common/Geometry/GeometrySimplificationAlgorithmType.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -0,0 +1,45 @@
+//
+//  Copyright (C) 2004-2011 by Autodesk, Inc.
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of version 2.1 of the GNU Lesser
+//  General Public License as published by the Free Software Foundation.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef _MGGEOMETRYSIMPLIFICATIONALGORITHMTYPE_H_
+#define _MGGEOMETRYSIMPLIFICATIONALGORITHMTYPE_H_
+
+/// \cond INTERNAL
+////////////////////////////////////////////////////////////
+/// \brief
+/// MgGeometrySimplificationAlgorithmType defines constants indicating
+/// the various simplification algorithms available for simplifying
+/// geometry instances
+///
+class MgGeometrySimplificationAlgorithmType
+{
+PUBLISHED_API:
+    /////////////////////////////////////////////////////////////////
+    /// \brief
+    /// Specifies that the Douglas-Peucker algorithm be used for simplification.
+    ///
+    static const INT32 DouglasPeucker = 0;
+
+    ///////////////////////////////////////////////////////
+    /// \brief
+    /// Specifies that the Topology Preserving algorithm be used for simplification
+    ///
+    static const INT32 TopologyPreserving = 1;
+};
+/// \endcond
+
+#endif //_MGGEOMETRYSIMPLIFICATIONALGORITHMTYPE_H_
\ No newline at end of file

Copied: sandbox/jng/clean_json/Common/Geometry/GeometrySimplifier.cpp (from rev 9143, trunk/MgDev/Common/Geometry/GeometrySimplifier.cpp)
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/GeometrySimplifier.cpp	                        (rev 0)
+++ sandbox/jng/clean_json/Common/Geometry/GeometrySimplifier.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -0,0 +1,92 @@
+//
+//  Copyright (C) 2004-2015 by Autodesk, Inc.
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of version 2.1 of the GNU Lesser
+//  General Public License as published by the Free Software Foundation.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#include "geos.h"
+#include "geos/simplify/DouglasPeuckerSimplifier.h"
+#include "geos/simplify/TopologyPreservingSimplifier.h"
+
+#include "GeometryCommon.h"
+#include "GeosUtil.h"
+#include "GeometryExceptionDef.h"
+
+///////////////////////////////////////////////////////////////////////////
+// Creates an MgGeometrySimplifier object
+//
+MgGeometrySimplifier::MgGeometrySimplifier()
+{
+}
+
+MgGeometry* MgGeometrySimplifier::Simplify(MgGeometry* geom, double tolerance, INT32 algorithm)
+{
+    Ptr<MgGeometry> simplified;
+    Geometry* gInput = NULL;
+    std::auto_ptr<Geometry> gOutput;
+    MG_GEOMETRY_TRY()
+
+    CHECKARGUMENTNULL(geom, L"MgGeometrySimplifier.Simplify");
+    if (algorithm != MgGeometrySimplificationAlgorithmType::DouglasPeucker &&
+        algorithm != MgGeometrySimplificationAlgorithmType::TopologyPreserving)
+    {
+        throw new MgInvalidArgumentException(L"MgGeometrySimplifier.Simplify", __LINE__, __WFILE__, NULL, L"MgInvalidGeometrySimplficationAlgorithm", NULL);
+    }
+
+    STRING inputWKt = geom->ToAwkt(true);
+    PrecisionModel pm;
+    GeometryFactory gf(&pm, 10);
+    WKTReader r(&gf);
+    WKTWriter w;
+
+    gInput = r.read(MgUtil::WideCharToMultiByte(inputWKt));
+
+    switch (algorithm)
+    {
+    case MgGeometrySimplificationAlgorithmType::DouglasPeucker:
+        gOutput = geos::simplify::DouglasPeuckerSimplifier::simplify(gInput, tolerance);
+        break;
+    case MgGeometrySimplificationAlgorithmType::TopologyPreserving:
+        gOutput = geos::simplify::TopologyPreservingSimplifier::simplify(gInput, tolerance);
+        break;
+    }
+
+    Geometry* gSimp = gOutput.get();
+    std::string mbSimpWkt = w.write(gSimp);
+
+    if (mbSimpWkt.find("EMPTY", 0) == string::npos)
+    {
+        MgWktReaderWriter rdrWrt;
+        simplified = rdrWrt.Read(MgUtil::MultiByteToWideChar(mbSimpWkt));
+    }
+    
+    MG_GEOMETRY_CATCH_AND_THROW(L"MgGeometrySimplifier.Simplify")
+    return simplified.Detach();
+}
+
+//////////////////////////////////////////////
+// Dispose this object.
+//
+void MgGeometrySimplifier::Dispose()
+{
+    delete this;
+}
+
+//////////////////////////////////////////////////////////////////
+// Get the unique identifier for the class
+//
+INT32 MgGeometrySimplifier::GetClassId()
+{
+    return m_cls_id;
+}
\ No newline at end of file

Copied: sandbox/jng/clean_json/Common/Geometry/GeometrySimplifier.h (from rev 9143, trunk/MgDev/Common/Geometry/GeometrySimplifier.h)
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/GeometrySimplifier.h	                        (rev 0)
+++ sandbox/jng/clean_json/Common/Geometry/GeometrySimplifier.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -0,0 +1,138 @@
+//
+//  Copyright (C) 2004-2015 by Autodesk, Inc.
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of version 2.1 of the GNU Lesser
+//  General Public License as published by the Free Software Foundation.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef _MGGEOMETRYSIMPLIFIER_H_
+#define _MGGEOMETRYSIMPLIFIER_H_
+
+/// \defgroup MgAgfReaderWriter MgAgfReaderWriter
+/// \ingroup Geometry_Module_classes
+/// \{
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+/// \brief
+/// The MgGeometrySimplifier class provides the ability to simplify MgGeometry instances.
+///
+/// <!-- Example (PHP) -->
+/// \htmlinclude PHPExampleTop.html
+/// \code
+/// $wktRw = new MgWktReaderWriter();
+/// $geom = $wktRw->Read("LINESTRING (0 5, 1 5, 2 5, 5 5)");
+/// $simp = new MgGeometrySimplifier();
+/// $simplified = $simp->Simplify($geom, 10.0, MgGeometrySimplificationAlgorithmType::DouglasPeucker);
+/// \endcode
+/// \htmlinclude ExampleBottom.html
+///
+/// <!-- Example (C#) -->
+/// \htmlinclude CSharpExampleTop.html
+/// \code
+/// using OSGeo.MapGuide;
+/// ...
+/// MgWktReaderWriter wktRw = new MgWktReaderWriter();
+/// MgGeometry geom = wktRw.Read("LINESTRING (0 5, 1 5, 2 5, 5 5)");
+/// MgGeometrySimplifier simp = new MgGeometrySimplifier();
+/// MgGeometry simplified = simp.Simplify(geom, 10.0, MgGeometrySimplificationAlgorithmType.DouglasPeucker);
+/// \endcode
+/// \htmlinclude ExampleBottom.html
+///
+/// <!-- Example (Java) -->
+/// \htmlinclude JavaExampleTop.html
+/// \code
+/// import org.osgeo.mapguide;
+/// ...
+/// MgWktReaderWriter wktRw = new MgWktReaderWriter();
+/// MgGeometry geom = wktRw.Read("LINESTRING (0 5, 1 5, 2 5, 5 5)");
+/// MgGeometrySimplifier simp = new MgGeometrySimplifier();
+/// MgGeometry simplified = simp.Simplify(geom, 10.0, MgGeometrySimplificationAlgorithmType.DouglasPeucker);
+/// \endcode
+/// \htmlinclude ExampleBottom.html
+///
+class MG_GEOMETRY_API MgGeometrySimplifier : public MgGuardDisposable
+{
+    DECLARE_CLASSNAME(MgGeometrySimplifier)
+
+PUBLISHED_API:
+    ///////////////////////////////////////////////////////////////////////////
+    /// \brief
+    /// Creates an MgGeometrySimplifier object
+    ///
+    /// <!-- Syntax in .Net, Java, and PHP -->
+    /// \htmlinclude DotNetSyntaxTop.html
+    /// MgGeometrySimplifier();
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude JavaSyntaxTop.html
+    /// MgGeometrySimplifier();
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude PHPSyntaxTop.html
+    /// MgGeometrySimplifier();
+    /// \htmlinclude SyntaxBottom.html
+    ///
+    MgGeometrySimplifier();
+
+    ///////////////////////////////////////////////////////////////////////////
+    /// \brief
+    /// Simplifies the given geometry using the specified algorithm and tolerance
+    ///
+    /// <!-- Syntax in .Net, Java, and PHP -->
+    /// \htmlinclude DotNetSyntaxTop.html
+    /// virtual MgGeometry Simplify(MgGeometry geom, double tolerance, int algorithm);
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude JavaSyntaxTop.html
+    /// virtual MgGeometry Simplify(MgGeometry geom, double tolerance, int algorithm);
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude PHPSyntaxTop.html
+    /// virtual MgGeometry Simplify(MgGeometry geom, double tolerance, int algorithm);
+    /// \htmlinclude SyntaxBottom.html
+    ///
+    /// \param geom (MgGeometry)
+    /// The geometry instance to be simplified
+    ///
+    /// \param tolerance (double)
+    /// The tolerance factor to simplify by
+    ///
+    /// \param algorithm (int)
+    /// The simplification algorithm to use. Use any value from MgGeometrySimplificationAlgorithmType
+    ///
+    /// \return
+    /// A simplified MgGeometry instance or null if simpification results in an empty geometry
+    ///
+    MgGeometry* Simplify(MgGeometry* geom, double tolerance, INT32 algorithm);
+
+INTERNAL_API:
+
+    //////////////////////////////////////////////////////////////////
+    /// \brief
+    /// Get the unique identifier for the class
+    ///
+    /// \return
+    /// Class Identifider.
+    ///
+    virtual INT32 GetClassId();
+
+protected:
+
+    //////////////////////////////////////////////
+    /// \brief
+    /// Dispose this object.
+    ///
+    virtual void Dispose();
+
+CLASS_ID:
+    static const INT32 m_cls_id = Geometry_GeometrySimplifier;
+};
+/// \}
+
+#endif //_MGGEOMETRYSIMPLIFIER_H_

Modified: sandbox/jng/clean_json/Common/Geometry/Makefile.am
===================================================================
--- sandbox/jng/clean_json/Common/Geometry/Makefile.am	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Geometry/Makefile.am	2017-04-11 15:36:32 UTC (rev 9144)
@@ -83,6 +83,7 @@
   GeometryCollection.cpp \
   GeometryFactory.cpp \
   GeometryUtil.cpp \
+  GeometrySimplifier.cpp \
   GeosUtil.cpp \
   LinearRing.cpp \
   LinearRingCollection.cpp \
@@ -244,6 +245,8 @@
   GeometryExceptionDef.h \
   GeometryFactory.h \
   GeometryType.h \
+  GeometrySimplifier.h \
+  GeometrySimplificationAlgorithmType.h \
   GeometryUtil.h \
   GeosUtil.h \
   LinearRing.h \

Modified: sandbox/jng/clean_json/Common/MapGuideCommon/Controller/HtmlController.cpp
===================================================================
--- sandbox/jng/clean_json/Common/MapGuideCommon/Controller/HtmlController.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/MapGuideCommon/Controller/HtmlController.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -492,22 +492,22 @@
                 MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(ldf.get());
                 if(vl != NULL)
                 {
+                    STRING pTypeStr;
                     MdfModel::NameStringPairCollection* pmappings = vl->GetPropertyMappings();
                     for (int j=0; j<pmappings->GetCount(); j++)
                     {
                         MdfModel::NameStringPair* m = pmappings->GetAt(j);
-                        propNames->Add(m->GetName());
-                        displayNameMap.insert(std::make_pair(m->GetName(), m->GetValue()));
-                    }
-                    STRING pTypeStr;
-                    for (int k = 0; k < clsProps->GetCount(); k++)
-                    {
-                        Ptr<MgPropertyDefinition> propDef = clsProps->GetItem(k);
-                        STRING propName = propDef->GetName();
-                        DisplayNameMap::iterator it = displayNameMap.find(propName);
-                        //Skip properties without display mappings
-                        if (it == displayNameMap.end())
+                        const MdfModel::MdfString& name = m->GetName();
+                        const MdfModel::MdfString& dispName = m->GetValue();
+                        propNames->Add(name);
+                        displayNameMap.insert(std::make_pair(name, dispName));
+
+                        INT32 propIndex = clsProps->IndexOf(name);
+                        if (propIndex < 0) {
                             continue;
+                        }
+
+                        Ptr<MgPropertyDefinition> propDef = clsProps->GetItem(propIndex);
                         INT32 pdType = propDef->GetPropertyType();
                         INT32 pType = MgPropertyType::Null;
                         if (pdType == MgFeaturePropertyType::DataProperty)
@@ -521,19 +521,20 @@
                         MgUtil::Int32ToString(pType, pTypeStr);
                         xmlOut.append(L"<Property>\n");
                         xmlOut.append(L"<Name>");
-                        xmlOut.append(it->first);
+                        xmlOut.append(name);
                         xmlOut.append(L"</Name>\n");
                         xmlOut.append(L"<Type>");
                         xmlOut.append(pTypeStr);
                         xmlOut.append(L"</Type>\n");
                         xmlOut.append(L"<DisplayName>");
-                        xmlOut.append(it->second);
+                        xmlOut.append(dispName);
                         xmlOut.append(L"</DisplayName>\n");
                         xmlOut.append(L"</Property>\n");
                     }
                 }
             }
-            propNames->Add(selLayer->GetFeatureGeometryName()); //Don't forget geometry
+            if (!propNames->Contains(selLayer->GetFeatureGeometryName()))
+                propNames->Add(selLayer->GetFeatureGeometryName()); //Don't forget geometry
             xmlOut.append(L"</LayerMetadata>\n");
             Ptr<MgReader> reader = selectionSet->GetSelectedFeatures(selLayer, selLayer->GetFeatureClassName(), propNames);
             while(reader->ReadNext())
@@ -612,7 +613,7 @@
                                 //ToXmlString() won't work with dates before Jan 1, 1970, so use yyyy-mm-dd hh:mm:ss
                                 STRING dateStr;
                                 STRING str;
-                                if (dt->IsDate())
+                                if (dt->GetYear() != -1)
                                 {
                                     MgUtil::Int32ToString(dt->GetYear(), str);
                                     dateStr += str;
@@ -625,9 +626,9 @@
                                     MgUtil::PadLeft(str, 2, L'0');
                                     dateStr += str;
                                 }
-                                if (dt->IsTime())
+                                if (dt->GetHour() != -1)
                                 {
-                                    if (dt->IsDate())
+                                    if (dt->GetYear() != -1)
                                     {
                                         dateStr += L" ";
                                     }

Modified: sandbox/jng/clean_json/Common/MapGuideCommon/MapGuideCommon.rc
===================================================================
--- sandbox/jng/clean_json/Common/MapGuideCommon/MapGuideCommon.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/MapGuideCommon/MapGuideCommon.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapGuideCommon Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgMapGuideCommon"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgMapGuideCommon.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Common/MapGuideCommon/MapLayer/Map.cpp
===================================================================
--- sandbox/jng/clean_json/Common/MapGuideCommon/MapLayer/Map.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/MapGuideCommon/MapLayer/Map.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -129,6 +129,19 @@
     Create(NULL, mapDefinition, mapName);
 }
 
+void MgMap::Create(MgResourceIdentifier* mapDefinition, CREFSTRING mapName, INT32 displayWidth, INT32 displayHeight, double x, double y, double scale, INT32 dpi)
+{
+    Create(NULL, mapDefinition, mapName);
+    m_displayWidth = displayWidth;
+    m_displayHeight = displayHeight;
+    MgGeometryFactory gf;
+    Ptr<MgCoordinate> coord = gf.CreateCoordinateXY(x, y);
+    Ptr<MgPoint> pt = gf.CreatePoint(coord);
+    SetViewCenter(pt);
+    m_scale = scale;
+    m_displayDpi = dpi;
+}
+
 void MgMap::CreateFromMapDefinition(MgResourceService* resourceService, MgResourceIdentifier* mapDefinition, CREFSTRING mapName)
 {
     MG_TRY()

Modified: sandbox/jng/clean_json/Common/MapGuideCommon/MapLayer/Map.h
===================================================================
--- sandbox/jng/clean_json/Common/MapGuideCommon/MapLayer/Map.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/MapGuideCommon/MapLayer/Map.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -353,6 +353,63 @@
 
     //////////////////////////////////////////////////////////////////
     /// \brief
+    /// Initializes a new MgMap object given a map definition or tile set
+    /// definition and a name for the map with initial display parameters set. 
+    /// This method is used for MapGuide Viewers or for offline map production.
+    ///
+    /// \remarks
+    /// If creating a MgMap object from a tile set definition, only "Default" is the
+    /// acceptable tile provider. Any other provider will cause this method to
+    /// throw a MgUnsupportedTileProviderException
+    ///
+    /// <!-- Syntax in .Net, Java, and PHP -->
+    /// \htmlinclude DotNetSyntaxTop.html
+    /// void Create(MgResourceIdentifier mapDefinition, string mapName, int displayWidth, int displayHeight, double x, double y, double scale, int dpi);
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude JavaSyntaxTop.html
+    /// void Create(MgResourceIdentifier mapDefinition, String mapName, int displayWidth, int displayHeight, double x, double y, double scale, int dpi);
+    /// \htmlinclude SyntaxBottom.html
+    /// \htmlinclude PHPSyntaxTop.html
+    /// void Create(MgResourceIdentifier mapDefinition, string mapName, int displayWidth, int displayHeight, double x, double y, double scale, int dpi);
+    /// \htmlinclude SyntaxBottom.html
+    ///
+    /// \param resource
+    /// An MgResourceIdentifier that specifies the
+    /// location of the map definition in a resource
+    /// repository.
+    /// \param mapName
+    /// A string that specifies the name of the map.
+    /// \param displayWidth
+    /// The display width to initially set for the map
+    /// \param displayHeight
+    /// The display height to initially set for the map
+    /// \param x
+    /// The view center X coordinate to initially set for the map
+    /// \param y
+    /// The view center Y coordinate to initially set for the map
+    /// \param scale
+    /// The view scale to initially set for the map
+    /// \param dpi
+    /// The display DPI to initially set for the map
+    ///
+    /// \return
+    /// Returns nothing.
+    ///
+    /// <!-- Example (PHP) -->
+    /// \htmlinclude PHPExampleTop.html
+    /// \code
+    /// // Assuming the site connection has already been intialized
+    /// $resourceID = new  MgResourceIdentifier('Library://Calgary/Maps/Calgary.MapDefinition');
+    /// $map = new MgMap($site);
+    /// // Initializes the map to be centered on the Calgary CBD at 1:5000 scale with a DPI of 96
+    /// $map->Create($resourceID, 'Calgary', 640, 480, -114.054565, 51.068369, 5000.0, 96);
+    /// \endcode
+    /// \htmlinclude ExampleBottom.html
+    ///
+    virtual void Create(MgResourceIdentifier* resource, CREFSTRING mapName, INT32 displayWidth, INT32 displayheight, double x, double y, double scale, INT32 dpi);
+
+    //////////////////////////////////////////////////////////////////
+    /// \brief
     /// Loads the map object from a session repository.
     ///
     /// \remarks

Modified: sandbox/jng/clean_json/Common/MdfModel/MdfModel.rc
===================================================================
--- sandbox/jng/clean_json/Common/MdfModel/MdfModel.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/MdfModel/MdfModel.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -48,8 +48,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -66,12 +66,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MdfModel Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgMdfModel"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgMdfModel.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Common/MdfParser/MdfParser.rc
===================================================================
--- sandbox/jng/clean_json/Common/MdfParser/MdfParser.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/MdfParser/MdfParser.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MdfParser Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgMdfParser"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgMdfParser.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Common/PlatformBase/MapLayer/SelectionBase.h
===================================================================
--- sandbox/jng/clean_json/Common/PlatformBase/MapLayer/SelectionBase.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/PlatformBase/MapLayer/SelectionBase.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -538,6 +538,12 @@
     ///
     STRING GetResourceName(CREFSTRING sessionId, CREFSTRING mapName);
 
+EXTERNAL_API:
+    /////////////////////////////////////////
+    /// Set the map object. To be used ONLY for deserialization
+    //
+    void SetMap(MgMapBase* map);
+
 INTERNAL_API:
 
 
@@ -579,11 +585,6 @@
     virtual bool CanSetName();
 
     /////////////////////////////////////////
-    /// Set the map object. To be used ONLY for deserialization
-    //
-    void SetMap(MgMapBase* map);
-
-    /////////////////////////////////////////
     /// Write selection as XML document
     //
     STRING ToXml(bool withXmlDecl);

Modified: sandbox/jng/clean_json/Common/PlatformBase/PlatformBase.rc
===================================================================
--- sandbox/jng/clean_json/Common/PlatformBase/PlatformBase.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/PlatformBase/PlatformBase.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "PlatformBase Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgPlatformBase"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgPlatformBase.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Common/PlatformBase/Services/ResourceDefs.cpp
===================================================================
--- sandbox/jng/clean_json/Common/PlatformBase/Services/ResourceDefs.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/PlatformBase/Services/ResourceDefs.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,5 +1,5 @@
 //
-//  Copyright (C) 2004-2011 by Autodesk, Inc.
+//  Copyright (C) 2017 by Autodesk, Inc.
 //
 //  This library is free software; you can redistribute it and/or
 //  modify it under the terms of version 2.1 of the GNU Lesser
@@ -69,6 +69,10 @@
 const STRING MgResourceTag::LoginPassword           = L"%MG_LOGIN_PASSWORD%";
 const STRING MgResourceTag::Username                = L"%MG_USERNAME%";
 const STRING MgResourceTag::Password                = L"%MG_PASSWORD%";
+const STRING MgResourceTag::ProxyServer             = L"%MG_PROXY_SERVER%";
+const STRING MgResourceTag::ProxyPort               = L"%MG_PROXY_PORT%";
+const STRING MgResourceTag::ProxyUsername           = L"%MG_PROXY_USERNAME%";
+const STRING MgResourceTag::ProxyPassword           = L"%MG_PROXY_PASSWORD%";
 const STRING MgResourceTag::DataFilePath            = L"%MG_DATA_FILE_PATH%";
 const STRING MgResourceTag::TileCachePath           = L"%MG_TILE_CACHE_PATH%";
 const STRING MgResourceTag::DataPathAliasBegin      = L"%MG_DATA_PATH_ALIAS[";
@@ -79,6 +83,9 @@
 /// Resource data names
 ///
 const STRING MgResourceDataName::UserCredentials    = L"MG_USER_CREDENTIALS";
+const STRING MgResourceDataName::ProxyServerName    = L"MG_PROXY_SERVER";
+const STRING MgResourceDataName::ProxyServerPort    = L"MG_PROXY_PORT";
+const STRING MgResourceDataName::ProxyCredentials   = L"MG_PROXY_CREDENTIALS";
 
 
 ///////////////////////////////////////////////////////////////////////////////

Modified: sandbox/jng/clean_json/Common/PlatformBase/Services/ResourceDefs.h
===================================================================
--- sandbox/jng/clean_json/Common/PlatformBase/Services/ResourceDefs.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/PlatformBase/Services/ResourceDefs.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,5 +1,5 @@
 //
-//  Copyright (C) 2004-2011 by Autodesk, Inc.
+//  Copyright (C) 2017 by Autodesk, Inc.
 //
 //  This library is free software; you can redistribute it and/or
 //  modify it under the terms of version 2.1 of the GNU Lesser
@@ -366,7 +366,30 @@
     ///
     static const STRING Password;       ///\if INTERNAL value("%MG_PASSWORD%") \endif
 
+	////////////////////////////////////////////////////////////////
+	/// \brief
+	/// Replaced with the proxy server name.
+	///
+	static const STRING ProxyServer;       ///\if INTERNAL value("%MG_PROXY_SERVER%") \endif
 
+	////////////////////////////////////////////////////////////////
+	/// \brief
+	/// Replaced with the proxy server port.
+	///
+	static const STRING ProxyPort;       ///\if INTERNAL value("%MG_PROXY_PORT%") \endif
+
+	////////////////////////////////////////////////////////////////
+	/// \brief
+	/// Replaced with the proxy server user name.
+	///
+	static const STRING ProxyUsername;       ///\if INTERNAL value("%MG_PROXY_USERNAME%") \endif
+
+	////////////////////////////////////////////////////////////////
+	/// \brief
+	/// Replaced with the proxy server password.
+	///
+	static const STRING ProxyPassword;       ///\if INTERNAL value("%MG_PROXY_PASSWORD%") \endif
+
     ////////////////////////////////////////////////////////////////
     /// \brief
     /// Replaced with the location of data files associated with the
@@ -404,16 +427,49 @@
 class MG_PLATFORMBASE_API MgResourceDataName
 {
 PUBLISHED_API:
+	/////////////////////////////////////////////////////////////////
+	/// \brief
+	/// Data name for adding default credentials to a resource.
+	///
+	/// \note1
+	///
+	/// \remarks
+	/// For an example, see \link MgResourceService::SetResourceData SetResourceData \endlink.
+	///
+	static const STRING UserCredentials;    ///\if INTERNAL value("MG_USER_CREDENTIALS") \endif
+
     /////////////////////////////////////////////////////////////////
     /// \brief
-    /// Data name for adding default credentials to a resource.
+    /// Data name for adding proxy server name to a resource.
     ///
     /// \note1
     ///
     /// \remarks
     /// For an example, see \link MgResourceService::SetResourceData SetResourceData \endlink.
     ///
-    static const STRING UserCredentials;    ///\if INTERNAL value("MG_USER_CREDENTIALS") \endif
+    static const STRING ProxyServerName;    ///\if INTERNAL value("MG_PROXY_SERVER") \endif
+
+    /////////////////////////////////////////////////////////////////
+    /// \brief
+    /// Data name for adding proxy server port to a resource.
+    ///
+    /// \note1
+    ///
+    /// \remarks
+    /// For an example, see \link MgResourceService::SetResourceData SetResourceData \endlink.
+    ///
+	static const STRING ProxyServerPort;    ///\if INTERNAL value("MG_PROXY_PORT") \endif
+
+    /////////////////////////////////////////////////////////////////
+    /// \brief
+    /// Data name for adding proxy credentials to a resource.
+    ///
+    /// \note1
+    ///
+    /// \remarks
+    /// For an example, see \link MgResourceService::SetResourceData SetResourceData \endlink.
+    ///
+	static const STRING ProxyCredentials;    ///\if INTERNAL value("MG_PROXY_CREDENTIALS") \endif
 };
 
 

Modified: sandbox/jng/clean_json/Common/ProductVersion.h
===================================================================
--- sandbox/jng/clean_json/Common/ProductVersion.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/ProductVersion.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -18,7 +18,7 @@
 #ifndef PRODUCTVERSION_H_
 #define PRODUCTVERSION_H_
 
-const STRING ProductVersion = L"3.0.0.0";
+const STRING ProductVersion = L"3.1.0.0";
 const STRING ApiVersion     = L"2.6";  // Major.Minor only
 
 #endif // PRODUCTVERSION_H_

Modified: sandbox/jng/clean_json/Common/Renderers/AGGRenderer.cpp
===================================================================
--- sandbox/jng/clean_json/Common/Renderers/AGGRenderer.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Renderers/AGGRenderer.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1806,9 +1806,12 @@
         // clear the affected region of the alpha mask
         agg::gray8 cc(0);
 
-        unsigned width = (int)imaxx - (int)iminx + 1;
-        for (int y=iminy; y<=imaxy; ++y)
-            c()->mask_pixf->copy_hline(iminx, y, width, cc);
+        if (imaxx >= iminx)
+        {        
+            unsigned width = (int)imaxx - (int)iminx + 1;
+            for (int y = iminy; y <= imaxy; ++y)
+                c()->mask_pixf->copy_hline(iminx, y, width, cc);
+        }
 
         // render the alpha mask polygon
         c()->mask_ren.color(agg::gray8(255));

Modified: sandbox/jng/clean_json/Common/Renderers/Renderers.rc
===================================================================
--- sandbox/jng/clean_json/Common/Renderers/Renderers.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Renderers/Renderers.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "Renderers Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgRenderers"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgRenderers.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Common/Schema/RuntimeMap-2.6.0.xsd
===================================================================
--- sandbox/jng/clean_json/Common/Schema/RuntimeMap-2.6.0.xsd	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Schema/RuntimeMap-2.6.0.xsd	2017-04-11 15:36:32 UTC (rev 9144)
@@ -221,7 +221,7 @@
       </xs:element>
       <xs:element name="FeatureStyle" type="FeatureStyleInfo" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
-          <xs:documentation>The feature style for a given geometry type.</xs:documentation>
+          <xs:documentation>The feature style for a given geometry type. This is empty for drawing and raster layers</xs:documentation>
         </xs:annotation>
       </xs:element>
     </xs:sequence>

Modified: sandbox/jng/clean_json/Common/Schema/RuntimeMap-3.0.0.xsd
===================================================================
--- sandbox/jng/clean_json/Common/Schema/RuntimeMap-3.0.0.xsd	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Schema/RuntimeMap-3.0.0.xsd	2017-04-11 15:36:32 UTC (rev 9144)
@@ -237,7 +237,7 @@
       </xs:element>
       <xs:element name="FeatureStyle" type="FeatureStyleInfo" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
-          <xs:documentation>The feature style for a given geometry type.</xs:documentation>
+          <xs:documentation>The feature style for a given geometry type. This is empty for drawing and raster layers</xs:documentation>
         </xs:annotation>
       </xs:element>
     </xs:sequence>

Modified: sandbox/jng/clean_json/Common/Stylization/Stylization.rc
===================================================================
--- sandbox/jng/clean_json/Common/Stylization/Stylization.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Stylization/Stylization.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "Stylization Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgStylization"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgStylization.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Common/Stylization/StylizationEngine.cpp
===================================================================
--- sandbox/jng/clean_json/Common/Stylization/StylizationEngine.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Stylization/StylizationEngine.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -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: sandbox/jng/clean_json/Common/Stylization/StylizationUtil.cpp
===================================================================
--- sandbox/jng/clean_json/Common/Stylization/StylizationUtil.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Common/Stylization/StylizationUtil.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -707,6 +707,8 @@
 
                     // point usage rotation - assume geometry angle is zero
                     double angleRad = ptStyle->angleRad;
+                    // also account for any viewport rotation
+                    angleRad += pSERenderer->GetWorldToScreenRotation();
                     xformStyle.rotate(angleRad);
 
                     // symbol instance offset - must scale this by [S_mm], and [S_a]


Property changes on: sandbox/jng/clean_json/Desktop
___________________________________________________________________
Modified: svn:ignore
   - bin
lib
obj
MgDesktopApi.ncb
MgDesktopApi.suo
MgDesktopApi_VS2010.sdf
MgDesktopApi_VS2010.suo
MgDesktopDotNet_VS2010.suo
MgDesktopDotNet.suo
*.sdf
*.suo

   + bin
lib
obj
MgDesktopApi.ncb
MgDesktopApi.suo
MgDesktopApi_VS2010.sdf
MgDesktopApi_VS2010.suo
MgDesktopDotNet_VS2010.suo
MgDesktopDotNet.suo
*.sdf
*.suo
.vs
*.opendb

Modified: svn:mergeinfo
   - /branches/2.4/MgDev/Desktop:7152
/branches/2.5/MgDev/Desktop:7511
/branches/2.6/MgDev/Desktop:8276-8286,8314-8315
/branches/3.0/MgDev/Desktop:8710
/sandbox/jng/convenience_apis/Desktop:8271-8363
/sandbox/jng/createruntimemap/Desktop:7486-7555
/sandbox/jng/dwftk/Desktop:8321-8324,8328-8329,8331,8352
/sandbox/jng/geos34x/Desktop:8256-8259
/sandbox/jng/v30/Desktop:8215-8216,8218-8219
/sandbox/rfc94/Desktop:5099-5163
   + /branches/2.4/MgDev/Desktop:7152
/branches/2.5/MgDev/Desktop:7511
/branches/2.6/MgDev/Desktop:8276-8286,8314-8315
/branches/3.0/MgDev/Desktop:8710
/sandbox/jng/convenience_apis/Desktop:8271-8363
/sandbox/jng/createruntimemap/Desktop:7486-7555
/sandbox/jng/dwftk/Desktop:8321-8324,8328-8329,8331,8352
/sandbox/jng/geos34x/Desktop:8256-8259
/sandbox/jng/v30/Desktop:8215-8216,8218-8219
/sandbox/rfc94/Desktop:5099-5163
/trunk/MgDev/Desktop:8818-9143

Modified: sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/DesktopApi.vcxproj
===================================================================
--- sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/DesktopApi.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/DesktopApi.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -22,29 +22,30 @@
     <ProjectName>MapGuideDesktopUnmanagedApi</ProjectName>
     <ProjectGuid>{E706FB1C-4431-4508-8A2F-239A143EFA1C}</ProjectGuid>
     <RootNamespace>DesktopApi</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -65,13 +66,13 @@
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)obj\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\bin\release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\obj\release\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\bin\release64\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\obj\release64\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <PreBuildEvent>

Modified: sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/DesktopDotNetApi.vcxproj
===================================================================
--- sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/DesktopDotNetApi.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/DesktopDotNetApi.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -31,28 +31,28 @@
     <UseDebugLibraries>true</UseDebugLibraries>
     <OutDir>..\..\bin\debug</OutDir>
     <IntDir>..\..\obj\debug</IntDir>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Makefile</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <OutDir>..\..\bin\debug64</OutDir>
     <IntDir>..\..\obj\debug64</IntDir>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Makefile</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <OutDir>..\..\bin\release</OutDir>
     <IntDir>..\..\obj\release</IntDir>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Makefile</ConfigurationType>
     <UseDebugLibraries>false</UseDebugLibraries>
     <OutDir>..\..\bin\release64</OutDir>
     <IntDir>..\..\obj\release64</IntDir>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">

Modified: sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/Partials/AssemblyInfo.cs
===================================================================
--- sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/Partials/AssemblyInfo.cs	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/DotNet/Partials/AssemblyInfo.cs	2017-04-11 15:36:32 UTC (rev 9144)
@@ -45,9 +45,9 @@
 // You can specify all the values or you can default the Revision and Build Numbers
 // by using the '*' as shown below:
 
-[assembly: AssemblyVersion("2.6.0.0")]
-[assembly: AssemblyFileVersion("2.6.0.0")]
-[assembly: AssemblyInformationalVersion("2.6.0.0")]
+[assembly: AssemblyVersion("3.1.0.0")]
+[assembly: AssemblyFileVersion("3.1.0.0")]
+[assembly: AssemblyInformationalVersion("3.1.0.0")]
 
 //
 // In order to sign your assembly you must specify a key to use. Refer to the

Modified: sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/JavaApiEx/JavaApiEx.rc
===================================================================
--- sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/JavaApiEx/JavaApiEx.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/JavaApiEx/JavaApiEx.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapGuideJavaApiEx Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MapGuideJavaApiEx"
             VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
             VALUE "OriginalFilename", "MapGuideJavaApiEx.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/JavaApiEx/JavaApiEx.vcxproj
===================================================================
--- sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/JavaApiEx/JavaApiEx.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/DesktopUnmanagedApi/JavaApiEx/JavaApiEx.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -27,22 +27,22 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">

Modified: sandbox/jng/clean_json/Desktop/MapViewer/Properties/AssemblyInfo.cs
===================================================================
--- sandbox/jng/clean_json/Desktop/MapViewer/Properties/AssemblyInfo.cs	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/MapViewer/Properties/AssemblyInfo.cs	2017-04-11 15:36:32 UTC (rev 9144)
@@ -31,8 +31,8 @@
 //
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
-// [assembly: AssemblyVersion("2.6.0.0")]
-[assembly: AssemblyVersion("2.6.0.0")]
-[assembly: AssemblyFileVersion("2.6.0.0")]
+// [assembly: AssemblyVersion("3.1.0.0")]
+[assembly: AssemblyVersion("3.1.0.0")]
+[assembly: AssemblyFileVersion("3.1.0.0")]
 
 [assembly: AssemblyKeyFile("..\\DesktopUnmanagedApi\\DotNet\\MgDesktop.snk")]

Modified: sandbox/jng/clean_json/Desktop/MapViewer.Desktop/Properties/AssemblyInfo.cs
===================================================================
--- sandbox/jng/clean_json/Desktop/MapViewer.Desktop/Properties/AssemblyInfo.cs	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/MapViewer.Desktop/Properties/AssemblyInfo.cs	2017-04-11 15:36:32 UTC (rev 9144)
@@ -31,8 +31,8 @@
 //
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
-// [assembly: AssemblyVersion("2.6.0.0")]
-[assembly: AssemblyVersion("2.6.0.0")]
-[assembly: AssemblyFileVersion("2.6.0.0")]
+// [assembly: AssemblyVersion("3.1.0.0")]
+[assembly: AssemblyVersion("3.1.0.0")]
+[assembly: AssemblyFileVersion("3.1.0.0")]
 
 [assembly: AssemblyKeyFile("..\\DesktopUnmanagedApi\\DotNet\\MgDesktop.snk")]

Modified: sandbox/jng/clean_json/Desktop/MgAppLayout/Properties/AssemblyInfo.cs
===================================================================
--- sandbox/jng/clean_json/Desktop/MgAppLayout/Properties/AssemblyInfo.cs	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/MgAppLayout/Properties/AssemblyInfo.cs	2017-04-11 15:36:32 UTC (rev 9144)
@@ -31,6 +31,6 @@
 //
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
-// [assembly: AssemblyVersion("2.6.0.0")]
-[assembly: AssemblyVersion("2.6.0.0")]
-[assembly: AssemblyFileVersion("2.6.0.0")]
+// [assembly: AssemblyVersion("3.1.0.0")]
+[assembly: AssemblyVersion("3.1.0.0")]
+[assembly: AssemblyFileVersion("3.1.0.0")]

Modified: sandbox/jng/clean_json/Desktop/MgDesktop/MgDesktop.vcxproj
===================================================================
--- sandbox/jng/clean_json/Desktop/MgDesktop/MgDesktop.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/MgDesktop/MgDesktop.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -21,31 +21,32 @@
   <PropertyGroup Label="Globals">
     <ProjectGuid>{CBC0339F-E68B-48BA-9059-945483BEBDCA}</ProjectGuid>
     <RootNamespace>MgDesktop</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -66,16 +67,16 @@
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\obj\debug\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\bin\release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\obj\release\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\bin\release64\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\obj\release64\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

Modified: sandbox/jng/clean_json/Desktop/MgDesktop/changelog.txt
===================================================================
--- sandbox/jng/clean_json/Desktop/MgDesktop/changelog.txt	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/MgDesktop/changelog.txt	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,3 +1,11 @@
+Latest
+======
+
+API Changelog:
+
+ - MgCoordinateSystemGeodeticTransformGridFileFormat
+    - New GEOCON constant value added
+
 3.0.0.8701 (10 Jul 2015)
 ========================
 

Modified: sandbox/jng/clean_json/Desktop/MgDesktopApi.sln
===================================================================
--- sandbox/jng/clean_json/Desktop/MgDesktopApi.sln	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/MgDesktopApi.sln	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,6 +1,7 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2012 for Windows Desktop
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.22823.1
+MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Foundation", "..\Common\Foundation\Foundation.vcxproj", "{A82ADC7D-4DA4-42F2-9BF6-DF5DCFB44425}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Geometry", "..\Common\Geometry\Geometry.vcxproj", "{D954DAAC-E305-40CE-B3F3-C229A0BEF4F0}"

Modified: sandbox/jng/clean_json/Desktop/UnitTest/UnitTest.vcxproj
===================================================================
--- sandbox/jng/clean_json/Desktop/UnitTest/UnitTest.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Desktop/UnitTest/UnitTest.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -21,29 +21,30 @@
   <PropertyGroup Label="Globals">
     <ProjectGuid>{67505883-F667-4C18-BCCA-63F3B76C64FF}</ProjectGuid>
     <RootNamespace>UnitTest</RootNamespace>
+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
+    <PlatformToolset>v140</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -64,13 +65,13 @@
   <PropertyGroup>
     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)obj\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\bin\release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\obj\release\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\bin\release64\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\obj\release64\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\obj\$(Platform)\$(Configuration)\$(ProjectName)\</IntDir>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>

Modified: sandbox/jng/clean_json/Doc/devguide/source/revision_history.rst
===================================================================
--- sandbox/jng/clean_json/Doc/devguide/source/revision_history.rst	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Doc/devguide/source/revision_history.rst	2017-04-11 15:36:32 UTC (rev 9144)
@@ -10,9 +10,12 @@
 +---------+-----------------+-----------------+--------------------------------------------------------------+
 | Version | Authors         | Date            | Summary of Changes                                           |
 +=========+=================+=================+==============================================================+
+| 2.0.2   | Jackie Ng       | May 2016        | Fix malformed revision history table and add section about   |
+|         |                 |                 | mapguide-rest in supplemental development options            |
++---------+-----------------+-----------------+--------------------------------------------------------------+
 | 2.0.1   | Jackie Ng       | Jul 2014        | Updated code sample in section "Working with Feature Data"   |
 |         |                 |                 | to reflect the updated Sheboygan sample data set             |
-+=========+=================+=================+==============================================================+
++---------+-----------------+-----------------+--------------------------------------------------------------+
 | 2.0     | Jackie Ng       |                 | First version of developer's guide in source form            |
 |         |                 |                 |                                                              |
 |         |                 |                 | Added .net and Java code samples to match PHP examples       |

Modified: sandbox/jng/clean_json/Doc/devguide/source/supplemental_development.rst
===================================================================
--- sandbox/jng/clean_json/Doc/devguide/source/supplemental_development.rst	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Doc/devguide/source/supplemental_development.rst	2017-04-11 15:36:32 UTC (rev 9144)
@@ -35,4 +35,21 @@
 
 This library is used by the MapGuide Maestro application, and can be used in your own applications.
 
-Visit `the Maestro project homepage <http://trac.osgeo.org/mapguide/wiki/maestro>`_ for more information
\ No newline at end of file
+Visit `the Maestro project homepage <http://trac.osgeo.org/mapguide/wiki/maestro>`_ for more information
+
+.. _mapguiderest:
+
+mapguide-rest
+-------------
+
+mapguide-rest provides a REST API for MapGuide and includes a framework for easy publishing of spatial data.
+
+The REST API allows for any library capable of making HTTP request to work with MapGuide.
+
+mapguide-rest can be deployed on both Windows and Linux instances of MapGuide.
+
+Visit `the mapguide-rest homepage <https://github.com/jumpinjackie/mapguide-rest>`_ for more information
+
+.. note::
+
+    mapguide-rest requires a version of MapGuide that bundles PHP 5.3 or newer.
\ No newline at end of file


Property changes on: sandbox/jng/clean_json/Oem
___________________________________________________________________
Modified: svn:ignore
   - oem.sdf
*.suo

   + oem.sdf
*.suo
.vs



Property changes on: sandbox/jng/clean_json/Oem/ACE/ACE_wrappers/lib
___________________________________________________________________
Modified: svn:ignore
   - Release

   + Release
Debug



Property changes on: sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/DWFCore
___________________________________________________________________
Added: svn:ignore
   + obj



Property changes on: sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/DWFToolkit
___________________________________________________________________
Added: svn:ignore
   + obj



Property changes on: sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/W3DToolkit
___________________________________________________________________
Added: svn:ignore
   + obj



Property changes on: sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/WhipToolkit
___________________________________________________________________
Added: svn:ignore
   + obj



Property changes on: sandbox/jng/clean_json/Oem/DWFTK/develop/global/build/VC 14.0/XAML
___________________________________________________________________
Added: svn:ignore
   + obj



Property changes on: sandbox/jng/clean_json/Oem/LinuxApt
___________________________________________________________________
Modified: svn:ignore
   - httpd-2.4.9
php-5.5.11
*.tar

   + httpd-2.4.9
php-5.5.11
*.tar
php-5.5.17
httpd-2.4.10
httpd-2.4.18
php-5.5.33
php-5.6.23


Deleted: sandbox/jng/clean_json/Oem/LinuxApt/apache-tomcat-7.0.56.tar.gz
===================================================================
(Binary files differ)

Copied: sandbox/jng/clean_json/Oem/LinuxApt/apache-tomcat-7.0.68.tar.gz (from rev 9143, trunk/MgDev/Oem/LinuxApt/apache-tomcat-7.0.68.tar.gz)
===================================================================
(Binary files differ)

Deleted: sandbox/jng/clean_json/Oem/LinuxApt/apr-1.5.1.tar.bz2
===================================================================
(Binary files differ)

Copied: sandbox/jng/clean_json/Oem/LinuxApt/apr-1.5.2.tar.bz2 (from rev 9143, trunk/MgDev/Oem/LinuxApt/apr-1.5.2.tar.bz2)
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/LinuxApt/build_apt.sh
===================================================================
--- sandbox/jng/clean_json/Oem/LinuxApt/build_apt.sh	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Oem/LinuxApt/build_apt.sh	2017-04-11 15:36:32 UTC (rev 9144)
@@ -15,8 +15,12 @@
 
 INSTALLDIR=/usr/local/mapguideopensource
 
-HTTPD_VER=2.4.10
-PHP_VER=5.5.17
+HTTPD_VER=2.4.18
+PHP_VER=5.6.23
+TOMCAT_VER=7.0.68
+CONNECTOR_VER=1.2.41
+APR_VER=1.5.2
+APR_UTIL_VER=1.5.4
 PORT=8008
 TOMCAT=0
 TOMCAT_PORT=8009
@@ -144,12 +148,12 @@
 echo "Apache Httpd build started"
 tar -jxf httpd-$HTTPD_VER.tar.bz2
 if [ ! -d "httpd-$HTTPD_VER/srclib/apr" ]; then
-	tar -jxf apr-1.5.1.tar.bz2
-	mv apr-1.5.1 httpd-$HTTPD_VER/srclib/apr
+	tar -jxf apr-$APR_VER.tar.bz2
+	mv apr-$APR_VER httpd-$HTTPD_VER/srclib/apr
 fi
 if [ ! -d "httpd-$HTTPD_VER/srclib/aprutil" ]; then
-	tar -jxf apr-util-1.5.4.tar.bz2
-	mv apr-util-1.5.4 httpd-$HTTPD_VER/srclib/apr-util
+	tar -jxf apr-util-$APR_UTIL_VER.tar.bz2
+	mv apr-util-$APR_UTIL_VER httpd-$HTTPD_VER/srclib/apr-util
 fi
 pushd httpd-$HTTPD_VER
 ./configure --prefix=$INSTALLWEB/apache2 --enable-mods-shared=all \
@@ -255,8 +259,8 @@
 #**********************************************************
 if [ "$TOMCAT" = "1" ]; then
 echo "Tomcat connector build/install started"
-tar -zxf tomcat-connectors-1.2.40-src.tar.gz
-pushd tomcat-connectors-1.2.40-src/native
+tar -zxf tomcat-connectors-$CONNECTOR_VER-src.tar.gz
+pushd tomcat-connectors-$CONNECTOR_VER-src/native
 
 ./configure --with-apxs=$INSTALLWEB/apache2/bin/apxs
 check_tomcat_build
@@ -274,10 +278,10 @@
 #**********************************************************
 if [ "$TOMCAT" = "1" ]; then
 echo "Tomcat install started"
-tar -zxf apache-tomcat-7.0.56.tar.gz -C $INSTALLWEB
+tar -zxf apache-tomcat-$TOMCAT_VER.tar.gz -C $INSTALLWEB
 check_tomcat_install
 pushd $INSTALLWEB
-mv apache-tomcat-7.0.56 tomcat
+mv apache-tomcat-$TOMCAT_VER tomcat
 check_tomcat_install
 popd
 echo "Tomcat install completed"

Deleted: sandbox/jng/clean_json/Oem/LinuxApt/httpd-2.4.10.tar.bz2
===================================================================
(Binary files differ)

Copied: sandbox/jng/clean_json/Oem/LinuxApt/httpd-2.4.18.tar.bz2 (from rev 9143, trunk/MgDev/Oem/LinuxApt/httpd-2.4.18.tar.bz2)
===================================================================
(Binary files differ)

Deleted: sandbox/jng/clean_json/Oem/LinuxApt/php-5.5.17.tar.bz2
===================================================================
(Binary files differ)

Copied: sandbox/jng/clean_json/Oem/LinuxApt/php-5.6.23.tar.bz2 (from rev 9143, trunk/MgDev/Oem/LinuxApt/php-5.6.23.tar.bz2)
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/LinuxApt/php.ini-mapguide
===================================================================
--- sandbox/jng/clean_json/Oem/LinuxApt/php.ini-mapguide	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Oem/LinuxApt/php.ini-mapguide	2017-04-11 15:36:32 UTC (rev 9144)
@@ -487,7 +487,7 @@
 ;default_charset = "iso-8859-1"
 
 ; Always populate the $HTTP_RAW_POST_DATA variable.
-;always_populate_raw_post_data = On
+always_populate_raw_post_data = -1
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;

Deleted: sandbox/jng/clean_json/Oem/LinuxApt/tomcat-connectors-1.2.40-src.tar.gz
===================================================================
(Binary files differ)

Copied: sandbox/jng/clean_json/Oem/LinuxApt/tomcat-connectors-1.2.41-src.tar.gz (from rev 9143, trunk/MgDev/Oem/LinuxApt/tomcat-connectors-1.2.41-src.tar.gz)
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/SQLite/src/SqliteDotNet/SqliteDotNet.vcxproj
===================================================================
--- sandbox/jng/clean_json/Oem/SQLite/src/SqliteDotNet/SqliteDotNet.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Oem/SQLite/src/SqliteDotNet/SqliteDotNet.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -22,7 +22,6 @@
     <ProjectGuid>{82BAB86A-BBDE-42F3-B0BD-E69CDF1E8119}</ProjectGuid>
     <RootNamespace>SqliteDotNet</RootNamespace>
     <Keyword>ManagedCProj</Keyword>
-    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

Modified: sandbox/jng/clean_json/Oem/agg-2.4/include/agg_font_cache_manager.h
===================================================================
--- sandbox/jng/clean_json/Oem/agg-2.4/include/agg_font_cache_manager.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Oem/agg-2.4/include/agg_font_cache_manager.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -172,8 +172,8 @@
                 if(m_num_fonts >= m_max_fonts)
                 {
                     obj_allocator<font_cache>::deallocate(m_fonts[0]);
-                    memcpy(m_fonts, 
-                           m_fonts + 1, 
+                    memmove(m_fonts, 
+                            m_fonts + 1, 
                            (m_max_fonts - 1) * sizeof(font_cache*));
                     m_num_fonts = m_max_fonts - 1;
                 }

Modified: sandbox/jng/clean_json/Oem/geos/src/io/WKTReader.cpp
===================================================================
--- sandbox/jng/clean_json/Oem/geos/src/io/WKTReader.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Oem/geos/src/io/WKTReader.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -61,7 +61,7 @@
 WKTReader::read(const string &wellKnownText)
 {
 	//auto_ptr<StringTokenizer> tokenizer(new StringTokenizer(wellKnownText));
-        CLocalizer clocale;
+        //CLocalizer clocale;
 	StringTokenizer tokenizer(wellKnownText);
 	Geometry *g=NULL;
 	g=readGeometryTaggedText(&tokenizer);

Modified: sandbox/jng/clean_json/Oem/geos/src/io/WKTWriter.cpp
===================================================================
--- sandbox/jng/clean_json/Oem/geos/src/io/WKTWriter.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Oem/geos/src/io/WKTWriter.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -169,7 +169,7 @@
 WKTWriter::writeFormatted(const Geometry *geometry, bool isFormatted,
                           Writer *writer)
 {
-        CLocalizer clocale;
+        //CLocalizer clocale;
 	this->isFormatted=isFormatted;
   decimalPlaces = roundingPrecision == -1 ? geometry->getPrecisionModel()->getMaximumSignificantDigits() : roundingPrecision;
 	appendGeometryTaggedText(geometry, 0, writer);

Modified: sandbox/jng/clean_json/Oem/httpd/lib/apr-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/aprutil-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/libapr-1.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/libapr-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/libapriconv-1.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/libapriconv-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/libaprutil-1.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/libaprutil-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/libhttpd.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/libhttpd.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/mod_dav.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/mod_dav.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib/xml.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/apr-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/aprutil-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/libapr-1.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/libapr-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/libapriconv-1.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/libapriconv-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/libaprutil-1.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/libaprutil-1.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/libhttpd.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/libhttpd.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/mod_dav.exp
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/mod_dav.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/httpd/lib64/xml.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/jsoncpp/src/lib_json/lib_json.vcxproj
===================================================================
--- sandbox/jng/clean_json/Oem/jsoncpp/src/lib_json/lib_json.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Oem/jsoncpp/src/lib_json/lib_json.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -187,7 +187,6 @@
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <PrecompiledHeader>
       </PrecompiledHeader>
-      <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput>
       <ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
       <WarningLevel>Level3</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>

Modified: sandbox/jng/clean_json/Oem/php/Release_TS/php5ts.lib
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Oem/php/Zend/zend_config.w32.h
===================================================================
--- sandbox/jng/clean_json/Oem/php/Zend/zend_config.w32.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Oem/php/Zend/zend_config.w32.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -2,7 +2,7 @@
    +----------------------------------------------------------------------+
    | Zend Engine                                                          |
    +----------------------------------------------------------------------+
-   | Copyright (c) 1998-2014 Zend Technologies Ltd. (http://www.zend.com) |
+   | Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
    +----------------------------------------------------------------------+
    | This source file is subject to version 2.00 of the Zend license,     |
    | that is bundled with this package in the file LICENSE, and is        |
@@ -15,6 +15,8 @@
    | Authors: Andi Gutmans <andi at zend.com>                                |
    |          Zeev Suraski <zeev at zend.com>                                |
    +----------------------------------------------------------------------+
+   | MapGuide Changes: MSVC 2015 #ifdef guard for snprintf
+   +----------------------------------------------------------------------
 */
 
 /* $Id$ */

Modified: sandbox/jng/clean_json/Oem/php/main/win95nt.h
===================================================================
--- sandbox/jng/clean_json/Oem/php/main/win95nt.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Oem/php/main/win95nt.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -2,7 +2,7 @@
   +----------------------------------------------------------------------+
   | PHP Version 5                                                        |
   +----------------------------------------------------------------------+
-  | Copyright (c) 1997-2013 The PHP Group                                |
+  | Copyright (c) 1997-2016 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 3.01 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |

Modified: sandbox/jng/clean_json/Oem/php/x64/Release_TS/php5ts.lib
===================================================================
(Binary files differ)


Property changes on: sandbox/jng/clean_json/Server
___________________________________________________________________
Modified: svn:ignore
   - bin
lib
obj
*.suo
Server.sdf

   + bin
lib
obj
*.suo
Server.sdf
.vs


Modified: sandbox/jng/clean_json/Server/src/Common/Base/ServerBase.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Common/Base/ServerBase.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Common/Base/ServerBase.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerBase Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerBase"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerBase.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Common/Cache/ServerCache.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Common/Cache/ServerCache.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Common/Cache/ServerCache.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerCache Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerCache"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerCache.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Common/Manager/ServerManager.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Common/Manager/ServerManager.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Common/Manager/ServerManager.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerManager Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerManager"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerManager.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Common/Thread/ServerThread.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Common/Thread/ServerThread.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Common/Thread/ServerThread.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerThread Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerThread"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerThread.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Core/Makefile.am
===================================================================
--- sandbox/jng/clean_json/Server/src/Core/Makefile.am	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Core/Makefile.am	2017-04-11 15:36:32 UTC (rev 9144)
@@ -98,7 +98,7 @@
   -ldwfcore \
   -ldwftk \
   -lexpat \
-  -lFDO-4.0.0 \
+  -lFDO-4.1.0 \
   -lExpressionEngine \
   -lxalanMsg \
   -lxalan-c \

Modified: sandbox/jng/clean_json/Server/src/Core/ServerCore.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Core/ServerCore.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Core/ServerCore.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapGuide Server Application"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "mgserver"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "mgserver.exe"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Core/mapguidectl
===================================================================
--- sandbox/jng/clean_json/Server/src/Core/mapguidectl	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Core/mapguidectl	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,33 +1,81 @@
 #!/bin/sh
+# chkconfig: 345 35 65
+# description: MapGuide Server Daemon
+ 
 # MapGuide init script
 . /lib/lsb/init-functions
+ 
+# Defined here for distributions that don't define log_end_msg
+type log_end_msg > /dev/null 2>&1 || log_end_msg () {
+  retval=$1
+  if [ $retval -eq 0 ]; then
+    log_success_msg
+  else
+    log_failure_msg
+  fi
+  return $retval
+}
 
+progname="mgserver"
+fullprogname="mgserver daemon"
+
+do_start () {
+  echo -n "Starting MapGuide Server..."
+  pid=$(pgrep -f -u root "${fullprogname}")
+  ret=0
+  if [ -z "$pid" ]
+  then
+    cd /usr/local/mapguideopensource/server/bin && ./mgserverd.sh > /dev/null 
+    ret=$?
+  else
+    echo 
+    echo -n "MapGuide Server already running (pid $pid)"
+  fi
+  log_end_msg $ret
+}
+
+do_stop () {
+  echo -n "Stopping MapGuide Server"
+  pid=$(pgrep -f -u root "${fullprogname}")
+  ret=0
+  if [ -z "$pid" ]
+  then
+    echo 
+    echo -n "MapGuide Server not running"
+  else
+    /bin/kill $pid
+    ret=$?
+  fi
+  log_end_msg $ret
+}
+
+ 
 # Must be superuser
-if [[ $EUID -ne 0 ]]; then
-    echo "You must have superuser privileges to run this script"
-    exit 1
+if [ $(id -u) -ne 0 ]; then
+  log_failure_msg "You must have superuser privileges to run this script"
+  exit 1
 fi
-
+ 
 case "$1" in
- start)
-   log_daemon_msg "Starting MapGuide Server"
-   pushd /usr/local/mapguideopensource/server/bin > /dev/null
-   ./mgserverd.sh
-   popd > /dev/null
-   log_end_msg 0
-   ;;
- stop)
-   log_daemon_msg "Stopping MapGuide Server"
-   MGPROCESS=`/usr/bin/pgrep -f -u root "mgserver daemon"`
-   if [ "$MGPROCESS" != "" ]
-   then
-     /bin/kill $MGPROCESS
-   fi
-   log_end_msg 0
-   ;;
- *)
-   echo "Usage: $0 {start|stop}"
-   exit 1
-   ;;
+  start)
+    do_start
+    ;;
+  stop)
+    do_stop
+    ;;
+  status)
+    pid=$(pgrep -f -u root "${fullprogname}")
+    [ -z "$pid" ] && echo "$progname is stopped" && RETVAL=3 && exit $RETVAL
+    echo "$progname (pid $pid) is running..."
+    ;;
+  restart)
+    do_stop
+    sleep 2
+    do_start
+    ;;
+  *)
+    echo "Usage: $0 {start|stop|status|restart}"
+    exit 1
+    ;;
 esac
 exit 0

Modified: sandbox/jng/clean_json/Server/src/Gws/GwsCommon/GwsCommon.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Gws/GwsCommon/GwsCommon.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Gws/GwsCommon/GwsCommon.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "GwsCommon Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgGwsCommon"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgGwsCommon.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Gws/GwsQueryEngine/GwsQueryEngine.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Gws/GwsQueryEngine/GwsQueryEngine.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Gws/GwsQueryEngine/GwsQueryEngine.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "GwsQueryEngine Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgGwsQueryEngine"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgGwsQueryEngine.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Gws/GwsResource/GwsResource.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Gws/GwsResource/GwsResource.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Gws/GwsResource/GwsResource.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -62,8 +62,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -80,12 +80,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "GwsResource Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgGwsResource"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgGwsResource.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Drawing/ServerDrawingService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Drawing/ServerDrawingService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Drawing/ServerDrawingService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerDrawingService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerDrawingService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerDrawingService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Feature/SelectCommand.cpp
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Feature/SelectCommand.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Feature/SelectCommand.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -50,7 +50,7 @@
     // For SDF/SHP providers, they do not support ordering. But, they can support ordering through the FdoIExtendedSelect
     // command, provided that only a single property is being ordered on. So if it is the case that normal ordering is
     // not supported, we should try for extended select if the conditions are met.
-    bool bTryExtendedSelect = false;
+    m_bUseExtendedSelect = false;
     if (NULL != options)
     {
         Ptr<MgStringCollection> orderProps = options->GetOrderingProperties();
@@ -65,7 +65,7 @@
                 {
                     if (FdoCommandType_ExtendedSelect == cmds[i] && orderProps->GetCount() == 1)
                     {
-                        bTryExtendedSelect = true;
+                        m_bUseExtendedSelect = true;
                         break;
                     }
                 }
@@ -74,7 +74,7 @@
     }
 
     // Create FdoISelect command
-    if (bTryExtendedSelect)
+    if (m_bUseExtendedSelect)
         m_command = (FdoIExtendedSelect*)fdoConn->CreateCommand(FdoCommandType_ExtendedSelect);
     else
         m_command = (FdoISelect*)fdoConn->CreateCommand(FdoCommandType_Select);
@@ -219,7 +219,7 @@
 
     CHECKNULL((FdoISelect*)m_command, L"MgSelectCommand.Execute");
     FdoIExtendedSelect* extSelect = dynamic_cast<FdoIExtendedSelect*>(m_command.p);
-    if (NULL != extSelect)
+    if (m_bUseExtendedSelect && NULL != extSelect)
     {
         FdoPtr<FdoIScrollableFeatureReader> scReader = extSelect->ExecuteScrollable();
         CHECKNULL((FdoIScrollableFeatureReader*)scReader, L"MgSelectCommand.Execute");

Modified: sandbox/jng/clean_json/Server/src/Services/Feature/SelectCommand.h
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Feature/SelectCommand.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Feature/SelectCommand.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -80,6 +80,7 @@
     FdoPtr<FdoFilter> m_filter;
 
     MgFdoFilterCollection* GetSubFilters();
+    bool m_bUseExtendedSelect;
 };
 
 #endif

Modified: sandbox/jng/clean_json/Server/src/Services/Feature/ServerFeatureService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Feature/ServerFeatureService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Feature/ServerFeatureService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -48,8 +48,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -66,12 +66,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerFeatureService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerFeatureService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerFeatureService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Kml/ServerKmlService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Kml/ServerKmlService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Kml/ServerKmlService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerKmlService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerKmlService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerKmlService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Mapping/MappingUtil.cpp
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Mapping/MappingUtil.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Mapping/MappingUtil.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -732,6 +732,10 @@
                     double pixelsPerMapUnit = dr->GetMetersPerUnit() / METERS_PER_INCH * dr->GetDpi() / dr->GetMapScale();
                     int width = (int)(extent.width() * pixelsPerMapUnit + 0.5);
                     int height = (int)(extent.height() * pixelsPerMapUnit + 0.5);
+                    // if width or height is 0, raster provider will throw an exception. 
+                    // we set it to 1 to avoid the exception.
+                    if (0 == width) width = 1;
+                    if (0 == height) height = 1;
 
                     //perform the raster query
                     FdoPtr<FdoIFeatureReader> fdoReader;


Property changes on: sandbox/jng/clean_json/Server/src/Services/Mapping/MappingUtil.cpp
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.4/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:6738-6741,6749-6756,6777-6783,6785-6787,6789,6791-6794,6796-6801,6954-6962,6986-7006
/branches/2.6/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:8365
/sandbox/adsk/2.4j/Server/src/Services/Mapping/MappingUtil.cpp:6327-6535
/sandbox/jng/createruntimemap/Server/src/Services/Mapping/MappingUtil.cpp:7486-7555
/sandbox/rfc94/Server/src/Services/Mapping/MappingUtil.cpp:5099-5163
/trunk/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:6250-6326
   + /branches/2.4/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:6738-6741,6749-6756,6777-6783,6785-6787,6789,6791-6794,6796-6801,6954-6962,6986-7006
/branches/2.6/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:8365
/sandbox/adsk/2.4j/Server/src/Services/Mapping/MappingUtil.cpp:6327-6535
/sandbox/adsk/3.1n/Server/src/Services/Mapping/MappingUtil.cpp:8942
/sandbox/jng/createruntimemap/Server/src/Services/Mapping/MappingUtil.cpp:7486-7555
/sandbox/rfc94/Server/src/Services/Mapping/MappingUtil.cpp:5099-5163
/trunk/MgDev/Server/src/Services/Mapping/MappingUtil.cpp:8818-9143

Modified: sandbox/jng/clean_json/Server/src/Services/Mapping/ServerMappingService.cpp
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Mapping/ServerMappingService.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Mapping/ServerMappingService.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1637,6 +1637,8 @@
     if (NULL != ldf)
     {
         MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(ldf);
+        MdfModel::GridLayerDefinition* gl = dynamic_cast<MdfModel::GridLayerDefinition*>(ldf);
+        MdfModel::DrawingLayerDefinition* dl = dynamic_cast<MdfModel::DrawingLayerDefinition*>(ldf);
         if (NULL != vl)
         {
             MdfModel::VectorScaleRangeCollection* vsrs = vl->GetScaleRanges();
@@ -1742,6 +1744,41 @@
                 xml.append("</ScaleRange>\n");
             }
         }
+        else if (NULL != gl)
+        {
+            MdfModel::GridScaleRangeCollection* gsrs = gl->GetScaleRanges();
+            for (INT32 i = 0; i < gsrs->GetCount(); i++)
+            {
+                MdfModel::GridScaleRange* gsr = gsrs->GetAt(i);
+                xml.append("<ScaleRange>\n");
+                xml.append("<MinScale>");
+                std::string sMinScale;
+                MgUtil::DoubleToString(gsr->GetMinScale(), sMinScale);
+                xml.append(sMinScale);
+                xml.append("</MinScale>\n");
+                xml.append("<MaxScale>");
+                std::string sMaxScale;
+                MgUtil::DoubleToString(gsr->GetMaxScale(), sMaxScale);
+                xml.append(sMaxScale);
+                xml.append("</MaxScale>\n");
+                xml.append("</ScaleRange>\n");
+            }
+        }
+        else if (NULL != dl)
+        {
+            xml.append("<ScaleRange>\n");
+            xml.append("<MinScale>");
+            std::string sMinScale;
+            MgUtil::DoubleToString(dl->GetMinScale(), sMinScale);
+            xml.append(sMinScale);
+            xml.append("</MinScale>\n");
+            xml.append("<MaxScale>");
+            std::string sMaxScale;
+            MgUtil::DoubleToString(dl->GetMaxScale(), sMaxScale);
+            xml.append(sMaxScale);
+            xml.append("</MaxScale>\n");
+            xml.append("</ScaleRange>\n");
+        }
         else
         {
             xml.append("<ScaleRange/>");

Modified: sandbox/jng/clean_json/Server/src/Services/Mapping/ServerMappingService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Mapping/ServerMappingService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Mapping/ServerMappingService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerMappingService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerMappingService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerMappingService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Profiling/ServerProfilingService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Profiling/ServerProfilingService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Profiling/ServerProfilingService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerProfilingService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerProfilingService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerProfilingService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Rendering/ServerRenderingService.cpp
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Rendering/ServerRenderingService.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Rendering/ServerRenderingService.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1574,35 +1574,41 @@
         if (maxFeatures <= 0)
             break;
 
-        //get the MDF layer definition
+        MdfModel::VectorLayerDefinition* vl = NULL;
+        Ptr<MgResourceLayerDefinitionCacheItem> cacheItem;
+        auto_ptr<MdfModel::LayerDefinition> ldf;
         Ptr<MgResourceIdentifier> layerResId = layer->GetLayerDefinition();
-        MgCacheManager* cacheManager = MgCacheManager::GetInstance();
-        Ptr<MgResourceLayerDefinitionCacheItem> cacheItem = cacheManager->GetResourceLayerDefinitionCacheItem(layerResId);
-        MdfModel::LayerDefinition* layerDefinition = cacheItem->Get();
+        if (bOnlyVisibleLayers)
+        {
+            //get the MDF layer definition
+            MgCacheManager* cacheManager = MgCacheManager::GetInstance();
+            cacheItem = cacheManager->GetResourceLayerDefinitionCacheItem(layerResId);
+            MdfModel::LayerDefinition* layerDefinition = cacheItem->Get();
+            vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(layerDefinition);
+        }
+        else
+        {
+            ldf.reset(MgLayerBase::GetLayerDefinition(m_svcResource, layerResId));
+            vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(ldf.get());
 
-        MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(layerDefinition);
+            // Modify the layer scale range only for layers that are passed in
+            MdfModel::VectorScaleRangeCollection* scaleRanges = vl->GetScaleRanges();
+            if (scaleRanges)
+            {
+                MdfModel::VectorScaleRange* scaleRange = scaleRanges->GetAt(0);
+                if (scaleRange)
+                {
+                    scaleRange->SetMinScale(0.0);
+                    scaleRange->SetMaxScale(MdfModel::VectorScaleRange::MAX_MAP_SCALE);
+                }
+            }
+        }
 
         //we can only do geometric query selection for vector layers
         if (vl)
         {
             ACE_DEBUG ((LM_DEBUG, ACE_TEXT("(%t) RenderForSelection(): Layer: %W  Vector Layer\n"), layer->GetName().c_str()));
 
-            //check to see if we want even layers that aren't visible at the current scale
-            if (!bOnlyVisibleLayers)
-            {
-                // Modify the layer scale range only for layers that are passed in
-                MdfModel::VectorScaleRangeCollection* scaleRanges = vl->GetScaleRanges();
-                if (scaleRanges)
-                {
-                    MdfModel::VectorScaleRange* scaleRange = scaleRanges->GetAt(0);
-                    if (scaleRange)
-                    {
-                        scaleRange->SetMinScale(0.0);
-                        scaleRange->SetMaxScale(MdfModel::VectorScaleRange::MAX_MAP_SCALE);
-                    }
-                }
-            }
-
             Ptr<MgResourceIdentifier> featResId = new MgResourceIdentifier(layer->GetFeatureSourceId());
 
             //get a transform from layer coord sys to map coord sys
@@ -2043,11 +2049,9 @@
             continue;
 
         Ptr<MgResourceIdentifier> layerid = mapLayer->GetLayerDefinition();
-        MgCacheManager* cacheManager = MgCacheManager::GetInstance();
-        Ptr<MgResourceLayerDefinitionCacheItem> cacheItem = cacheManager->GetResourceLayerDefinitionCacheItem(layerid);
-        MdfModel::LayerDefinition* layerDefinition = cacheItem->Get();
+        ldf.reset(MgLayerBase::GetLayerDefinition(m_svcResource, layerid));
+        WatermarkInstanceCollection* layerWatermarks = ldf->GetWatermarks();
 
-        WatermarkInstanceCollection* layerWatermarks = layerDefinition->GetWatermarks();
         for (int j=layerWatermarks->GetCount()-1; j>=0; j--)
             tempWatermarkInstances.Adopt(layerWatermarks->OrphanAt(j));
         for (int j=tempWatermarkInstances.GetCount()-1; j>=0; j--)

Modified: sandbox/jng/clean_json/Server/src/Services/Rendering/ServerRenderingService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Rendering/ServerRenderingService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Rendering/ServerRenderingService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerRenderingService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerRenderingService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerRenderingService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Resource/ApplicationRepositoryManager.cpp
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Resource/ApplicationRepositoryManager.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Resource/ApplicationRepositoryManager.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,5 +1,5 @@
 //
-//  Copyright (C) 2004-2011 by Autodesk, Inc.
+//  Copyright (C) 2017 by Autodesk, Inc.
 //
 //  This library is free software; you can redistribute it and/or
 //  modify it under the terms of version 2.1 of the GNU Lesser
@@ -945,7 +945,7 @@
     {
         dataValue = data->ToString();
 
-        if (MgResourceDataName::UserCredentials == dataName)
+        if (MgResourceDataName::UserCredentials == dataName || MgResourceDataName::ProxyCredentials == dataName)
         {
             MgCryptographyManager cryptoManager;
 
@@ -1221,7 +1221,7 @@
     {
         string data;
 
-        if (MgResourceDataName::UserCredentials == dataName)
+        if (MgResourceDataName::UserCredentials == dataName || MgResourceDataName::ProxyCredentials == dataName)
         {
             // For security purpose, only the decrypted username
             // (no decrypted password) is returned.

Modified: sandbox/jng/clean_json/Server/src/Services/Resource/ServerResourceService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Resource/ServerResourceService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Resource/ServerResourceService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerResourceService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerResourceService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerResourceService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Resource/TagManager.cpp
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Resource/TagManager.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Resource/TagManager.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,5 +1,5 @@
 //
-//  Copyright (C) 2004-2011 by Autodesk, Inc.
+//  Copyright (C) 2017 by Autodesk, Inc.
 //
 //  This library is free software; you can redistribute it and/or
 //  modify it under the terms of version 2.1 of the GNU Lesser
@@ -175,9 +175,9 @@
     }
 
     if ((MgResourceDataType::String != type
-            && MgResourceDataName::UserCredentials == name)
+            && ((MgResourceDataName::UserCredentials == name) || (MgResourceDataName::ProxyServerName == name) || (MgResourceDataName::ProxyServerPort == name) || (MgResourceDataName::ProxyCredentials == name)))
         || (MgResourceDataType::String == type
-                && MgResourceDataName::UserCredentials != name))
+                && ((MgResourceDataName::UserCredentials != name) && (MgResourceDataName::ProxyServerName != name) && (MgResourceDataName::ProxyServerPort != name) && (MgResourceDataName::ProxyCredentials != name))))
     {
         throw new MgInvalidResourceDataTypeException(
             L"MgTagManager.ValidateTag", __LINE__, __WFILE__, NULL, L"", NULL);
@@ -323,6 +323,46 @@
         MG_CRYPTOGRAPHY_CATCH_AND_THROW(L"MgTagManager.SubstituteTags")
     }
 
+	if (GetTag(MgResourceDataName::ProxyServerName, tagInfo, false))
+	{
+		CREFSTRING proxyServer = tagInfo.GetAttribute(MgTagInfo::TokenValue);
+		count += MgUtil::ReplaceString(
+            MgUtil::WideCharToMultiByte(MgResourceTag::ProxyServer),
+			MgUtil::WideCharToMultiByte(proxyServer),
+            doc, -1);
+	}
+
+    if (GetTag(MgResourceDataName::ProxyServerPort, tagInfo, false))
+    {
+        CREFSTRING proxyPort = tagInfo.GetAttribute(MgTagInfo::TokenValue);
+        count += MgUtil::ReplaceString(
+            MgUtil::WideCharToMultiByte(MgResourceTag::ProxyPort),
+            MgUtil::WideCharToMultiByte(proxyPort),
+            doc, -1);
+    }
+
+    if (GetTag(MgResourceDataName::ProxyCredentials, tagInfo, false))
+    {
+        MG_CRYPTOGRAPHY_TRY()
+
+            MgCryptographyUtil cryptoUtil;
+        string proxyUsername, proxyPassword;
+
+        cryptoUtil.DecryptCredentials(MgUtil::WideCharToMultiByte(
+            tagInfo.GetAttribute(MgTagInfo::TokenValue)), proxyUsername, proxyPassword);
+
+        count += MgUtil::ReplaceString(
+            MgUtil::WideCharToMultiByte(MgResourceTag::ProxyUsername),
+            proxyUsername,
+            doc, -1);
+        count += MgUtil::ReplaceString(
+            MgUtil::WideCharToMultiByte(MgResourceTag::ProxyPassword),
+            proxyPassword,
+            doc, -1);
+
+        MG_CRYPTOGRAPHY_CATCH_AND_THROW(L"MgTagManager.SubstituteTags")
+    }
+
     count += MgUtil::ReplaceString(
         MgUtil::WideCharToMultiByte(MgResourceTag::LoginUsername),
         MgUtil::WideCharToMultiByte(dataBindingInfo.GetLoginUsername()),

Modified: sandbox/jng/clean_json/Server/src/Services/ServerAdmin/ServerAdminService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/ServerAdmin/ServerAdminService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/ServerAdmin/ServerAdminService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerAdminService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerAdminService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MdServerAdminService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Site/ServerSiteService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Site/ServerSiteService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Site/ServerSiteService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerSiteService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerSiteService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerSiteService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/Services/Tile/ServerTileService.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/Services/Tile/ServerTileService.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/Services/Tile/ServerTileService.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "ServerTileService Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgServerTileService"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgServerTileService.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Server/src/UnitTesting/TestGeometry.cpp
===================================================================
--- sandbox/jng/clean_json/Server/src/UnitTesting/TestGeometry.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/UnitTesting/TestGeometry.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -2370,7 +2370,6 @@
     }
 }
 
-
 void TestGeometry::TestCase_CoordinateIterator()
 {
     try
@@ -2424,3 +2423,294 @@
         throw;
     }
 }
+
+void TestGeometry::TestCase_Simplify_BadParams()
+{
+    try
+    {
+        Ptr<MgGeometrySimplifier> simp = new MgGeometrySimplifier();
+        Ptr<MgWktReaderWriter> wktRw = new MgWktReaderWriter();
+        Ptr<MgGeometry> geom = wktRw->Read(L"POINT (1 1)");
+
+        CPPUNIT_ASSERT_THROW_MG(simp->Simplify(NULL, 1.0, MgGeometrySimplificationAlgorithmType::DouglasPeucker), MgNullArgumentException*);
+        CPPUNIT_ASSERT_THROW_MG(simp->Simplify(geom, 1.0, -1), MgInvalidArgumentException*);
+        CPPUNIT_ASSERT_THROW_MG(simp->Simplify(geom, 1.0, 2), MgInvalidArgumentException*);
+    }
+    catch (MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch (...)
+    {
+        throw;
+    }
+}
+
+void TestGeometry::TestCase_Simplify_DP()
+{
+    try
+    {
+        Ptr<MgGeometrySimplifier> simp = new MgGeometrySimplifier();
+        INT32 algo = MgGeometrySimplificationAlgorithmType::DouglasPeucker;
+        Ptr<MgWktReaderWriter> wktRw = new MgWktReaderWriter();
+
+        //1 - PolygonNoReduction
+        STRING wkt;
+        wkt = L"POLYGON((20 220, 40 220, 60 220, 80 220, 100 220, \
+                    120 220, 140 220, 140 180, 100 180, 60 180, 20 180, 20 220))";
+        Ptr<MgGeometry> gTest = wktRw->Read(wkt);
+
+        Ptr<MgGeometry> gInput = wktRw->Read(wkt);
+        Ptr<MgGeometry> gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // 2 - PolygonReductionWithSplit
+        gTest = wktRw->Read(L"MULTIPOLYGON (((40.0 240.0, 160.0 240.0, 40.0 140.0, 40.0 240.0)), \
+                    ((160.0 240.0, 280.0 240.0, 280.0 160.0, 160.0 240.0)))");
+        gInput = wktRw->Read(L"POLYGON ((40 240, 160 241, 280 240, 280 160, \
+                    160 240, 40 140, 40 240))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+        
+        // 3 - PolygonReduction
+        gTest = wktRw->Read(L"POLYGON ((120 120, 140 199, 160 200, 180 199, 220 120, 120 120))");
+        gInput = wktRw->Read(L"POLYGON ((120 120, 121 121, 122 122, 220 120, \
+                    180 199, 160 200, 140 199, 120 120))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // 4 - PolygonWithTouchingHole
+        gTest = wktRw->Read(L"POLYGON ((80 200, 160 200, 240 200, 240 60, 80 60, 80 200), \
+                    (160 200, 140 199, 120 120, 220 120, 180 199, 160 200)))");
+        gInput = wktRw->Read(L"POLYGON ((80 200, 240 200, 240 60, 80 60, 80 200), \
+                    (120 120, 220 120, 180 199, 160 200, 140 199, 120 120))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // 5 - FlattishPolygon
+        gInput = wktRw->Read(L"POLYGON ((0 0, 50 0, 53 0, 55 0, 100 0, 70 1, 60 1, 50 1, 40 1, 0 0))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        //Unlike GEOS, we don't support "POLYGON EMPTY", so we should be expecting NULL instead
+        CPPUNIT_ASSERT(NULL == gOutput.p);
+
+        // 6 - TinySquare
+        gInput = wktRw->Read(L"POLYGON ((0 5, 5 5, 5 0, 0 0, 0 1, 0 5))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        //Unlike GEOS, we don't support "POLYGON EMPTY", so we should be expecting NULL instead
+        CPPUNIT_ASSERT(NULL == gOutput.p);
+
+        // 7 - TinyLineString
+        gTest = wktRw->Read(L"LINESTRING (0 5, 5 5)");
+        gInput = wktRw->Read(L"LINESTRING (0 5, 1 5, 2 5, 5 5)");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // 8 - MultiPoint
+        gTest = wktRw->Read(L"MULTIPOINT(80 200, 240 200, 240 60, 80 60, 80 200, 140 199, 120 120)");
+        gInput = wktRw->Read(L"MULTIPOINT(80 200, 240 200, 240 60, 80 60, 80 200, 140 199, 120 120)");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // 9 - MultiLineString
+        gTest = wktRw->Read(L"MULTILINESTRING( (0 0, 100 0), (0 0, 100 0) )");
+        gInput = wktRw->Read(L"MULTILINESTRING( (0 0, 50 0, 70 0, 80 0, 100 0), \
+                    (0 0, 50 1, 60 1, 100 0) )");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // 10 - GeometryCollection
+        gTest = wktRw->Read(L"MULTILINESTRING( (0 0, 100 0), (0 0, 100 0) )");
+        gInput = wktRw->Read(L"GEOMETRYCOLLECTION ( \
+                    MULTIPOINT (80 200, 240 200, 240 60, 80 60, 80 200, 140 199, 120 120), \
+                    POLYGON ((80 200, 240 200, 240 60, 80 60, 80 200)), \
+                    LINESTRING (80 200, 240 200, 240 60, 80 60, 80 200, 140 199, 120 120) )");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        //STRING sTest = gTest->ToAwkt(true);
+        //STRING sOutput = gOutput->ToAwkt(true);
+        //CPPUNIT_ASSERT(gTest->Equals(gOutput));
+    }
+    catch (MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch (...)
+    {
+        throw;
+    }
+}
+
+void TestGeometry::TestCase_Simplify_TP()
+{
+    try
+    {
+        Ptr<MgGeometrySimplifier> simp = new MgGeometrySimplifier();
+        INT32 algo = MgGeometrySimplificationAlgorithmType::TopologyPreserving;
+        Ptr<MgWktReaderWriter> wktRw = new MgWktReaderWriter();
+
+        //Point
+        Ptr<MgGeometry> gTest = wktRw->Read(L"POINT (10 10)");
+        Ptr<MgGeometry> gInput = wktRw->Read(L"POINT (10 10)");
+        Ptr<MgGeometry> gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // PolygonWithSpike
+        gTest = wktRw->Read(L"POLYGON (( \
+      3312459.605 6646878.353, \
+      3312460.524 6646875.969, \
+      3312459.427 6646878.421, \
+      3312460.014 6646886.391, \
+      3312465.889 6646887.398, \
+      3312470.827 6646884.839, \
+      3312477.289 6646871.694, \
+      3312472.748 6646869.547, \
+      3312459.605 6646878.353))");
+        gInput = wktRw->Read(L"POLYGON ((3312459.605 6646878.353, \
+      3312460.524 6646875.969, 3312459.427 6646878.421, \
+      3312460.014 6646886.391, 3312465.889 6646887.398, \
+      3312470.827 6646884.839, 3312475.4 6646878.027, \
+      3312477.289 6646871.694, 3312472.748 6646869.547, \
+      3312468.253 6646874.01, 3312463.52 6646875.779, \
+      3312459.605 6646878.353))");
+        gOutput = simp->Simplify(gInput, 2.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+
+        // PolygonNoReduction
+        gTest = wktRw->Read(L"POLYGON((20 220, 40 220, 60 220, 80 220, \
+                    100 220, 120 220, 140 220, 140 180, 100 180, \
+                    60 180, 20 180, 20 220))");
+        gInput = wktRw->Read(L"POLYGON((20 220, 40 220, 60 220, 80 220, \
+                    100 220, 120 220, 140 220, 140 180, 100 180, \
+                    60 180, 20 180, 20 220))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // PolygonNoReductionWithConflicts
+        gTest = wktRw->Read(L"POLYGON ((40 240, 160 241, 280 240, 280 160, \
+                        160 240, 40 140, 40 240))");
+        gInput = wktRw->Read(L"POLYGON ((40 240, 160 241, 280 240, 280 160, \
+                        160 240, 40 140, 40 240))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // PolygonWithTouchingHole
+        gTest = wktRw->Read(L"POLYGON ((80 200, 240 200, 240 60, 80 60, 80 200), \
+                    (120 120, 220 120, 180 199, 160 200, 140 199, 120 120))");
+        gInput = wktRw->Read(L"POLYGON ((80 200, 240 200, 240 60, 80 60, 80 200), \
+                    (120 120, 220 120, 180 199, 160 200, 140 199, 120 120))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // FlattishPolygon
+        gTest = wktRw->Read(L"POLYGON ((0 0, 50 0, 53 0, 55 0, 100 0, \
+                    70 1, 60 1, 50 1, 40 1, 0 0))");
+        gInput = wktRw->Read(L"POLYGON ((0 0, 50 0, 53 0, 55 0, 100 0, \
+                    70 1, 60 1, 50 1, 40 1, 0 0))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        //STRING sTest = gTest->ToAwkt(true);
+        //STRING sOutput = gOutput->ToAwkt(true);
+        //CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // PolygonWithFlattishHole
+        gTest = wktRw->Read(L"POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0), \
+                    (140 40, 90 95, 40 160, 95 100, 140 40))");
+        gInput = wktRw->Read(L"POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0), \
+                    (140 40, 90 95, 40 160, 95 100, 140 40))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid()); 
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // Tiny square
+        gTest = wktRw->Read(L"POLYGON ((0 5, 5 5, 5 0, 0 0, 0 1, 0 5))");
+        gInput = wktRw->Read(L"POLYGON ((0 5, 5 5, 5 0, 0 0, 0 1, 0 5))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+        
+        // TinyClosedLineString
+        gTest = wktRw->Read(L"LINESTRING (0 0, 5 0, 5 5, 0 0)");
+        gInput = wktRw->Read(L"LINESTRING (0 0, 5 0, 5 5, 0 0)");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // MultiPoint
+        gTest = wktRw->Read(L"MULTIPOINT(80 200, 240 200, 240 60, \
+                    80 60, 80 200, 140 199, 120 120)");
+        gInput = wktRw->Read(L"MULTIPOINT(80 200, 240 200, 240 60, \
+                    80 60, 80 200, 140 199, 120 120)");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // MultiLineString
+        gTest = wktRw->Read(L"MULTILINESTRING((0 0, 50 0, 70 0, 80 0, 100 0), \
+                    (0 0, 50 1, 60 1, 100 0))");
+        gInput = wktRw->Read(L"MULTILINESTRING((0 0, 50 0, 70 0, 80 0, 100 0), \
+                    (0 0, 50 1, 60 1, 100 0))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        //STRING sTest = gTest->ToAwkt(true);
+        //STRING sOutput = gOutput->ToAwkt(true);
+        //CPPUNIT_ASSERT(gTest->Equals(gOutput));
+
+        // GeometryCollection
+        gTest = wktRw->Read(L"GEOMETRYCOLLECTION ( \
+                    MULTIPOINT (80 200, 240 200, 240 60, 80 60, 80 200, 140 199, 120 120), \
+                    POLYGON ((80 200, 240 200, 240 60, 80 60, 80 200)), \
+                    LINESTRING (80 200, 240 200, 240 60, 80 60, 80 200, 140 199, 120 120))");
+        gInput = wktRw->Read(L"GEOMETRYCOLLECTION ( \
+                    MULTIPOINT (80 200, 240 200, 240 60, 80 60, 80 200, 140 199, 120 120), \
+                    POLYGON ((80 200, 240 200, 240 60, 80 60, 80 200)), \
+                    LINESTRING (80 200, 240 200, 240 60, 80 60, 80 200, 140 199, 120 120))");
+        gOutput = simp->Simplify(gInput, 10.0, algo);
+        CPPUNIT_ASSERT(NULL != gOutput.p);
+        CPPUNIT_ASSERT(gOutput->IsValid());
+        CPPUNIT_ASSERT(gTest->Equals(gOutput));
+    }
+    catch (MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch (...)
+    {
+        throw;
+    }
+}
\ No newline at end of file

Modified: sandbox/jng/clean_json/Server/src/UnitTesting/TestGeometry.h
===================================================================
--- sandbox/jng/clean_json/Server/src/UnitTesting/TestGeometry.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/UnitTesting/TestGeometry.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -64,6 +64,10 @@
     CPPUNIT_TEST(TestCase_GetInteriorPoint);
     CPPUNIT_TEST(TestCase_CoordinateIterator);
 
+    CPPUNIT_TEST(TestCase_Simplify_BadParams);
+    CPPUNIT_TEST(TestCase_Simplify_DP);
+    CPPUNIT_TEST(TestCase_Simplify_TP);
+
     CPPUNIT_TEST(TestEnd); // This must be the very last unit test
     CPPUNIT_TEST_SUITE_END();
 
@@ -108,6 +112,10 @@
     void TestCase_GetInteriorPoint();
     void TestCase_CoordinateIterator();
 
+    void TestCase_Simplify_BadParams();
+    void TestCase_Simplify_DP();
+    void TestCase_Simplify_TP();
+
     MgPoint*             CreatePoint();
     MgLineString*        CreateLineString();
     MgLinearRing*        CreateLinearRing();

Modified: sandbox/jng/clean_json/Server/src/UnitTesting/TestMisc.cpp
===================================================================
--- sandbox/jng/clean_json/Server/src/UnitTesting/TestMisc.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/UnitTesting/TestMisc.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -564,6 +564,35 @@
     }
 }
 
+void TestMisc::TestCase_CreateMapWithInitialDisplayParams()
+{
+    try 
+    {
+        Ptr<MgResourceIdentifier> mapRes1 = new MgResourceIdentifier(L"Library://UnitTests/Maps/Sheboygan.MapDefinition");
+        Ptr<MgMap> map = new MgMap(m_siteConnection);
+        map->Create(mapRes1, L"TestCase_CreateMapWithInitialDisplayParams", 800, 600, -87.45, 43.32, 8000.0, 256);
+
+        CPPUNIT_ASSERT_MESSAGE("Expected width of 800", map->GetDisplayWidth() == 800);
+        CPPUNIT_ASSERT_MESSAGE("Expected height of 600", map->GetDisplayHeight() == 600);
+        Ptr<MgPoint> pt = map->GetViewCenter();
+        Ptr<MgCoordinate> coord = pt->GetCoordinate();
+        CPPUNIT_ASSERT_DOUBLES_EQUAL(coord->GetX(), -87.45, 0.001);
+        CPPUNIT_ASSERT_DOUBLES_EQUAL(coord->GetY(), 43.32, 0.001);
+        CPPUNIT_ASSERT_DOUBLES_EQUAL(map->GetViewScale(), 8000.0, 0.0001);
+        CPPUNIT_ASSERT_MESSAGE("Expected DPI of 256", map->GetDisplayDpi(), 256);
+    }
+    catch (MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch (...)
+    {
+        throw;
+    }
+}
+
 void TestMisc::TestCase_MapLayerCollections()
 {
     try

Modified: sandbox/jng/clean_json/Server/src/UnitTesting/TestMisc.h
===================================================================
--- sandbox/jng/clean_json/Server/src/UnitTesting/TestMisc.h	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/UnitTesting/TestMisc.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -48,6 +48,7 @@
     void TestCase_833();
     void TestCase_1304();
     void TestCase_MapLayerCollections();
+    void TestCase_CreateMapWithInitialDisplayParams();
 
 private:
     Ptr<MgSiteConnection> m_siteConnection;

Modified: sandbox/jng/clean_json/Server/src/UnitTesting/UnitTesting.rc
===================================================================
--- sandbox/jng/clean_json/Server/src/UnitTesting/UnitTesting.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Server/src/UnitTesting/UnitTesting.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "UnitTesting Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgUnitTesting"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgUnitTesting.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/UnitTest/Acceptance/nightwatch.json
===================================================================
--- sandbox/jng/clean_json/UnitTest/Acceptance/nightwatch.json	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/UnitTest/Acceptance/nightwatch.json	2017-04-11 15:36:32 UTC (rev 9144)
@@ -3,7 +3,7 @@
     "tests"
   ],
   "output_folder": "reports",
-  "custom_commands_path": "",
+  "custom_commands_path": "./commands",
   "custom_assertions_path": "",
   "page_objects_path": "",
   "globals_path": "",

Modified: sandbox/jng/clean_json/UnitTest/Common/FoundationTest/DotNetUnmanagedApi/DotNetUnmanagedApi.rc
===================================================================
--- sandbox/jng/clean_json/UnitTest/Common/FoundationTest/DotNetUnmanagedApi/DotNetUnmanagedApi.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/UnitTest/Common/FoundationTest/DotNetUnmanagedApi/DotNetUnmanagedApi.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapGuideUnmanagedApi Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MapGuideUnmanagedApi"
             VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
             VALUE "OriginalFilename", "MapGuideUnmanagedApi.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/UnitTest/TestData/FeatureService/FeatureServiceTest.dump
===================================================================
--- sandbox/jng/clean_json/UnitTest/TestData/FeatureService/FeatureServiceTest.dump	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/UnitTest/TestData/FeatureService/FeatureServiceTest.dump	2017-04-11 15:36:32 UTC (rev 9144)
@@ -521,7 +521,7 @@
 ');
 INSERT INTO "HttpTestResults" VALUES('GetSpatialContexts on a SDF resource', 8010, 'text/xml; charset=utf-8', '
   <FdoSpatialContextList>
-    <ProviderName>OSGeo.SDF.3.9</ProviderName>
+    <ProviderName>OSGeo.SDF.4.1</ProviderName>
     <SpatialContext>
       <CoordinateSystemName>GEOGCS["LL84",DATUM["WGS 84",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["Degrees",0.01745329252]]</CoordinateSystemName>
       <CoordinateSystemWkt>GEOGCS["LL84",DATUM["WGS 84",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["Degrees",0.01745329252]]</CoordinateSystemWkt>
@@ -544,7 +544,7 @@
   </FdoSpatialContextList>');
 INSERT INTO "HttpTestResults" VALUES('GetSpatialContexts on a SDF resource', 8011, 'text/xml; charset=utf-8', '
   <FdoSpatialContextList>
-    <ProviderName>OSGeo.SDF.3.9</ProviderName>
+    <ProviderName>OSGeo.SDF.4.1</ProviderName>
     <SpatialContext>
       <CoordinateSystemName>GEOGCS["LL84",DATUM["WGS 84",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["Degrees",0.01745329252]]</CoordinateSystemName>
       <CoordinateSystemWkt>GEOGCS["LL84",DATUM["WGS 84",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["Degrees",0.01745329252]]</CoordinateSystemWkt>
@@ -1851,7 +1851,7 @@
 INSERT INTO "ApiTestResults" VALUES('GetSpatialContexts on a SDF resource when resource data is not set yet', 8009, 'text/plain', 'mgapplicationexception');
 INSERT INTO "ApiTestResults" VALUES('GetSpatialContexts on a SDF resource', 8010, 'text/xml', '
   <FdoSpatialContextList>
-    <ProviderName>OSGeo.SDF.3.9</ProviderName>
+    <ProviderName>OSGeo.SDF.4.1</ProviderName>
     <SpatialContext>
       <CoordinateSystemName>GEOGCS["LL84",DATUM["WGS 84",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["Degrees",0.01745329252]]</CoordinateSystemName>
       <CoordinateSystemWkt>GEOGCS["LL84",DATUM["WGS 84",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["Degrees",0.01745329252]]</CoordinateSystemWkt>
@@ -1874,7 +1874,7 @@
   </FdoSpatialContextList>');
 INSERT INTO "ApiTestResults" VALUES('GetSpatialContexts on a SDF resource', 8011, 'text/xml', '
   <FdoSpatialContextList>
-    <ProviderName>OSGeo.SDF.3.9</ProviderName>
+    <ProviderName>OSGeo.SDF.4.1</ProviderName>
     <SpatialContext>
       <CoordinateSystemName>GEOGCS["LL84",DATUM["WGS 84",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["Degrees",0.01745329252]]</CoordinateSystemName>
       <CoordinateSystemWkt>GEOGCS["LL84",DATUM["WGS 84",SPHEROID["WGS 84",6378137,0],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["Degrees",0.01745329252]]</CoordinateSystemWkt>

Modified: sandbox/jng/clean_json/UnitTest/TestData/ResourceService/ResourceServiceTest.dump
===================================================================
--- sandbox/jng/clean_json/UnitTest/TestData/ResourceService/ResourceServiceTest.dump	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/UnitTest/TestData/ResourceService/ResourceServiceTest.dump	2017-04-11 15:36:32 UTC (rev 9144)
@@ -936,7 +936,7 @@
 INSERT INTO "ApiTestResults" VALUES('RenameResourceData when the old data name and new data name are the same. Expects InvalidArgument exception',15007,'text/plain',X'6D67696E76616C6964617267756D656E74657863657074696F6E');
 INSERT INTO "ApiTestResults" VALUES('RenameResourceData using folder resource. Expects InvalidResourceType exception',15008,'text/plain',X'6D67696E76616C69647265736F7572636574797065657863657074696F6E');
 INSERT INTO "ApiTestResults" VALUES('RenameResourceData using valid parameters',15009,'','');
-INSERT INTO "ApiTestResults" VALUES('SetRresource with empty content file',2005,'text/plain','mginvalidargumentexception');
+INSERT INTO "ApiTestResults" VALUES('SetResource with empty content file',2005,'text/plain','mginvalidargumentexception');
 INSERT INTO "ApiTestResults" VALUES('SetResource when the resource is folder and the content file is not empty',2006,'text/plain',X'6D67696E76616C6964617267756D656E74657863657074696F6E');
 INSERT INTO "ApiTestResults" VALUES('SetResource when the resouce is folder',2007,'','');
 INSERT INTO "ApiTestResults" VALUES('SetResource when the resource is a duplicate folder.(Should work)',2008,'text/plain','An existing resource was detected: Library://Test/ResourceTest/');
@@ -1235,7 +1235,7 @@
 INSERT INTO "HttpTestResults" VALUES('RenameResourceData when the old data name and new data name are the same. Expects InvalidArgument exception',15007,'text/plain',X'4D67496E76616C6964417267756D656E74457863657074696F6E0D0A');
 INSERT INTO "HttpTestResults" VALUES('RenameResourceData using folder resource. Expects InvalidResourceType exception',15008,'text/plain',X'4D67496E76616C69645265736F7572636554797065457863657074696F6E0D0A');
 INSERT INTO "HttpTestResults" VALUES('RenameResourceData using valid parameters',15009,'text/plain; charset=utf-8',X'');
-INSERT INTO "HttpTestResults" VALUES('AddRresource with empty content file',2005,'text/plain','MgInvalidArgumentException
+INSERT INTO "HttpTestResults" VALUES('AddResource with empty content file',2005,'text/plain','MgNullArgumentException
 ');
 INSERT INTO "HttpTestResults" VALUES('AddResource when the resource is folder and the content file is not empty',2006,'text/plain',X'4D67496E76616C6964417267756D656E74457863657074696F6E0D0A');
 INSERT INTO "HttpTestResults" VALUES('AddResource when the resouce is folder',2007,'text/plain; charset=utf-8',X'');

Modified: sandbox/jng/clean_json/UnitTest/WebTier/DotNet/MgTestRunner/Program.cs
===================================================================
--- sandbox/jng/clean_json/UnitTest/WebTier/DotNet/MgTestRunner/Program.cs	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/UnitTest/WebTier/DotNet/MgTestRunner/Program.cs	2017-04-11 15:36:32 UTC (rev 9144)
@@ -44,6 +44,13 @@
                 return map;
             }
 
+            public MgMapBase CreateMap(MgResourceIdentifier mapDefinition, string mapName, int width, int height, double x, double y, double scale, int dpi)
+            {
+                var map = new MgMap(_siteConn);
+                map.Create(mapDefinition, mapName, width, height, x, y, scale, dpi);
+                return map;
+            }
+
             public MgLayerBase CreateLayer(MgResourceIdentifier resId)
             {
                 MgResourceService resSvc = (MgResourceService)_siteConn.CreateService(MgServiceType.ResourceService);

Modified: sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestCommon/CommonTests.cs
===================================================================
--- sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestCommon/CommonTests.cs	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestCommon/CommonTests.cs	2017-04-11 15:36:32 UTC (rev 9144)
@@ -19,6 +19,7 @@
     {
         MgService CreateService(int serviceType);
         MgMapBase CreateMap(MgResourceIdentifier mapDefinition);
+        MgMapBase CreateMap(MgResourceIdentifier mapDefinition, string mapName, int width, int height, double x, double y, double scale, int dpi);
         MgMapBase CreateMap(string coordSys, MgEnvelope env, string name);
         MgLayerBase CreateLayer(MgResourceIdentifier resId);
     }

Modified: sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/RenderingServiceTests.cs
===================================================================
--- sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/RenderingServiceTests.cs	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/RenderingServiceTests.cs	2017-04-11 15:36:32 UTC (rev 9144)
@@ -12,116 +12,47 @@
 {
     public class RenderTileTest : IExternalTest
     {
-        private static void LoadResource(MgResourceService resSvc, string resIdStr, string path)
-        {
-            MgResourceIdentifier resId = new MgResourceIdentifier(resIdStr);
-            MgByteSource bs = new MgByteSource(path);
-            MgByteReader br = bs.GetReader();
-            resSvc.SetResource(resId, br, null);
-        }
-
-        private static void LoadResourceData(MgResourceService resSvc, string resIdStr, string dataName, string dataType, string path)
-        {
-            MgResourceIdentifier resId = new MgResourceIdentifier(resIdStr);
-            MgByteSource bs = new MgByteSource(path);
-            MgByteReader br = bs.GetReader();
-            resSvc.SetResourceData(resId, dataName, dataType, br);
-        }
-
         public void Execute(IPlatformFactory factory, ITestLogger logger)
         {
             var resSvc = (MgResourceService)factory.CreateService(MgServiceType.ResourceService);
             var renderSvc = (MgRenderingService)factory.CreateService(MgServiceType.RenderingService);
             var root = "../../TestData/TileService/";
 
-            LoadResource(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", root + "UT_RoadCenterLines.fs");
-            LoadResourceData(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", "UT_RoadCenterLines.sdf", MgResourceDataType.File, root + "UT_RoadCenterLines.sdf");
-            LoadResource(resSvc, "Library://UnitTests/Layers/RoadCenterLines.LayerDefinition", root + "UT_RoadCenterLines.ldf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", root + "UT_RoadCenterLines.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", "UT_RoadCenterLines.sdf", MgResourceDataType.File, root + "UT_RoadCenterLines.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/RoadCenterLines.LayerDefinition", root + "UT_RoadCenterLines.ldf");
 
-            LoadResource(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", root + "UT_VotingDistricts.fs");
-            LoadResourceData(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", "UT_VotingDistricts.sdf", MgResourceDataType.File, root + "UT_VotingDistricts.sdf");
-            LoadResource(resSvc, "Library://UnitTests/Layers/VotingDistricts.LayerDefinition", root + "UT_VotingDistricts.ldf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", root + "UT_VotingDistricts.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", "UT_VotingDistricts.sdf", MgResourceDataType.File, root + "UT_VotingDistricts.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/VotingDistricts.LayerDefinition", root + "UT_VotingDistricts.ldf");
 
-            LoadResource(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", root + "UT_Parcels.fs");
-            LoadResourceData(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", "UT_Parcels.sdf", MgResourceDataType.File, root + "UT_Parcels.sdf");
-            LoadResource(resSvc, "Library://UnitTests/Layers/Parcels.LayerDefinition", root + "UT_Parcels.ldf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", root + "UT_Parcels.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", "UT_Parcels.sdf", MgResourceDataType.File, root + "UT_Parcels.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/Parcels.LayerDefinition", root + "UT_Parcels.ldf");
 
-            LoadResource(resSvc, "Library://UnitTests/Maps/BaseMap.MapDefinition", root + "UT_BaseMap.mdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Maps/BaseMap.MapDefinition", root + "UT_BaseMap.mdf");
 
             var map = (MgMap)factory.CreateMap(new MgResourceIdentifier("Library://UnitTests/Maps/BaseMap.MapDefinition"));
             var img = renderSvc.RenderTile(map, "BaseLayers", 0, 0);
-            CheckValidImage(img);
+            Utils.CheckValidImage(img);
             img = renderSvc.RenderTile(map, "BaseLayers", 0, 0, 256, 256, 96, MgImageFormats.Png);
-            CheckValidImage(img, 256, 256, MgImageFormats.Png);
+            Utils.CheckValidImage(img, 256, 256, MgImageFormats.Png);
             img = renderSvc.RenderTile(map, "BaseLayers", 0, 0, 256, 256, 96, MgImageFormats.Gif);
-            CheckValidImage(img, 256, 256, MgImageFormats.Gif);
+            Utils.CheckValidImage(img, 256, 256, MgImageFormats.Gif);
             img = renderSvc.RenderTile(map, "BaseLayers", 0, 0, 256, 256, 96, MgImageFormats.Jpeg);
-            CheckValidImage(img, 256, 256, MgImageFormats.Jpeg);
+            Utils.CheckValidImage(img, 256, 256, MgImageFormats.Jpeg);
             img = renderSvc.RenderTile(map, "BaseLayers", 0, 0, 256, 256, 96, MgImageFormats.Png8);
-            CheckValidImage(img, 256, 256, MgImageFormats.Png8);
+            Utils.CheckValidImage(img, 256, 256, MgImageFormats.Png8);
             img = renderSvc.RenderTileXYZ(map, "BaseLayers", 2099, 2985, 13);
-            CheckValidImage(img, 256, 256);
+            Utils.CheckValidImage(img, 256, 256);
             img = renderSvc.RenderTileXYZ(map, "BaseLayers", 2099, 2985, 13, 96, MgImageFormats.Png);
-            CheckValidImage(img, 256, 256, MgImageFormats.Png);
+            Utils.CheckValidImage(img, 256, 256, MgImageFormats.Png);
             img = renderSvc.RenderTileXYZ(map, "BaseLayers", 2099, 2985, 13, 96, MgImageFormats.Png8);
-            CheckValidImage(img, 256, 256, MgImageFormats.Png8);
+            Utils.CheckValidImage(img, 256, 256, MgImageFormats.Png8);
             img = renderSvc.RenderTileXYZ(map, "BaseLayers", 2099, 2985, 13, 96, MgImageFormats.Gif);
-            CheckValidImage(img, 256, 256, MgImageFormats.Gif);
+            Utils.CheckValidImage(img, 256, 256, MgImageFormats.Gif);
             img = renderSvc.RenderTileXYZ(map, "BaseLayers", 2099, 2985, 13, 96, MgImageFormats.Jpeg);
-            CheckValidImage(img, 256, 256, MgImageFormats.Jpeg);
+            Utils.CheckValidImage(img, 256, 256, MgImageFormats.Jpeg);
         }
-
-        private void CheckValidImage(MgByteReader img, int? imageWidth = null, int? imageHeight = null, string format = null)
-        {
-            try
-            {
-                MgByteSink sink = new MgByteSink(img);
-                sink.ToFile("tile.img");
-                using (Image image = Image.FromFile("tile.img"))
-                {
-                    Assert.IsNotNull(image);
-                    if (imageWidth != null)
-                        Assert.Equals(image.Width, imageWidth.Value);
-                    if (imageHeight != null)
-                        Assert.Equals(image.Height, imageHeight.Value);
-
-                    if (format != null)
-                    {
-                        switch(format)
-                        {
-                            case MgImageFormats.Gif:
-                                Assert.Equals(image.RawFormat, ImageFormat.Gif);
-                                break;
-                            case MgImageFormats.Jpeg:
-                                Assert.Equals(image.RawFormat, ImageFormat.Jpeg);
-                                break;
-                            case MgImageFormats.Png:
-                            case MgImageFormats.Png8:
-                                Assert.Equals(image.RawFormat, ImageFormat.Png);
-                                break;
-                            case MgImageFormats.Tiff:
-                                Assert.Equals(image.RawFormat, ImageFormat.Tiff);
-                                break;
-                        }
-                    }
-                }
-            }
-            catch (Exception ex)
-            {
-                throw new AssertException("Invalid image found: " + ex.Message);
-            }
-            finally
-            {
-                if (File.Exists("tile.img"))
-                {
-                    try
-                    {
-                        File.Delete("tile.img");
-                    }
-                    catch { }
-                }
-            }
-        }
     }
-
 }

Copied: sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/StatelessMapTests.cs (from rev 9143, trunk/MgDev/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/StatelessMapTests.cs)
===================================================================
--- sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/StatelessMapTests.cs	                        (rev 0)
+++ sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/StatelessMapTests.cs	2017-04-11 15:36:32 UTC (rev 9144)
@@ -0,0 +1,189 @@
+using OSGeo.MapGuide.Test.Common;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OSGeo.MapGuide.Test.Web.ExternalTests
+{
+    public class QueryFeatureStatelessTest : IExternalTest
+    {
+        public void Execute(IPlatformFactory factory, ITestLogger logger)
+        {
+            var resSvc = (MgResourceService)factory.CreateService(MgServiceType.ResourceService);
+            var renderSvc = (MgRenderingService)factory.CreateService(MgServiceType.RenderingService);
+            var root = "../../TestData/TileService/";
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", root + "UT_RoadCenterLines.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", "UT_RoadCenterLines.sdf", MgResourceDataType.File, root + "UT_RoadCenterLines.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/RoadCenterLines.LayerDefinition", root + "UT_RoadCenterLines.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", root + "UT_VotingDistricts.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", "UT_VotingDistricts.sdf", MgResourceDataType.File, root + "UT_VotingDistricts.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/VotingDistricts.LayerDefinition", root + "UT_VotingDistricts.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", root + "UT_Parcels.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", "UT_Parcels.sdf", MgResourceDataType.File, root + "UT_Parcels.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/Parcels.LayerDefinition", root + "UT_Parcels.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Maps/BaseMap.MapDefinition", root + "UT_BaseMap.mdf");
+
+            var mdfId = new MgResourceIdentifier("Library://UnitTests/Maps/BaseMap.MapDefinition");
+
+            //This is a sample request from the AJAX viewer. It selected 7 features. It should do the same here.
+            var dpi = 96;
+            var width = 773;
+            var height = 696;
+            var scale = 4345.697945713148;
+            var x = -87.72117757411266;
+            var y = 43.7527161153258;
+            var wkt = "POLYGON((-87.72250482778884 43.75497812742761, -87.72134799968197 43.75497812742761, -87.72134799968197 43.75358373640595, -87.72250482778884 43.75358373640595, -87.72250482778884 43.75497812742761))";
+            var map = (MgMap)factory.CreateMap(mdfId, mdfId.Name, width, height, x, y, scale, dpi);
+
+            var wktRw = new MgWktReaderWriter();
+            var geom = wktRw.Read(wkt);
+            var layerNames = new MgStringCollection();
+            layerNames.Add("Parcels");
+
+            var result = renderSvc.QueryFeatures(map, layerNames, geom, MgFeatureSpatialOperations.Intersects, -1);
+            var sel = result.GetSelection();
+            sel.SetMap(map);
+
+            var total = 0;
+            var selLayers = sel.GetLayers();
+
+            foreach (var sl in selLayers)
+            {
+                total += sel.GetSelectedFeaturesCount(sl, sl.FeatureClassName);
+            }
+
+            Assert.AreEqual(7, total);
+        }
+    }
+
+    public class QueryFeaturePropertiesStatelessTest : IExternalTest
+    {
+        public void Execute(IPlatformFactory factory, ITestLogger logger)
+        {
+            var resSvc = (MgResourceService)factory.CreateService(MgServiceType.ResourceService);
+            var renderSvc = (MgRenderingService)factory.CreateService(MgServiceType.RenderingService);
+            var root = "../../TestData/TileService/";
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", root + "UT_RoadCenterLines.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", "UT_RoadCenterLines.sdf", MgResourceDataType.File, root + "UT_RoadCenterLines.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/RoadCenterLines.LayerDefinition", root + "UT_RoadCenterLines.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", root + "UT_VotingDistricts.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", "UT_VotingDistricts.sdf", MgResourceDataType.File, root + "UT_VotingDistricts.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/VotingDistricts.LayerDefinition", root + "UT_VotingDistricts.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", root + "UT_Parcels.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", "UT_Parcels.sdf", MgResourceDataType.File, root + "UT_Parcels.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/Parcels.LayerDefinition", root + "UT_Parcels.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Maps/BaseMap.MapDefinition", root + "UT_BaseMap.mdf");
+
+            var mdfId = new MgResourceIdentifier("Library://UnitTests/Maps/BaseMap.MapDefinition");
+
+            //This is a sample request from the AJAX viewer. It selected 7 features. It should do the same here.
+            var dpi = 96;
+            var width = 773;
+            var height = 696;
+            var scale = 4345.697945713148;
+            var x = -87.72117757411266;
+            var y = 43.7527161153258;
+            var wkt = "POLYGON((-87.72250482778884 43.75497812742761, -87.72134799968197 43.75497812742761, -87.72134799968197 43.75358373640595, -87.72250482778884 43.75358373640595, -87.72250482778884 43.75497812742761))";
+            var map = (MgMap)factory.CreateMap(mdfId, mdfId.Name, width, height, x, y, scale, dpi);
+            
+            var wktRw = new MgWktReaderWriter();
+            var geom = wktRw.Read(wkt);
+            var layerNames = new MgStringCollection();
+            layerNames.Add("Parcels");
+
+            var result = renderSvc.QueryFeatureProperties(map, layerNames, geom, MgFeatureSpatialOperations.Intersects, -1);
+            Assert.AreEqual(7, result.Count);
+        }
+    }
+
+    public class RenderDynamicOverlayStatelessTest : IExternalTest
+    {
+        public void Execute(IPlatformFactory factory, ITestLogger logger)
+        {
+            var resSvc = (MgResourceService)factory.CreateService(MgServiceType.ResourceService);
+            var renderSvc = (MgRenderingService)factory.CreateService(MgServiceType.RenderingService);
+            var root = "../../TestData/TileService/";
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", root + "UT_RoadCenterLines.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", "UT_RoadCenterLines.sdf", MgResourceDataType.File, root + "UT_RoadCenterLines.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/RoadCenterLines.LayerDefinition", root + "UT_RoadCenterLines.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", root + "UT_VotingDistricts.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", "UT_VotingDistricts.sdf", MgResourceDataType.File, root + "UT_VotingDistricts.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/VotingDistricts.LayerDefinition", root + "UT_VotingDistricts.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", root + "UT_Parcels.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", "UT_Parcels.sdf", MgResourceDataType.File, root + "UT_Parcels.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/Parcels.LayerDefinition", root + "UT_Parcels.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Maps/BaseMap.MapDefinition", root + "UT_BaseMap.mdf");
+
+            var mdfId = new MgResourceIdentifier("Library://UnitTests/Maps/BaseMap.MapDefinition");
+
+            //This is a sample request from the AJAX viewer. It selected 7 features. It should do the same here.
+            var dpi = 96;
+            var width = 773;
+            var height = 696;
+            var scale = 4345.697945713148;
+            var x = -87.72117757411266;
+            var y = 43.7527161153258;
+            var wkt = "POLYGON((-87.72250482778884 43.75497812742761, -87.72134799968197 43.75497812742761, -87.72134799968197 43.75358373640595, -87.72250482778884 43.75358373640595, -87.72250482778884 43.75497812742761))";
+            var map = (MgMap)factory.CreateMap(mdfId, mdfId.Name, width, height, x, y, scale, dpi);
+
+            var selColor = new MgColor(0, 0, 255);
+            var renderOpts = new MgRenderingOptions(MgImageFormats.Png, 1 | 2 | 4 | 8, selColor);
+            var result = renderSvc.RenderDynamicOverlay(map, null, renderOpts);
+
+            Utils.CheckValidImage(result, width, height, MgImageFormats.Png);
+        }
+    }
+
+    public class RenderMapLegendStatelessTest : IExternalTest
+    {
+        public void Execute(IPlatformFactory factory, ITestLogger logger)
+        {
+            var resSvc = (MgResourceService)factory.CreateService(MgServiceType.ResourceService);
+            var renderSvc = (MgRenderingService)factory.CreateService(MgServiceType.RenderingService);
+            var root = "../../TestData/TileService/";
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", root + "UT_RoadCenterLines.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/RoadCenterLines.FeatureSource", "UT_RoadCenterLines.sdf", MgResourceDataType.File, root + "UT_RoadCenterLines.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/RoadCenterLines.LayerDefinition", root + "UT_RoadCenterLines.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", root + "UT_VotingDistricts.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/VotingDistricts.FeatureSource", "UT_VotingDistricts.sdf", MgResourceDataType.File, root + "UT_VotingDistricts.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/VotingDistricts.LayerDefinition", root + "UT_VotingDistricts.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", root + "UT_Parcels.fs");
+            Utils.LoadResourceData(resSvc, "Library://UnitTests/Data/Parcels.FeatureSource", "UT_Parcels.sdf", MgResourceDataType.File, root + "UT_Parcels.sdf");
+            Utils.LoadResource(resSvc, "Library://UnitTests/Layers/Parcels.LayerDefinition", root + "UT_Parcels.ldf");
+
+            Utils.LoadResource(resSvc, "Library://UnitTests/Maps/BaseMap.MapDefinition", root + "UT_BaseMap.mdf");
+
+            var mdfId = new MgResourceIdentifier("Library://UnitTests/Maps/BaseMap.MapDefinition");
+
+            var dpi = 96;
+            var width = 773;
+            var height = 696;
+            var scale = 4345.697945713148;
+            var x = -87.72117757411266;
+            var y = 43.7527161153258;
+            var wkt = "POLYGON((-87.72250482778884 43.75497812742761, -87.72134799968197 43.75497812742761, -87.72134799968197 43.75358373640595, -87.72250482778884 43.75358373640595, -87.72250482778884 43.75497812742761))";
+            var map = (MgMap)factory.CreateMap(mdfId, mdfId.Name, width, height, x, y, scale, dpi);
+
+            var bgColor = new MgColor(255, 255, 255);
+            var result = renderSvc.RenderMapLegend(map, 200, 600, bgColor, MgImageFormats.Png);
+            Utils.CheckValidImage(result, 200, 600, MgImageFormats.Png);
+        }
+    }
+}

Copied: sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/Utils.cs (from rev 9143, trunk/MgDev/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/Utils.cs)
===================================================================
--- sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/Utils.cs	                        (rev 0)
+++ sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/ExternalTests/Utils.cs	2017-04-11 15:36:32 UTC (rev 9144)
@@ -0,0 +1,83 @@
+using OSGeo.MapGuide.Test.Common;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OSGeo.MapGuide.Test.Web.ExternalTests
+{
+    class Utils
+    {
+        internal static void LoadResource(MgResourceService resSvc, string resIdStr, string path)
+        {
+            MgResourceIdentifier resId = new MgResourceIdentifier(resIdStr);
+            MgByteSource bs = new MgByteSource(path);
+            MgByteReader br = bs.GetReader();
+            resSvc.SetResource(resId, br, null);
+        }
+
+        internal static void LoadResourceData(MgResourceService resSvc, string resIdStr, string dataName, string dataType, string path)
+        {
+            MgResourceIdentifier resId = new MgResourceIdentifier(resIdStr);
+            MgByteSource bs = new MgByteSource(path);
+            MgByteReader br = bs.GetReader();
+            resSvc.SetResourceData(resId, dataName, dataType, br);
+        }
+
+        internal static void CheckValidImage(MgByteReader img, int? imageWidth = null, int? imageHeight = null, string format = null)
+        {
+            try
+            {
+                MgByteSink sink = new MgByteSink(img);
+                sink.ToFile("tile.img");
+                using (Image image = Image.FromFile("tile.img"))
+                {
+                    Assert.IsNotNull(image);
+                    if (imageWidth != null)
+                        Assert.Equals(image.Width, imageWidth.Value);
+                    if (imageHeight != null)
+                        Assert.Equals(image.Height, imageHeight.Value);
+
+                    if (format != null)
+                    {
+                        switch (format)
+                        {
+                            case MgImageFormats.Gif:
+                                Assert.Equals(image.RawFormat, ImageFormat.Gif);
+                                break;
+                            case MgImageFormats.Jpeg:
+                                Assert.Equals(image.RawFormat, ImageFormat.Jpeg);
+                                break;
+                            case MgImageFormats.Png:
+                            case MgImageFormats.Png8:
+                                Assert.Equals(image.RawFormat, ImageFormat.Png);
+                                break;
+                            case MgImageFormats.Tiff:
+                                Assert.Equals(image.RawFormat, ImageFormat.Tiff);
+                                break;
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new AssertException("Invalid image found: " + ex.Message);
+            }
+            finally
+            {
+                if (File.Exists("tile.img"))
+                {
+                    try
+                    {
+                        File.Delete("tile.img");
+                    }
+                    catch { }
+                }
+            }
+        }
+    }
+}

Modified: sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/TestMapGuideApi.csproj
===================================================================
--- sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/TestMapGuideApi.csproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/UnitTest/WebTier/DotNet/TestMapGuideApi/TestMapGuideApi.csproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -99,6 +99,8 @@
     <Compile Include="ExternalTests\MapTests.cs" />
     <Compile Include="ExternalTests\RenderingServiceTests.cs" />
     <Compile Include="ExternalTests\ResourceServiceTests.cs" />
+    <Compile Include="ExternalTests\StatelessMapTests.cs" />
+    <Compile Include="ExternalTests\Utils.cs" />
     <Compile Include="MapGuideTests.cs" />
     <Compile Include="MappingService\MappingServiceOperationExecutor.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />

Modified: sandbox/jng/clean_json/UnitTest/WebTier/Php/ResourceServiceHttpRequests.php
===================================================================
--- sandbox/jng/clean_json/UnitTest/WebTier/Php/ResourceServiceHttpRequests.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/UnitTest/WebTier/Php/ResourceServiceHttpRequests.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -87,14 +87,14 @@
             if ($this->unitTestParamVm->GetString("ParamValue") != "")
             {
                 $arrayParam['CONTENT']=$this->unitTestParamVm->GetString("ParamValue");
-                $arrayParam['CONTENT']="@".Utils::GetPath($arrayParam['CONTENT']);
+                $arrayParam['CONTENT']=new CURLFile(Utils::GetPath($arrayParam['CONTENT']));
             }
 
             $this->unitTestParamVm->Execute("Select ParamValue from Params WHERE ParamSet=$paramSet AND ParamName=\"HEADER\"");
             if ($this->unitTestParamVm->GetString("ParamValue") != "")
             {
                 $arrayParam['HEADER']=$this->unitTestParamVm->GetString("ParamValue");
-                $arrayParam['HEADER']="@".Utils::GetPath($arrayParam['HEADER']);
+                $arrayParam['HEADER']=new CURLFile(Utils::GetPath($arrayParam['HEADER']));
 
             }
 
@@ -234,7 +234,7 @@
             if (!Utils::IsWindows() && !is_file($path)) {
                 return new Result("", "text/plain");
             }
-            $arrayParam["DATA"]="@".$path;
+            $arrayParam["DATA"]=new CURLFile($path);
 
             return $this->httpRequest->SendRequest($this->URL, $arrayParam, "POST");
         }
@@ -322,7 +322,7 @@
             if ($this->unitTestParamVm->GetString("ParamValue") != "")
             {
                 $arrayParam['PACKAGE']=$this->unitTestParamVm->GetString("ParamValue");
-                $arrayParam['PACKAGE']="@".Utils::GetPath($arrayParam['PACKAGE']);
+                $arrayParam['PACKAGE']=new CURLFile(Utils::GetPath($arrayParam['PACKAGE']));
             }
 
             return $this->httpRequest->SendRequest($this->URL, $arrayParam, "POST");
@@ -347,14 +347,14 @@
             if ($this->unitTestParamVm->GetString("ParamValue") != "")
             {
                 $arrayParam['CONTENT']=$this->unitTestParamVm->GetString("ParamValue");
-                $arrayParam['CONTENT']="@".Utils::GetPath($arrayParam['CONTENT']);
+                $arrayParam['CONTENT']=new CURLFile(Utils::GetPath($arrayParam['CONTENT']));
             }
 
             $this->unitTestParamVm->Execute("Select ParamValue from Params WHERE ParamSet=$paramSet AND ParamName=\"HEADER\"");
             if ($this->unitTestParamVm->GetString("ParamValue") != "")
             {
                 $arrayParam['HEADER']=$this->unitTestParamVm->GetString("ParamValue");
-                $arrayParam['HEADER']="@".Utils::GetPath($arrayParam['HEADER']);
+                $arrayParam['HEADER']=new CURLFile(Utils::GetPath($arrayParam['HEADER']));
             }
 
             return $this->httpRequest->SendRequest($this->URL, $arrayParam, "POST");


Property changes on: sandbox/jng/clean_json/Web/src
___________________________________________________________________
Added: svn:ignore
   + .vs
WebTier.sdf


Modified: sandbox/jng/clean_json/Web/src/ApacheAgent/ApacheAgent.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/ApacheAgent/ApacheAgent.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/ApacheAgent/ApacheAgent.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -52,8 +52,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -70,12 +70,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapGuide mapagent module for Apache"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "mod_mgmapagent.so"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "mod_mgmapagent.so"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/CgiAgent/CgiAgent.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/CgiAgent/CgiAgent.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/CgiAgent/CgiAgent.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapAgent Web Application"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MapAgent"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MapAgent.exe"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Foundation/FoundationApi.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Foundation/FoundationApi.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Foundation/FoundationApi.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "FoundationUnmanagedApi Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "FoundationUnmanagedApi"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "FoundationUnmanagedApi.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApi.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApi.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApi.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "GeometryUnmanagedApi Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "GeometryUnmanagedApi"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "GeometryUnmanagedApi.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApi.vcxproj
===================================================================
--- sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApi.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApi.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -245,7 +245,9 @@
     <None Include="..\catchall.code" />
     <None Include="..\dotnet.i" />
     <None Include="GeometryApiGen.xml" />
-    <None Include="GeometryConstants.xml" />
+    <None Include="GeometryConstants.xml">
+      <SubType>Designer</SubType>
+    </None>
     <None Include="..\getclassid.code" />
   </ItemGroup>
   <ItemGroup>

Modified: sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApiGen.xml
===================================================================
--- sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApiGen.xml	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryApiGen.xml	2017-04-11 15:36:32 UTC (rev 9144)
@@ -132,6 +132,8 @@
     <Header path="../../../../Common/Geometry/PolygonCollection.h" />
     <Header path="../../../../Common/Geometry/Transform.h" />
     <Header path="../../../../Common/Geometry/WktReaderWriter.h" />
+  
+    <Header path="../../../../Common/Geometry/GeometrySimplifier.h" />
 
     <Header path="../../../../Common/Geometry/CoordinateSystem/CoordinateSystem.h" />
     <Header path="../../../../Common/Geometry/CoordinateSystem/CoordinateSystemDictionaryBase.h" />

Modified: sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryConstants.xml
===================================================================
--- sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryConstants.xml	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Geometry/GeometryConstants.xml	2017-04-11 15:36:32 UTC (rev 9144)
@@ -70,6 +70,7 @@
   <Class name="MgGeometricPathInstructionType" />
   <Class name="MgGeometryType" />
   <Class name="MgGeometryComponentType" />
+  <Class name="MgGeometrySimplificationAlgorithmType" />
   <Class name="MgCoordinateSystemCodeFormat" />
   <Class name="MgCoordinateSystemErrorCode" />
   <Class name="MgCoordinateSystemGeodeticTransformationMethod" />
@@ -106,6 +107,7 @@
     <Header path="../../../../Common/Geometry/GeometricPathInstructionType.h" />
     <Header path="../../../../Common/Geometry/GeometryComponentType.h" />
     <Header path="../../../../Common/Geometry/GeometryType.h" />
+    <Header path="../../../../Common/Geometry/GeometrySimplificationAlgorithmType.h" />
     <Header path="../../../../Common/Geometry/CoordinateSystem/CoordinateSystemCodeFormat.h" />
     <Header path="../../../../Common/Geometry/CoordinateSystem/CoordinateSystemErrorCode.h" />
     <Header path="../../../../Common/Geometry/CoordinateSystem/CoordinateSystemGeodeticTransformationMethod.h" />

Modified: sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/MapGuideCommon/MapGuideCommonApi.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/MapGuideCommon/MapGuideCommonApi.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/MapGuideCommon/MapGuideCommonApi.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapGuideCommonUnmanagedApi Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MapGuideCommonUnmanagedApi"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MapGuideCommonUnmanagedApi.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/PlatformBase/PlatformBaseApi.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/PlatformBase/PlatformBaseApi.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/PlatformBase/PlatformBaseApi.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "PlatformBaseUnmanagedApi Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "PlatformBaseUnmanagedApi"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "PlatformBaseUnmanagedApi.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Web/WebApi.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Web/WebApi.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/DotNetUnmanagedApi/Web/WebApi.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "WebUnmanagedApi Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "WebUnmanagedApi"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "WebUnmanagedApi.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/HttpHandler/HttpGetDynamicMapOverlayImage.cpp
===================================================================
--- sandbox/jng/clean_json/Web/src/HttpHandler/HttpGetDynamicMapOverlayImage.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/HttpHandler/HttpGetDynamicMapOverlayImage.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -41,7 +41,18 @@
 
     // Get the requested image format
     m_mapFormat = params->GetParameterValue(MgHttpResourceStrings::reqRenderingFormat);
+    
+    // Format is required. Throw if not given
+    if (m_mapFormat.empty())
+    {
+        MgStringCollection arguments;
+        arguments.Add(MgHttpResourceStrings::reqRenderingFormat);
+        arguments.Add(MgResources::BlankArgument);
 
+        throw new MgInvalidArgumentException(L"MgHttpGetDynamicMapOverlayImage.MgHttpGetDynamicMapOverlayImage",
+            __LINE__, __WFILE__, &arguments, L"MgStringEmpty", NULL);
+    }
+
     INT32 version = m_userInfo->GetApiVersion();
     if (version == MG_API_VERSION(1,0,0))
     {

Modified: sandbox/jng/clean_json/Web/src/HttpHandler/HttpHandler.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/HttpHandler/HttpHandler.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/HttpHandler/HttpHandler.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "HttpHandler Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgHttpHandler"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgHttpHandler.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/IsapiAgent/IsapiAgent.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/IsapiAgent/IsapiAgent.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/IsapiAgent/IsapiAgent.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -52,8 +52,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -70,12 +70,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapGuide mapagent extension for IIS"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "isapi_MapAgent.dll"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "isapi_MapAgent.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/IsapiAgent/IsapiResponseHandler.cpp
===================================================================
--- sandbox/jng/clean_json/Web/src/IsapiAgent/IsapiResponseHandler.cpp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/IsapiAgent/IsapiResponseHandler.cpp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -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);
 }

Modified: sandbox/jng/clean_json/Web/src/JavaApi/JavaApi.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/JavaApi/JavaApi.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/JavaApi/JavaApi.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapGuideJavaApi Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MapGuideJavaApi"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MapGuideJavaApi.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/JavaApiEx/JavaApiEx.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/JavaApiEx/JavaApiEx.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/JavaApiEx/JavaApiEx.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "MapGuideJavaApiEx Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MapGuideJavaApiEx"
             VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
             VALUE "OriginalFilename", "MapGuideJavaApiEx.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/MapGuideApi/Constants.xml
===================================================================
--- sandbox/jng/clean_json/Web/src/MapGuideApi/Constants.xml	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/MapGuideApi/Constants.xml	2017-04-11 15:36:32 UTC (rev 9144)
@@ -85,6 +85,7 @@
   <Class name="MgGeometricPathInstructionType" />
   <Class name="MgGeometryType" />
   <Class name="MgGeometryComponentType" />
+  <Class name="MgGeometrySimplificationAlgorithmType" />
   <Class name="MgLayerGroupType" />
   <Class name="MgLayerType" />
   <Class name="MgFeatureGeometricType" />
@@ -162,6 +163,7 @@
     <Header path="../../../Common/Geometry/GeometricPathInstructionType.h" />
     <Header path="../../../Common/Geometry/GeometryComponentType.h" />
     <Header path="../../../Common/Geometry/GeometryType.h" />
+    <Header path="../../../Common/Geometry/GeometrySimplificationAlgorithmType.h" />
     <Header path="../../../Common/Geometry/CoordinateSystem/CoordinateSystemCodeFormat.h" />
     <Header path="../../../Common/Geometry/CoordinateSystem/CoordinateSystemErrorCode.h" />
     <Header path="../../../Common/Geometry/CoordinateSystem/CoordinateSystemGeodeticTransformationMethod.h" />

Modified: sandbox/jng/clean_json/Web/src/MapGuideApi/MapGuideApiGen.xml
===================================================================
--- sandbox/jng/clean_json/Web/src/MapGuideApi/MapGuideApiGen.xml	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/MapGuideApi/MapGuideApiGen.xml	2017-04-11 15:36:32 UTC (rev 9144)
@@ -215,6 +215,8 @@
     <Header path="../../../Common/Geometry/PolygonCollection.h" />
     <Header path="../../../Common/Geometry/Transform.h" />
     <Header path="../../../Common/Geometry/WktReaderWriter.h" />
+  
+    <Header path="../../../Common/Geometry/GeometrySimplifier.h" />
 
     <Header path="../../../Common/Geometry/CoordinateSystem/CoordinateSystem.h" />
     <Header path="../../../Common/Geometry/CoordinateSystem/CoordinateSystemDictionaryBase.h" />

Modified: sandbox/jng/clean_json/Web/src/PhpApi/PhpApi.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/PhpApi/PhpApi.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/PhpApi/PhpApi.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "php_MapGuideApi Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "php_MapGuideApi"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "php_MapGuideApi.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Modified: sandbox/jng/clean_json/Web/src/WebApp/WebApp.rc
===================================================================
--- sandbox/jng/clean_json/Web/src/WebApp/WebApp.rc	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/WebApp/WebApp.rc	2017-04-11 15:36:32 UTC (rev 9144)
@@ -47,8 +47,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,0,0,0
- PRODUCTVERSION 3,0,0,0
+ FILEVERSION 3,1,0,0
+ PRODUCTVERSION 3,1,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -65,12 +65,12 @@
         BEGIN
             VALUE "CompanyName", "Open Source Geospatial Foundation"
             VALUE "FileDescription", "WebApp Dynamic Link Library"
-            VALUE "FileVersion", "3, 0, 0, 0"
+            VALUE "FileVersion", "3, 1, 0, 0"
             VALUE "InternalName", "MgWebApp"
-            VALUE "LegalCopyright", "Copyright (C) 2006-2011 by Autodesk, Inc."
+            VALUE "LegalCopyright", "Copyright (C) Autodesk, Inc. 2004 - 2016."
             VALUE "OriginalFilename", "MgWebApp.dll"
             VALUE "ProductName", "MapGuide Open Source"
-            VALUE "ProductVersion", "3, 0, 0, 0"
+            VALUE "ProductVersion", "3, 1, 0, 0"
         END
     END
     BLOCK "VarFileInfo"

Copied: sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.aps (from rev 9143, trunk/MgDev/Web/src/WebSupport/WebSupport.aps)
===================================================================
(Binary files differ)

Copied: sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.rc (from rev 9143, trunk/MgDev/Web/src/WebSupport/WebSupport.rc)
===================================================================
(Binary files differ)

Modified: sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.vcxproj
===================================================================
--- sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.vcxproj	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.vcxproj	2017-04-11 15:36:32 UTC (rev 9144)
@@ -203,6 +203,7 @@
     <ClCompile Include="InitializeWebTier.cpp" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include="resource.h" />
     <ClInclude Include="WebSupport.h" />
   </ItemGroup>
   <ItemGroup>
@@ -219,6 +220,9 @@
       <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="WebSupport.rc" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>

Modified: sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.vcxproj.filters
===================================================================
--- sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.vcxproj.filters	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/WebSupport/WebSupport.vcxproj.filters	2017-04-11 15:36:32 UTC (rev 9144)
@@ -23,5 +23,13 @@
     <ClInclude Include="WebSupport.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="resource.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="WebSupport.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file

Copied: sandbox/jng/clean_json/Web/src/WebSupport/resource.h (from rev 9143, trunk/MgDev/Web/src/WebSupport/resource.h)
===================================================================
--- sandbox/jng/clean_json/Web/src/WebSupport/resource.h	                        (rev 0)
+++ sandbox/jng/clean_json/Web/src/WebSupport/resource.h	2017-04-11 15:36:32 UTC (rev 9144)
@@ -0,0 +1,14 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by WebSupport.rc
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        101
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1001
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif

Modified: sandbox/jng/clean_json/Web/src/mapadmin/performanceReport.php
===================================================================
--- sandbox/jng/clean_json/Web/src/mapadmin/performanceReport.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapadmin/performanceReport.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1148,10 +1148,10 @@
             var buttonPanelInnerHtml="<table>";
             buttonPanelInnerHtml+="<tr>";
             buttonPanelInnerHtml+="<td>";
-            buttonPanelInnerHtml+='<button type="button" id="mapViewerAutoFocusBtn" style="width: 57px; height: 22px; border-style:none;border: 1px solid #000000;" onclick="window.parent.parent.MapViewerBtnOKClicked()" tabindex="1">OK</button>';
+            buttonPanelInnerHtml+='<button type="button" id="mapViewerAutoFocusBtn" style="z-index: 50; width: 57px; height: 22px; border-style:none;border: 1px solid #000000;" onclick="window.parent.parent.MapViewerBtnOKClicked()" tabindex="1">OK</button>';
             buttonPanelInnerHtml+="</td>";
             buttonPanelInnerHtml+="<td>";
-            buttonPanelInnerHtml+='<button type="button" style="width: 57px; height: 22px; border-style:none;border: 1px solid #000000;margin-left:10px;" onclick="window.parent.parent.MapViewerBtnCloseClicked()"  tabindex="2">Cancel</button>';
+            buttonPanelInnerHtml+='<button type="button" style="z-index: 50; width: 57px; height: 22px; border-style:none;border: 1px solid #000000;margin-left:10px;" onclick="window.parent.parent.MapViewerBtnCloseClicked()"  tabindex="2">Cancel</button>';
             buttonPanelInnerHtml+="</td>";
             buttonPanelInnerHtml+="</tr>";
             buttonPanelInnerHtml+="</table>";

Modified: sandbox/jng/clean_json/Web/src/mapadmin/resizableadmin.php
===================================================================
--- sandbox/jng/clean_json/Web/src/mapadmin/resizableadmin.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapadmin/resizableadmin.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -17,7 +17,7 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-    define( 'SITE_ADMINISTRATOR_VERSION', "3.0.0.0" );
+    define( 'SITE_ADMINISTRATOR_VERSION', "3.1.0.0" );
 
     define( 'APP_TITLE',        "MapGuide Site Administrator" );
     define( 'APP_LOGO',         "" );

Modified: sandbox/jng/clean_json/Web/src/mapviewerjava/ajaxviewerabout.jsp
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerjava/ajaxviewerabout.jsp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerjava/ajaxviewerabout.jsp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -32,7 +32,7 @@
 String titleBar = product + " Viewer";
 String serverTitle = product + " Server";
 String viewerTitle = product + " Viewer";
-String viewerVersion = "3.0.0.0";
+String viewerVersion = "3.1.0.0";
 String serverVersion;
 %>
 

Modified: sandbox/jng/clean_json/Web/src/mapviewerjava/buffer.jsp
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerjava/buffer.jsp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerjava/buffer.jsp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -274,7 +274,8 @@
             if(filter == null || filter.length() == 0)
                 continue;
 
-            MgFeatureQueryOptions query = new MgFeatureQueryOptions();
+            MgClassDefinition clsDef = selLayer.GetClassDefinition();
+            MgFeatureQueryOptions query = BuildFeatureQueryOptions(clsDef);
             query.SetFilter(filter);
 
             MgResourceIdentifier featureSource = new MgResourceIdentifier(selLayer.GetFeatureSourceId());

Modified: sandbox/jng/clean_json/Web/src/mapviewerjava/common.jsp
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerjava/common.jsp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerjava/common.jsp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -300,4 +300,54 @@
     return validColorString;
 }
 
+MgFeatureQueryOptions BuildFeatureQueryOptions(MgClassDefinition classDef) throws MgException
+{
+    MgFeatureQueryOptions query = new MgFeatureQueryOptions();
+    String geomPropName = classDef.GetDefaultGeometryPropertyName();
+    MgPropertyDefinitionCollection propertyList = classDef.GetProperties();
+    for (int i = 0; i < propertyList.GetCount(); i++)
+    {
+        MgPropertyDefinition propertyDef = propertyList.GetItem(i);
+        String property = propertyDef.GetName();
+
+        if ((!property.equals(geomPropName)) && (propertyDef.GetPropertyType() == MgFeaturePropertyType.DataProperty)) 
+        {
+            MgDataPropertyDefinition dp = (MgDataPropertyDefinition)propertyDef;
+            int propertyType = dp.GetDataType();
+            switch (propertyType) {
+                case MgPropertyType.Boolean:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Byte:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.DateTime:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Single:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Double:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Int16:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Int32:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Int64:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.String:
+                    query.AddFeatureProperty(property);
+                    break;
+            }
+        } else if (property.equals(geomPropName)) { 
+            query.AddFeatureProperty(property);
+        } 
+    }
+    return query;
+}
+
 %>

Modified: sandbox/jng/clean_json/Web/src/mapviewerjava/search.jsp
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerjava/search.jsp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerjava/search.jsp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -105,6 +105,8 @@
         if(layer == null)
             throw new SearchError(MessageFormat.format(MgLocalizer.GetString("SEARCHLAYERNOTFOUND", locale), new Object[] { layerName }), searchError);
 
+        userInput = userInput.replace("'", "''");
+
         //substitute the input tag with the actual user input to make up the filter
         int varIndex = filter.indexOf("$USER_VARIABLE");
         if(varIndex != -1)
@@ -114,10 +116,11 @@
         boolean displayAll = (resProps.size() == 0);
 
         //query the features
-        MgFeatureQueryOptions opts = new MgFeatureQueryOptions();
+        MgClassDefinition clsDef = layer.GetClassDefinition();
+        MgFeatureQueryOptions opts = BuildFeatureQueryOptions(clsDef);
         opts.SetFilter(filter);
         String featureClassName = layer.GetFeatureClassName();
-        features = layer.SelectFeatures( opts);
+        features = layer.SelectFeatures(opts);
         boolean hasResult = features.ReadNext();
 
         if(hasResult)

Modified: sandbox/jng/clean_json/Web/src/mapviewerjava/selectwithin.jsp
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerjava/selectwithin.jsp	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerjava/selectwithin.jsp	2017-04-11 15:36:32 UTC (rev 9144)
@@ -116,7 +116,8 @@
         MgLayer layer = (MgLayer) selLayers.GetItem(i);
         String filter = sel.GenerateFilter(layer, layer.GetFeatureClassName());
 
-        MgFeatureQueryOptions query = new MgFeatureQueryOptions();
+        MgClassDefinition clsDef = layer.GetClassDefinition();
+        MgFeatureQueryOptions query = BuildFeatureQueryOptions(clsDef);
         query.SetFilter(filter);
         MgResourceIdentifier featureSource = new MgResourceIdentifier(layer.GetFeatureSourceId());
         MgFeatureReader features = featureSrvc.SelectFeatures(featureSource, layer.GetFeatureClassName(), query);

Modified: sandbox/jng/clean_json/Web/src/mapviewernet/ajaxviewerabout.aspx
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewernet/ajaxviewerabout.aspx	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewernet/ajaxviewerabout.aspx	2017-04-11 15:36:32 UTC (rev 9144)
@@ -32,7 +32,7 @@
 String titleBar = product + " Viewer";
 String serverTitle = product + " Server";
 String viewerTitle = product + " Viewer";
-String viewerVersion = "3.0.0.0";
+String viewerVersion = "3.1.0.0";
 String serverVersion = "##Unknown";
 </script>
 

Modified: sandbox/jng/clean_json/Web/src/mapviewernet/buffer.aspx
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewernet/buffer.aspx	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewernet/buffer.aspx	2017-04-11 15:36:32 UTC (rev 9144)
@@ -254,7 +254,8 @@
             if (filter == null || filter.Length == 0)
                 continue;
 
-            MgFeatureQueryOptions query = new MgFeatureQueryOptions();
+            MgClassDefinition clsDef = selLayer.GetClassDefinition();
+            MgFeatureQueryOptions query = BuildFeatureQueryOptions(clsDef);
             query.SetFilter(filter);
 
             MgResourceIdentifier featureSource = new MgResourceIdentifier(selLayer.GetFeatureSourceId());

Modified: sandbox/jng/clean_json/Web/src/mapviewernet/common.aspx
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewernet/common.aspx	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewernet/common.aspx	2017-04-11 15:36:32 UTC (rev 9144)
@@ -292,4 +292,54 @@
     return validColorString;
 }
 
+MgFeatureQueryOptions BuildFeatureQueryOptions(MgClassDefinition classDef)
+{
+    MgFeatureQueryOptions query = new MgFeatureQueryOptions();
+    String geomPropName = classDef.GetDefaultGeometryPropertyName();
+    MgPropertyDefinitionCollection propertyList = classDef.GetProperties();
+    for (int i = 0; i < propertyList.GetCount(); i++)
+    {
+        MgPropertyDefinition propertyDef = propertyList.GetItem(i);
+        String property = propertyDef.GetName();
+
+        if ((property != geomPropName) && (propertyDef.GetPropertyType() == MgFeaturePropertyType.DataProperty)) 
+        {
+            MgDataPropertyDefinition dp = (MgDataPropertyDefinition)propertyDef;
+            int propertyType = dp.GetDataType();
+            switch (propertyType) {
+                case MgPropertyType.Boolean:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Byte:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.DateTime:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Single:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Double:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Int16:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Int32:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.Int64:
+                    query.AddFeatureProperty(property);
+                    break;
+                case MgPropertyType.String:
+                    query.AddFeatureProperty(property);
+                    break;
+            }
+        } else if (property == geomPropName) { 
+            query.AddFeatureProperty(property);
+        } 
+    }
+    return query;
+}
+
 </script>

Modified: sandbox/jng/clean_json/Web/src/mapviewernet/search.aspx
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewernet/search.aspx	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewernet/search.aspx	2017-04-11 15:36:32 UTC (rev 9144)
@@ -93,6 +93,9 @@
             {
                 throw new SearchError(String.Format(MgLocalizer.GetString("SEARCHLAYERNOTFOUND", locale), new Object[] { layerName }), searchError);
             }
+            
+            //escape single quote in userInput
+            userInput = userInput.Replace("'", "''");
 
             //substitute the input tag with the actual user input to make up the filter
             filter = filter.Replace("$USER_VARIABLE", userInput);
@@ -103,7 +106,8 @@
             bool displayAll = (resProps.Count == 0);
 
             //query the features
-            MgFeatureQueryOptions opts = new MgFeatureQueryOptions();
+            MgClassDefinition clsDef = layer.GetClassDefinition();
+            MgFeatureQueryOptions opts = BuildFeatureQueryOptions(clsDef);
             opts.SetFilter(filter);
             String featureClassName = layer.GetFeatureClassName();
             features = layer.SelectFeatures(opts);

Modified: sandbox/jng/clean_json/Web/src/mapviewernet/selectwithin.aspx
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewernet/selectwithin.aspx	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewernet/selectwithin.aspx	2017-04-11 15:36:32 UTC (rev 9144)
@@ -113,7 +113,8 @@
         MgLayer layer = (MgLayer) selLayers.GetItem(i);
         String filter = sel.GenerateFilter(layer, layer.GetFeatureClassName());
 
-        MgFeatureQueryOptions query = new MgFeatureQueryOptions();
+        MgClassDefinition clsDef = layer.GetClassDefinition();
+        MgFeatureQueryOptions query = BuildFeatureQueryOptions(clsDef);
         query.SetFilter(filter);
         MgResourceIdentifier featureSource = new MgResourceIdentifier(layer.GetFeatureSourceId());
         MgFeatureReader features = featureSrvc.SelectFeatures(featureSource, layer.GetFeatureClassName(), query);

Modified: sandbox/jng/clean_json/Web/src/mapviewerphp/ajaxviewerabout.php
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerphp/ajaxviewerabout.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerphp/ajaxviewerabout.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -21,7 +21,7 @@
 include 'product.php';
 include 'constants.php';
 
-define('VIEWER_VERSION', "3.0.0.0" );
+define('VIEWER_VERSION', "3.1.0.0" );
 
 $titleBar = $product . " Viewer";
 $serverTitle = $product . " Server";

Modified: sandbox/jng/clean_json/Web/src/mapviewerphp/buffer.php
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerphp/buffer.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerphp/buffer.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -241,7 +241,8 @@
             if($filter == "")
                 continue;
 
-            $query = new MgFeatureQueryOptions();
+            $clsDef = $selLayer->GetClassDefinition();
+            $query = BuildFeatureQueryOptions($clsDef);
             $query->SetFilter($filter);
 
             $featureSource = new MgResourceIdentifier($selLayer->GetFeatureSourceId());

Modified: sandbox/jng/clean_json/Web/src/mapviewerphp/common.php
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerphp/common.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerphp/common.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -282,4 +282,54 @@
     return $paramValue;
 }
 
+function BuildFeatureQueryOptions($classDef)
+{
+    $query = new MgFeatureQueryOptions();
+    $geomPropName = $classDef->GetDefaultGeometryPropertyName(); 
+    $propertyList = $classDef->GetProperties(); 
+
+    for ($i = 0; $i < $propertyList->GetCount(); $i++) 
+    {
+        $propertyDef = $propertyList->GetItem($i); 
+        $property = $propertyList->GetItem($i)->GetName(); 
+
+        if (($property != $geomPropName) && ($propertyDef->GetPropertyType() == MgFeaturePropertyType::DataProperty)) 
+        { 
+            $propertyType = $propertyList->GetItem($i)->GetDataType(); 
+            switch ($propertyType) { 
+                case MgPropertyType::Boolean: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Byte: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::DateTime: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Single: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Double: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Int16: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Int32: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Int64: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::String: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+            }
+        } else if ($property == $geomPropName){ 
+            $query->AddFeatureProperty($property); 
+        } 
+    }
+    return $query;
+}
+
 ?>

Modified: sandbox/jng/clean_json/Web/src/mapviewerphp/search.php
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerphp/search.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerphp/search.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -43,6 +43,7 @@
     $resNames = array();
     $resProps = array();
     $matchLimit = 0;
+    $features = NULL;
 
     GetRequestParameters();
     SetLocalizedFilesPath(GetLocalizationPath());
@@ -77,6 +78,8 @@
         {
             trigger_error(FormatMessage("SEARCHLAYERNOTFOUND", $locale, array($layerName)));
         }
+        
+        $userInput = str_replace("'", "''", $userInput);
 
         //unescape strings
         //
@@ -103,7 +106,8 @@
         $displayAll = (count($resProps) == 0);
 
         //query the features
-        $opts = new MgFeatureQueryOptions();
+        $clsDef = $layer->GetClassDefinition();
+        $opts = BuildFeatureQueryOptions($clsDef);
         $opts->SetFilter($filter);
         $featureClassName = $layer->GetFeatureClassName();
         $features = $layer->SelectFeatures($opts);

Modified: sandbox/jng/clean_json/Web/src/mapviewerphp/selectwithin.php
===================================================================
--- sandbox/jng/clean_json/Web/src/mapviewerphp/selectwithin.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/mapviewerphp/selectwithin.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -99,7 +99,8 @@
     {
         $layer = $selLayers->GetItem($i);
         $filter = $sel->GenerateFilter($layer, $layer->GetFeatureClassName());
-        $query = new MgFeatureQueryOptions();
+        $clsDef = $layer->GetClassDefinition();
+        $query = BuildFeatureQueryOptions($clsDef);
         $query->SetFilter($filter);
         $featureSource = new MgResourceIdentifier($layer->GetFeatureSourceId());
         $features = $featureSrvc->SelectFeatures($featureSource, $layer->GetFeatureClassName(), $query);

Modified: sandbox/jng/clean_json/Web/src/schemareport/displayschemafunctions.php
===================================================================
--- sandbox/jng/clean_json/Web/src/schemareport/displayschemafunctions.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/schemareport/displayschemafunctions.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -21,6 +21,65 @@
 
 <?php
 
+// Builds a MgFeatureQueryOptions with an explicit property list based
+// on the given class definition
+//
+// This is to ensure that a "select * from featureclass" query from relational
+// providers will have its column list bounded to what is recognized in the
+// class definition. Some providers are known to produce "select * from table"
+// queries that "leak" out column types that the provider does not know how to
+// process. Using an explicit property list from its class definition will
+// allow us to avoid such issues
+function BuildFeatureQueryOptions($classDef)
+{
+    $query = new MgFeatureQueryOptions();
+    $geomPropName = $classDef->GetDefaultGeometryPropertyName(); 
+    $propertyList = $classDef->GetProperties(); 
+
+    for ($i = 0; $i < $propertyList->GetCount(); $i++) 
+    {
+        $propertyDef = $propertyList->GetItem($i); 
+        $property = $propertyList->GetItem($i)->GetName(); 
+
+        if (($property != $geomPropName) && ($propertyDef->GetPropertyType() == MgFeaturePropertyType::DataProperty)) 
+        { 
+            $propertyType = $propertyList->GetItem($i)->GetDataType(); 
+            switch ($propertyType) { 
+                case MgPropertyType::Boolean: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Byte: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::DateTime: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Single: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Double: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Int16: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Int32: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::Int64: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+                case MgPropertyType::String: 
+                    $query->AddFeatureProperty($property); 
+                    break; 
+            }
+        } else if ($property == $geomPropName){ 
+            $query->AddFeatureProperty($property); 
+        } 
+    }
+    return $query;
+}
+
 class MBR 
 {
     public $coordinateSystem;
@@ -120,7 +179,7 @@
     //
     //NOTE: If MapGuide supported scrollable readers like FDO, we'd have also tried 
     //that as well.
-    $totalEntries = -1;
+    $totalEntries = 0;
     $featureName = $schemaName . ":" . $className;
     $canCount = false;
     $gotCount = false;

Modified: sandbox/jng/clean_json/Web/src/schemareport/showclass.php
===================================================================
--- sandbox/jng/clean_json/Web/src/schemareport/showclass.php	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/schemareport/showclass.php	2017-04-11 15:36:32 UTC (rev 9144)
@@ -103,7 +103,8 @@
 
                 try
                 {
-                    $featureReader = $featureSrvc->SelectFeatures($resId, $qualifiedClassName, null);
+                    $query = BuildFeatureQueryOptions($classDef);
+                    $featureReader = $featureSrvc->SelectFeatures($resId, $qualifiedClassName, $query);
 
                     // Find the correct index on featureReader
                     $count = $index;


Property changes on: sandbox/jng/clean_json/Web/src/viewerfiles
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/2.4/MgDev/Web/src/viewerfiles:6738-6741,6749-6756,6777-6783,6785-6787,6789,6791-6794,6796-6801,6954-6962,6986-7006
/branches/2.6/MgDev/Web/src/viewerfiles:8288-8292,8297
/sandbox/adsk/2.2gp/Web/src/viewerfiles:5392
/sandbox/adsk/3.0m/Web/src/viewerfiles:8607
/sandbox/jng/createruntimemap/Web/src/viewerfiles:7486-7555
/sandbox/jng/v30/Web/src/viewerfiles:8226-8227
   + /branches/2.4/MgDev/Web/src/viewerfiles:6738-6741,6749-6756,6777-6783,6785-6787,6789,6791-6794,6796-6801,6954-6962,6986-7006
/branches/2.6/MgDev/Web/src/viewerfiles:8288-8292,8297
/branches/3.1/MgDev/Web/src/viewerfiles:9058-9059
/sandbox/adsk/2.2gp/Web/src/viewerfiles:5392
/sandbox/adsk/3.0m/Web/src/viewerfiles:8607
/sandbox/jng/createruntimemap/Web/src/viewerfiles:7486-7555
/sandbox/jng/v30/Web/src/viewerfiles:8226-8227
/trunk/MgDev/Web/src/viewerfiles:8818-9143

Modified: sandbox/jng/clean_json/Web/src/viewerfiles/ajaxmappane.templ
===================================================================
--- sandbox/jng/clean_json/Web/src/viewerfiles/ajaxmappane.templ	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/Web/src/viewerfiles/ajaxmappane.templ	2017-04-11 15:36:32 UTC (rev 9144)
@@ -3182,7 +3182,7 @@
             {
                 //Check if we have attributes inline
                 var props = xmlIn.getElementsByTagName("SelectedLayer");
-                var resp = ConvertToSelectedFeatureSet(props);
+                var resp = ConvertToSelectedFeatureSet(props, xmlIn, append);
                 ProcessSelectedFeatureSet(resp, append);
             }
             else
@@ -4197,25 +4197,48 @@
 var selFeatures = {};
 var selBounds = null;
 
-function ConvertToSelectedFeatureSet(layerEls)
+function GetSelectedLayerElement(selLayerEls, layerId)
 {
+    for (var i = 0; i < selLayerEls.length; i++) {
+        var selLayerEl = selLayerEls[i];
+        if (selLayerEl.getAttribute("id") == layerId) {
+            return selLayerEl;
+        }
+    }
+    return null;
+}
+
+function ConvertToSelectedFeatureSet(layerEls, xmlIn, append)
+{
     var featuresByLayer = {};
+    //Unfortunately, Selection does not model the selection set
+    //in a way that we can attach selection keys without breaking
+    //the API, so we have no choice but to re-parse the XML selection
+    //again
+    var selLayerEls = xmlIn.getElementsByTagName("Layer");
+    //assert: selLayerEls.length == layerEls.length
     for (var i = 0; i < layerEls.length; i++)
     {
         var layerEl = layerEls[i];
+        var layerId = layerEl.getAttribute("id");
+        var selLayerEl = GetSelectedLayerElement(selLayerEls, layerId);
+        var selFeatEls = selLayerEl.getElementsByTagName("ID");
         var layerName = layerEl.getAttribute("name");
         if (!featuresByLayer[layerName])
             featuresByLayer[layerName] = [];
             
         var featEls = layerEl.getElementsByTagName("Feature");
+        var selLayer = selection.layers.getItem(layerId);
+        //assert: selFeatEls.length == featEls.legnth
         for (var j = 0; j < featEls.length; j++)
         {
-            var feat = { values: [] };
+            var feat = { /* INTERNAL_API */ selKey: ((msie && !msie10plus) ? selFeatEls[j].text : selFeatEls[j].textContent), values: [] };
             var featEl = featEls[j];
             var bounds = featEl.getElementsByTagName("Bounds")[0];
             var bbox = ((msie && !msie10plus) ? bounds.text : bounds.textContent).split(" ");
             feat.zoom = { minx: parseFloat(bbox[0]), miny: parseFloat(bbox[1]), maxx: parseFloat(bbox[2]), maxy: parseFloat(bbox[3]) };
             
+            var featVals = [];
             var propEls = featEl.getElementsByTagName("Property");
             for (var k = 0; k < propEls.length; k++)
             {
@@ -4226,8 +4249,29 @@
                 var value = null;
                 if (valueEl.length == 1)
                     value = (msie && !msie10plus) ? valueEl[0].text : valueEl[0].textContent;
-                feat.values.push({ name: name, value: value });
+                featVals.push({ name: name, value: value });
             }
+            
+            var layerMeta = layerEl.getElementsByTagName("LayerMetadata")[0];
+            var layerPropDisplayNames = layerMeta.getElementsByTagName("DisplayName");
+            
+            var sortedFeatVals = [];
+            //Sort them according to property display order
+            for (var k = 0; k < layerPropDisplayNames.length; k++) {
+                var displayName = ((msie && !msie10plus) ? layerPropDisplayNames[k].text : layerPropDisplayNames[k].textContent);
+                for (var fp = 0; fp < featVals.length; fp++) {
+                    var featPropVal = featVals[fp];
+                    if (featPropVal.name == displayName) {
+                        sortedFeatVals.push(featPropVal);
+                        break;
+                    }
+                }
+            }
+            //Then load into feature
+            for (var k = 0; k < sortedFeatVals.length; k++) {
+                feat.values.push(sortedFeatVals[k]);
+            }
+            
             featuresByLayer[layerName].push(feat);
         }
     }
@@ -4275,7 +4319,21 @@
                 selFeatures[layerName] = [];
             for (var i = 0; i < resp[layerName].length; i++) {
                 var feat = resp[layerName][i];
-                selFeatures[layerName].push(feat);
+                var selIndex = -1;
+                for (var j = 0; j < selFeatures[layerName].length; j++) {
+                    var selFeat = selFeatures[layerName][j];
+                    if (selFeat.selKey == feat.selKey) {
+                        selIndex = j;
+                        break;
+                    }
+                }
+                //In append mode, if we find an existing selected feature with
+                //the same selection key, remove it instead of adding on.
+                if (selIndex >= 0) {
+                    selFeatures[layerName].splice(selIndex, 1);
+                } else {
+                    selFeatures[layerName].push(feat);
+                }
             }
         } else {
             selFeatures[layerName] = resp[layerName];

Modified: sandbox/jng/clean_json/build_oem.sh
===================================================================
--- sandbox/jng/clean_json/build_oem.sh	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/build_oem.sh	2017-04-11 15:36:32 UTC (rev 9144)
@@ -236,10 +236,19 @@
     # For this version of GEOS, don't run the aclocal/libtoolize/automake/autoconf quartet as we normally do, as it
     # may produce an unusable configure script. Just run autoreconf to regenerate the configure script from configure.in
     autoreconf
+    
+    # Fix for error:
+    # virtual void geos::geom::GeometryComponentFilter::filter_ro(const geos::geom::Geometry*): Assertion `0' failed
+    #
+    # Based on this GEOS ticket: https://trac.osgeo.org/geos/ticket/469
+    # The fix to to set the appropriate CFLAGS/CPPFLAGS/CXXFLAGS/LDFLAGS/FFLAGS before calling the configure script
+    #
+    # If we upgrade our internal copy of GEOS in the future, this should be reviewed
+    chmod +x configure
     if [ $BUILD_CPU -eq 64 ]; then
-        sh ./configure --with-pic --enable-silent-rules --prefix="${INSTALLDIR}"
+        CFLAGS="-m64" CPPFLAGS="-m64" CXXFLAGS="-m64" LDFLAGS="-m64" FFLAGS="-m64" LDFLAGS="-L/usr/lib64" ./configure --with-pic --enable-silent-rules --prefix="${INSTALLDIR}"
     else
-        sh ./configure --enable-silent-rules --prefix="${INSTALLDIR}"
+        CFLAGS="-m32" CPPFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" FFLAGS="-m32" LDFLAGS="-L/usr/lib" ./configure --enable-silent-rules --prefix="${INSTALLDIR}"
     fi
     make
     # The check build is disabled as the build will fail with automake version < 2.59
@@ -673,7 +682,7 @@
 #**********************************************************
 
 pushd Oem
-for lib in linuxapt fusion ace dwfcore dwftk geos bdbxml cppunit imake zlib libpng jpeg freetype gd agg json csmap;
+for lib in linuxapt fusion ace dwfcore dwftk bdbxml cppunit imake zlib libpng jpeg freetype gd agg json csmap geos;
 do
     echo "$lib: Initialization..........................."
     init_"$lib"

Modified: sandbox/jng/clean_json/configure.in
===================================================================
--- sandbox/jng/clean_json/configure.in	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/configure.in	2017-04-11 15:36:32 UTC (rev 9144)
@@ -4,7 +4,7 @@
 # Variables
 # Following are the makefile directories
 #----------------------------------------------------------------------
-AC_INIT(mapguide,3.0.0,http://mapguide.osgeo.org)
+AC_INIT(mapguide,3.1.0,http://mapguide.osgeo.org)
 AC_CONFIG_SRCDIR(configure.in)
 AM_INIT_AUTOMAKE
 AM_INIT_AUTOMAKE([1.9 tar-pax])
@@ -39,7 +39,7 @@
 map_opt_oem_distsubdirs=""
 
 dnl *******************************************************
-dnl PHP 5.5.17 Configuration
+dnl PHP 5.6.23 Configuration
 dnl *******************************************************
 AC_ARG_WITH([php],
         MAP_HELP_STRING([--with-php],
@@ -48,8 +48,8 @@
         [with_php=no])
 
 if test $with_php = "no"; then
-    AC_MSG_NOTICE([Using php 5.5.17 from included Oem Directory])
-	php_src=`pwd`/Oem/LinuxApt/php-5.5.17
+    AC_MSG_NOTICE([Using php 5.6.23 from included Oem Directory])
+	php_src=`pwd`/Oem/LinuxApt/php-5.6.23
 else
     AC_MSG_NOTICE([Using custom PHP source directory])
 	php_src=$with_php
@@ -62,7 +62,7 @@
 AC_SUBST(php_src)
 
 dnl *******************************************************
-dnl httpd 2.4.10 Configuration
+dnl httpd 2.4.18 Configuration
 dnl *******************************************************
 AC_ARG_WITH([httpd],
 		MAP_HELP_STRING([--with-httpd],
@@ -71,8 +71,8 @@
 		[with_httpd=no])
 
 if test $with_httpd = "no"; then
-    AC_MSG_NOTICE([Using httpd 2.4.10 from included Oem Directory])
-	httpd_src=`pwd`/Oem/LinuxApt/httpd-2.4.10
+    AC_MSG_NOTICE([Using httpd 2.4.18 from included Oem Directory])
+	httpd_src=`pwd`/Oem/LinuxApt/httpd-2.4.18
 else
     AC_MSG_NOTICE([Using custom httpd source directory])
 	httpd_src=$with_httpd
@@ -85,7 +85,7 @@
 AC_SUBST(httpd_src)
 
 dnl *******************************************************
-dnl FDO 4.0.0 Configuration
+dnl FDO 4.1.0 Configuration
 dnl Include / lib paths
 dnl *******************************************************
 # custom Fdo path specification
@@ -96,9 +96,9 @@
         [custom_inc=DEFAULT])
 
 if test $custom_inc = "DEFAULT"; then
-    map_fdo_include="/usr/local/fdo-4.0.0/include"
+    map_fdo_include="/usr/local/fdo-4.1.0/include"
     if test -d $map_fdo_include; then
-        AC_MSG_NOTICE([Building with default location of FDO include files at /usr/local/fdo-4.0.0/include])
+        AC_MSG_NOTICE([Building with default location of FDO include files at /usr/local/fdo-4.1.0/include])
     else
         AC_MSG_ERROR([the default FDO include path $map_fdo_include is not a valid directory. Please use the custom option])
     fi
@@ -118,9 +118,9 @@
         [custom_lib=DEFAULT])
 
 if test $custom_lib = "DEFAULT"; then
-    map_fdo_lib="/usr/local/fdo-4.0.0/lib"
+    map_fdo_lib="/usr/local/fdo-4.1.0/lib"
     if test -d $map_fdo_lib; then
-        AC_MSG_NOTICE([Building with default location of FDO libraries at /usr/local/fdo-4.0.0/lib])
+        AC_MSG_NOTICE([Building with default location of FDO libraries at /usr/local/fdo-4.1.0/lib])
     else
         AC_MSG_ERROR([the default FDO lib path $map_fdo_lib is not a valid directory. Please use the custom option])
     fi
@@ -132,7 +132,7 @@
         AC_MSG_ERROR([the specified FDO library path $custom_lib is not a valid directory])
     fi
 fi
-map_fdo_nls="/usr/local/fdo-4.0.0/nls/%N"
+map_fdo_nls="/usr/local/fdo-4.1.0/nls/%N"
 AC_SUBST(map_fdo_include)
 AC_SUBST(map_fdo_lib)
 AC_SUBST(map_fdo_nls)

Modified: sandbox/jng/clean_json/csmap_excludes.txt
===================================================================
--- sandbox/jng/clean_json/csmap_excludes.txt	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/csmap_excludes.txt	2017-04-11 15:36:32 UTC (rev 9144)
@@ -11,4 +11,10 @@
 JGD2011V100.par
 .MRT
 compiler.
-cs-map.
\ No newline at end of file
+cs-map.
+Usa\Geoid96
+Usa\Geoid99
+Usa\Geoid03
+Usa\NSRS2007
+Usa\NSRS2011
+WW15MGH.GRD
\ No newline at end of file


Property changes on: sandbox/jng/clean_json/nuget/MapGuideNuget
___________________________________________________________________
Added: svn:ignore
   + *.suo
.vs
packages



Property changes on: sandbox/jng/clean_json/nuget/MapGuideNuget/CoordSysEnumTest
___________________________________________________________________
Added: svn:ignore
   + bin
obj



Property changes on: sandbox/jng/clean_json/nuget/MapGuideNuget/CoordSysEnumTest64
___________________________________________________________________
Added: svn:ignore
   + bin
obj



Property changes on: sandbox/jng/clean_json/nuget/MapGuideNuget/DesktopConsoleTest
___________________________________________________________________
Added: svn:ignore
   + bin
obj



Property changes on: sandbox/jng/clean_json/nuget/MapGuideNuget/DesktopConsoleTest64
___________________________________________________________________
Added: svn:ignore
   + bin
obj



Property changes on: sandbox/jng/clean_json/nuget/MapGuideNuget/DesktopViewerTest
___________________________________________________________________
Added: svn:ignore
   + bin
obj



Property changes on: sandbox/jng/clean_json/nuget/MapGuideNuget/DesktopViewerTest64
___________________________________________________________________
Added: svn:ignore
   + bin
obj


Modified: sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget.sln
===================================================================
--- sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget.sln	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget.sln	2017-04-11 15:36:32 UTC (rev 9144)
@@ -7,24 +7,58 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DesktopViewerTest", "DesktopViewerTest\DesktopViewerTest.csproj", "{A0DCC768-B341-426B-889A-0701A2399CE8}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApiTest", "WebApiTest\WebApiTest.csproj", "{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
 		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
 		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|x86.ActiveCfg = Debug|x86
 		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|x86.Build.0 = Debug|x86
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|Any CPU.ActiveCfg = Release|x86
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|Mixed Platforms.Build.0 = Release|x86
 		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|x86.ActiveCfg = Release|x86
 		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|x86.Build.0 = Release|x86
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|x86.ActiveCfg = Debug|x86
 		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|x86.Build.0 = Debug|x86
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|Any CPU.ActiveCfg = Release|x86
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|Mixed Platforms.Build.0 = Release|x86
 		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|x86.ActiveCfg = Release|x86
 		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|x86.Build.0 = Release|x86
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|Mixed Platforms.Build.0 = Debug|x86
 		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|x86.ActiveCfg = Debug|x86
 		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|x86.Build.0 = Debug|x86
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|Any CPU.ActiveCfg = Release|x86
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|Mixed Platforms.Build.0 = Release|x86
 		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|x86.ActiveCfg = Release|x86
 		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|x86.Build.0 = Release|x86
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{B4DB8698-45CC-41EC-B8A6-7853A80ADC48}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

Modified: sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget64.sln
===================================================================
--- sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget64.sln	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/nuget/MapGuideNuget/MapGuideNuget64.sln	2017-04-11 15:36:32 UTC (rev 9144)
@@ -14,24 +14,58 @@
 		.nuget\NuGet.targets = .nuget\NuGet.targets
 	EndProjectSection
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApiTest64", "WebApiTest64\WebApiTest64.csproj", "{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
 		Debug|x64 = Debug|x64
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
 		Release|x64 = Release|x64
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|x64.ActiveCfg = Debug|x64
 		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Debug|x64.Build.0 = Debug|x64
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|Any CPU.ActiveCfg = Release|x64
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|Mixed Platforms.Build.0 = Release|x64
 		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|x64.ActiveCfg = Release|x64
 		{1B74DF59-B3D2-49E8-80EF-9BC5A84552F3}.Release|x64.Build.0 = Release|x64
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|x64.ActiveCfg = Debug|x64
 		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Debug|x64.Build.0 = Debug|x64
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|Any CPU.ActiveCfg = Release|x64
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|Mixed Platforms.Build.0 = Release|x64
 		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|x64.ActiveCfg = Release|x64
 		{87BA0B9E-F36E-4D45-89EC-C1CD95C73B62}.Release|x64.Build.0 = Release|x64
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|Mixed Platforms.Build.0 = Debug|x64
 		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|x64.ActiveCfg = Debug|x64
 		{A0DCC768-B341-426B-889A-0701A2399CE8}.Debug|x64.Build.0 = Debug|x64
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|Any CPU.ActiveCfg = Release|x64
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|Mixed Platforms.Build.0 = Release|x64
 		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|x64.ActiveCfg = Release|x64
 		{A0DCC768-B341-426B-889A-0701A2399CE8}.Release|x64.Build.0 = Release|x64
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{79A373CE-16CE-4064-A9F0-1BC15A98DC5A}.Release|x64.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

Deleted: sandbox/jng/clean_json/nuget/MapGuideNuget/Web.sln
===================================================================
--- sandbox/jng/clean_json/nuget/MapGuideNuget/Web.sln	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/nuget/MapGuideNuget/Web.sln	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2012 for Web
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapGuideNuget", "MapGuideNuget\MapGuideNuget.csproj", "{A4665445-2B49-4808-BD7A-8A6B6AAF5237}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x86 = Debug|x86
-		Release|x86 = Release|x86
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{A4665445-2B49-4808-BD7A-8A6B6AAF5237}.Debug|x86.ActiveCfg = Debug|x86
-		{A4665445-2B49-4808-BD7A-8A6B6AAF5237}.Debug|x86.Build.0 = Debug|x86
-		{A4665445-2B49-4808-BD7A-8A6B6AAF5237}.Release|x86.ActiveCfg = Release|x86
-		{A4665445-2B49-4808-BD7A-8A6B6AAF5237}.Release|x86.Build.0 = Release|x86
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal

Deleted: sandbox/jng/clean_json/nuget/MapGuideNuget/Web64.sln
===================================================================
--- sandbox/jng/clean_json/nuget/MapGuideNuget/Web64.sln	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/nuget/MapGuideNuget/Web64.sln	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2012 for Web
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MapGuideNuget", "MapGuideNuget64\MapGuideNuget.csproj", "{A4665445-2B49-4808-BD7A-8A6B6AAF5237}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x64 = Debug|x64
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{A4665445-2B49-4808-BD7A-8A6B6AAF5237}.Debug|x64.ActiveCfg = Debug|x64
-		{A4665445-2B49-4808-BD7A-8A6B6AAF5237}.Debug|x64.Build.0 = Debug|x64
-		{A4665445-2B49-4808-BD7A-8A6B6AAF5237}.Release|x64.ActiveCfg = Release|x64
-		{A4665445-2B49-4808-BD7A-8A6B6AAF5237}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal

Modified: sandbox/jng/clean_json/prepare_webtier_components.bat
===================================================================
--- sandbox/jng/clean_json/prepare_webtier_components.bat	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/prepare_webtier_components.bat	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,7 +1,7 @@
 @echo off
 SET SEVENZ=%CD%\BuildTools\WebTools\7-zip\7z.exe
-SET HTTPD_VER=2.4.10
-SET PHP_VER=5.5.17
+SET HTTPD_VER=2.4.18
+SET PHP_VER=5.6.23
 pushd Oem\LinuxApt
 :check_httpd
 if not exist httpd-%HTTPD_VER% goto unpack_httpd
@@ -49,6 +49,7 @@
 echo Patching PHP headers
 copy /Y ..\php\main\*.h php-%PHP_VER%\main\
 copy /Y ..\php\TSRM\*.h php-%PHP_VER%\TSRM\
+copy /Y ..\php\Zend\*.h php-%PHP_VER%\Zend\
 :patch_httpd_headers
 echo Patching HTTPD headers
 copy /Y ..\httpd\include\*.h httpd-%HTTPD_VER%\include\

Modified: sandbox/jng/clean_json/release64_excludes.txt
===================================================================
--- sandbox/jng/clean_json/release64_excludes.txt	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/release64_excludes.txt	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,3 +1,5 @@
 .pdb
 .exp
-.lib
\ No newline at end of file
+.lib
+.iobj
+.ipdb
\ No newline at end of file

Modified: sandbox/jng/clean_json/release_excludes.txt
===================================================================
--- sandbox/jng/clean_json/release_excludes.txt	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/release_excludes.txt	2017-04-11 15:36:32 UTC (rev 9144)
@@ -1,3 +1,5 @@
 .pdb
 .exp
-.lib
\ No newline at end of file
+.lib
+.iobj
+.ipdb
\ No newline at end of file

Modified: sandbox/jng/clean_json/setenvironment.bat
===================================================================
--- sandbox/jng/clean_json/setenvironment.bat	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/setenvironment.bat	2017-04-11 15:36:32 UTC (rev 9144)
@@ -101,9 +101,9 @@
 call prepare_webtier_components.bat
 
 rem Set the env vars that VS will reference
-SET PHP_SRC=%MG_OEM%\LinuxApt\php-5.5.17
+SET PHP_SRC=%MG_OEM%\LinuxApt\php-5.6.23
 SET PHP_LIB=%MG_OEM%\php\Release_TS
-SET HTTPD_SRC=%MG_OEM%\LinuxApt\httpd-2.4.10
+SET HTTPD_SRC=%MG_OEM%\LinuxApt\httpd-2.4.18
 SET HTTPD_LIB=%MG_OEM%\httpd\lib
 rem Sanity checks
 if not exist "%PHP_SRC%" echo Environment variable PHP_SRC does not point to a valid directory (%PHP_SRC%). Please edit setenvironment64.bat to ensure PHP_SRC points to a valid directory

Modified: sandbox/jng/clean_json/setenvironment64.bat
===================================================================
--- sandbox/jng/clean_json/setenvironment64.bat	2017-04-11 15:00:00 UTC (rev 9143)
+++ sandbox/jng/clean_json/setenvironment64.bat	2017-04-11 15:36:32 UTC (rev 9144)
@@ -106,9 +106,9 @@
 call prepare_webtier_components.bat
 
 rem Set the env vars that VS will reference
-SET PHP_SRC=%MG_OEM%\LinuxApt\php-5.5.17
+SET PHP_SRC=%MG_OEM%\LinuxApt\php-5.6.23
 SET PHP_LIB=%MG_OEM%\php\x64\Release_TS
-SET HTTPD_SRC=%MG_OEM%\LinuxApt\httpd-2.4.10
+SET HTTPD_SRC=%MG_OEM%\LinuxApt\httpd-2.4.18
 SET HTTPD_LIB=%MG_OEM%\httpd\lib64
 rem Sanity checks
 if not exist "%PHP_SRC%" echo Environment variable PHP_SRC does not point to a valid directory (%PHP_SRC%). Please edit setenvironment64.bat to ensure PHP_SRC points to a valid directory



More information about the mapguide-commits mailing list