[mapguide-commits] r8167 - in branches/2.6/MgDev: . BuildTools/WebTools/IMake BuildTools/WebTools/IMake/Win32 Common/Foundation/Data Common/Geometry/CoordinateSystem Common/MapGuideCommon/Services Common/PlatformBase/Services UnitTest/WebTier/DotNet UnitTest/WebTier/DotNet/MgTestRunner UnitTest/WebTier/DotNet/TestMapGuideApi UnitTest/WebTier/Php

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon May 26 21:27:00 PDT 2014


Author: jng
Date: 2014-05-26 21:27:00 -0700 (Mon, 26 May 2014)
New Revision: 8167

Added:
   branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.vcxproj
Removed:
   branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.vcproj
Modified:
   branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.cpp
   branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.sln
   branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.xsd
   branches/2.6/MgDev/BuildTools/WebTools/IMake/Win32/IMake.exe
   branches/2.6/MgDev/Common/Foundation/Data/FeaturePropertyType.h
   branches/2.6/MgDev/Common/Foundation/Data/MimeType.h
   branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemErrorCode.h
   branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGeodeticTransformationMethod.h
   branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGridOrientation.h
   branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGridSpecializationType.h
   branches/2.6/MgDev/Common/MapGuideCommon/Services/ImageFormats.h
   branches/2.6/MgDev/Common/MapGuideCommon/Services/MappingDefs.h
   branches/2.6/MgDev/Common/MapGuideCommon/Services/UnitType.h
   branches/2.6/MgDev/Common/PlatformBase/Services/BaseServiceDefs.h
   branches/2.6/MgDev/Common/PlatformBase/Services/FeatureCommandType.h
   branches/2.6/MgDev/Common/PlatformBase/Services/FeatureGeometricType.h
   branches/2.6/MgDev/Common/PlatformBase/Services/FeatureService.h
   branches/2.6/MgDev/Common/PlatformBase/Services/ObjectPropertyType.h
   branches/2.6/MgDev/Common/PlatformBase/Services/RasterTypes.h
   branches/2.6/MgDev/Common/PlatformBase/Services/ReaderType.h
   branches/2.6/MgDev/Common/PlatformBase/Services/ResourceDefs.h
   branches/2.6/MgDev/Common/PlatformBase/Services/SpatialContextExtentType.h
   branches/2.6/MgDev/UnitTest/WebTier/DotNet/MgTestRunner/MgTestRunner.csproj
   branches/2.6/MgDev/UnitTest/WebTier/DotNet/TestMapGuideApi/MapGuideTestExecutorCollection.cs
   branches/2.6/MgDev/UnitTest/WebTier/DotNet/prebuild.bat
   branches/2.6/MgDev/UnitTest/WebTier/Php/Validate.php
   branches/2.6/MgDev/run_tests.bat
Log:
Merge from trunk r8158, r8159, r8160, r8161, r8162, r8163, r8164, r8165. This covers the following:
 - DotNet test runner fixes for x64
 - Add more resilience to run_tests.bat
 - #2451: Fix improper doxygen formatting for some constant classes
 - IMake updates 
   - #2452: Properly process EXTERNAL_API members
   - Update IMake.xsd to include new DocTarget element introduced for 2.5
   - Strip known HTML tags and apply proper escaping for documentation when transferred to .net XML documentation

Modified: branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.cpp
===================================================================
--- branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.cpp	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.cpp	2014-05-27 04:27:00 UTC (rev 8167)
@@ -12,7 +12,8 @@
     java
 };
 
-static char version[] = "1.2";
+static char version[] = "1.2.2";
+static char EXTERNAL_API_DOCUMENTATION[] = "(NOTE: This API is not officially supported and may be subject to removal in a future release without warning. Use with caution.)";
 
 static string module;
 static string customPath;
@@ -540,6 +541,35 @@
     return str.length() > 3; //A "///" does not count
 }
 
+bool stringReplace(string& str, const string& find, const string& replace)
+{
+    size_t start_pos = str.find(find);
+    if(start_pos == string::npos)
+        return false;
+    str.replace(start_pos, find.length(), replace);
+    return true;
+}
+
+void stripHtml(string& str)
+{
+    //NOTE: We're only stripping tags known to exist in some bits of API documentation
+    stringReplace(str, "<p>", "");
+    stringReplace(str, "<b>", "");
+    stringReplace(str, "<c>", "");
+    stringReplace(str, "</p>", "");
+    stringReplace(str, "</b>", "");
+    stringReplace(str, "</c>", "");
+}
+
+void xmlEscapeString(string& str)
+{
+    stringReplace(str, "&", "&");
+    stringReplace(str, "'", "'");
+    stringReplace(str, "\"", """);
+    stringReplace(str, "<", "<");
+    stringReplace(str, ">", ">");
+}
+
 string linkifyCSharpDocFragment(const string& str)
 {
     // Explode the fragment into a space delimited list.
@@ -555,6 +585,8 @@
         //interfere with doxygen directive translation
         if (item == "\\link" || item == "\\endlink")
             continue;
+        stripHtml(item);
+        xmlEscapeString(item);
         elems.push_back(item);
     }
 
@@ -665,7 +697,7 @@
     return output;
 }
 
-string doxygenToJavaDoc(const string& commentStr)
+string doxygenToJavaDoc(const string& commentStr, bool isPublished)
 {
     // Doxygen documentation translation overview:
     //
@@ -810,6 +842,11 @@
     std::string javaDoc = "\n/**\n";
 
     if (descriptionParts.size() > 0) {
+        if (!isPublished) {
+            javaDoc.append(" * ");
+            javaDoc.append(EXTERNAL_API_DOCUMENTATION);
+            javaDoc.append("\n");
+        }
         for (int i = 0; i < descriptionParts.size(); i++) {
             javaDoc.append(" *");
             javaDoc.append(linkifyJavaDocFragment(descriptionParts[i]));    
@@ -817,7 +854,13 @@
         }
         javaDoc.append(" *\n");
     } else {
-        javaDoc.append(" * TODO: API Documentation is missing or failed to translate doxygen brief directive (message inserted by IMake.exe)\n");
+        if (!isPublished) {
+            javaDoc.append(" * ");
+            javaDoc.append(EXTERNAL_API_DOCUMENTATION);
+            javaDoc.append("\n");
+        } else {
+            javaDoc.append(" * TODO: API Documentation is missing or failed to translate doxygen brief directive (message inserted by IMake.exe)\n");
+        }
     }
 
     if (paramParts.size() > 0) {
@@ -858,7 +901,7 @@
     return javaDoc;
 }
 
-string doxygenToCsharpDoc(const string& commentStr)
+string doxygenToCsharpDoc(const string& commentStr, bool isPublished)
 {
     //See doxygenToJavaDoc for how we do this sorcery
 
@@ -961,6 +1004,11 @@
     std::string csharpDoc = "\n///<summary>\n";
 
     if (descriptionParts.size() > 0) {
+        if (!isPublished) {
+            csharpDoc.append("/// ");
+            csharpDoc.append(EXTERNAL_API_DOCUMENTATION);
+            csharpDoc.append("\n");
+        }
         for (int i = 0; i < descriptionParts.size(); i++) {
             csharpDoc.append("///");
             csharpDoc.append(linkifyCSharpDocFragment(descriptionParts[i]));    
@@ -968,13 +1016,23 @@
         }
         csharpDoc.append("///</summary>\n");
     } else {
-        csharpDoc.append("///TODO: API Documentation is missing or failed to translate doxygen brief directive (message inserted by IMake.exe)\n///</summary>\n");
+        if (!isPublished) {
+            csharpDoc.append("/// ");
+            csharpDoc.append(EXTERNAL_API_DOCUMENTATION);
+            csharpDoc.append("\n");
+        } else {
+            csharpDoc.append("///TODO: API Documentation is missing or failed to translate doxygen brief directive (message inserted by IMake.exe)\n///</summary>\n");
+        }
     }
 
     if (paramParts.size() > 0) {
         for (int i = 0; i < paramParts.size(); i++) {
+            std::string paramPart = paramParts[i];
+            stripHtml(paramPart);
+            xmlEscapeString(paramPart);
+
             std::vector<std::string> pelems;
-            std::stringstream pss(linkifyCSharpDocFragment(paramParts[i]));
+            std::stringstream pss(linkifyCSharpDocFragment(paramPart));
             std::string pitem;
             while(std::getline(pss, pitem, ' ')) {
                 if (!pitem.empty())
@@ -998,7 +1056,9 @@
     if (returnParts.size() > 0) {
         csharpDoc.append("///<returns>");
         for (int i = 0; i < returnParts.size(); i++) {
-            csharpDoc.append(linkifyCSharpDocFragment(returnParts[i]));
+            string retPart = returnParts[i];
+            stripHtml(retPart);
+            csharpDoc.append(linkifyCSharpDocFragment(retPart));
             if (i < returnParts.size() - 1)
                 csharpDoc.append("\n/// ");
         }
@@ -1035,7 +1095,7 @@
     }
 
     // ---------------------- csharpDoc END ------------------------ //
-    csharpDoc.append("///\n");
+    //csharpDoc.append("///\n");
     if (isDeprecated)
         csharpDoc.append("[Obsolete(\"This method is deprecated\")]\n");
     return csharpDoc;
@@ -1049,15 +1109,15 @@
 
     string convertedDoc;
     if (language == java) {
-        convertedDoc = doxygenToJavaDoc(commentStr);
+        convertedDoc = doxygenToJavaDoc(commentStr, true); //EXTERNAL_API only applies to class members, so treat this fragment as PUBLISHED_API
         fprintf(docOutFile, "\n%%typemap(javaclassmodifiers) %s %%{%s public%%}\n", className.c_str(), convertedDoc.c_str());
     } else if(language == csharp) {
-        convertedDoc = doxygenToCsharpDoc(commentStr);
+        convertedDoc = doxygenToCsharpDoc(commentStr, true); //EXTERNAL_API only applies to class members, so treat this fragment as PUBLISHED_API
         fprintf(docOutFile, "\n%%typemap(csclassmodifiers) %s %%{%s public%%}\n", className.c_str(), convertedDoc.c_str());
     }
 }
 
-void outputMethodDoc(const string& className, const string& methodDecl, const string& commentStr)
+void outputMethodDoc(const string& className, const string& methodDecl, const string& commentStr, bool isPublished)
 {
     //Nothing for PHP
     if (language == php)
@@ -1113,15 +1173,15 @@
     swigMethodDecl += methodName;
 
     if (language == java) {
-        convertedDoc = doxygenToJavaDoc(commentStr);
+        convertedDoc = doxygenToJavaDoc(commentStr, isPublished);
         fprintf(docOutFile, "\n%%javamethodmodifiers %s %%{%s public%%}\n", swigMethodDecl.c_str(), convertedDoc.c_str());
     } else if(language == csharp) {
-        convertedDoc = doxygenToCsharpDoc(commentStr);
+        convertedDoc = doxygenToCsharpDoc(commentStr, isPublished);
         fprintf(docOutFile, "\n%%csmethodmodifiers %s %%{%s public%%}\n", swigMethodDecl.c_str(), convertedDoc.c_str());
     }
 }
 
-void processExternalApiSection(string& className, vector<string>& tokens, int begin, int end)
+void processExternalApiSection(string& className, vector<string>& tokens, int begin, int end, bool isPublished)
 {
     //until we find a problem with that, we output whatever we find in this section. In the
     //process we perform type substitution if required
@@ -1204,10 +1264,10 @@
                 {
                     string convertedDoc;
                     if (language == java) {
-                        convertedDoc = doxygenToJavaDoc(commentStr);
+                        convertedDoc = doxygenToJavaDoc(commentStr, isPublished);
                         fprintf(outfile, "%s\n   ", convertedDoc.c_str());
                     } else if (language == csharp) {
-                        convertedDoc = doxygenToCsharpDoc(commentStr);
+                        convertedDoc = doxygenToCsharpDoc(commentStr, isPublished);
                         fprintf(outfile, "%s\n   ", convertedDoc.c_str());
                     }
                     commentStr.clear();
@@ -1366,7 +1426,7 @@
         if(token[0] == ';' || assignmentAdded)
         {
             if (!translateMode) {
-                outputMethodDoc(className, methodDecl, commentStr);
+                outputMethodDoc(className, methodDecl, commentStr, isPublished);
             }
             commentStr.clear();
             methodDecl.clear();
@@ -1485,10 +1545,10 @@
                 {
                     string convertedDoc;
                     if (language == java) {
-                        convertedDoc = doxygenToJavaDoc(commentStr);
+                        convertedDoc = doxygenToJavaDoc(commentStr, true);
                         fprintf(outfile, "%s", convertedDoc.c_str());
                     } else if (language == csharp) {
-                        convertedDoc = doxygenToCsharpDoc(commentStr);
+                        convertedDoc = doxygenToCsharpDoc(commentStr, true);
                         fprintf(outfile, "%s", convertedDoc.c_str());
                     }
                 }
@@ -1545,7 +1605,7 @@
         {
             string sectionName = tokens[sections[k] - 1];
             if(sectionName == "EXTERNAL_API" || sectionName == "PUBLISHED_API")
-                processExternalApiSection(className, tokens, sections[k] + 1, sections[k + 1] - (k < (int)sections.size() - 2? 2: 1));
+                processExternalApiSection(className, tokens, sections[k] + 1, sections[k + 1] - (k < (int)sections.size() - 2? 2: 1), (sectionName == "PUBLISHED_API"));
             else if(sectionName == "CLASS_ID" && !translateMode)
                 processClassIdSection(tokens, sections[k] + 1, sections[k + 1] - (k < (int)sections.size() - 2? 2: 1));
         }

Modified: branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.sln
===================================================================
--- branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.sln	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.sln	2014-05-27 04:27:00 UTC (rev 8167)
@@ -1,6 +1,6 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IMake", "IMake.vcproj", "{B601F04C-0D42-4AFC-A092-B31185E2EA8C}"
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Express 2012 for Windows Desktop
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IMake", "IMake.vcxproj", "{B601F04C-0D42-4AFC-A092-B31185E2EA8C}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

Deleted: branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.vcproj
===================================================================
--- branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.vcproj	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.vcproj	2014-05-27 04:27:00 UTC (rev 8167)
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="IMake"
-	ProjectGUID="{B601F04C-0D42-4AFC-A092-B31185E2EA8C}"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Win32"
-			IntermediateDirectory="Debug"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="2"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\IMake.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)\IMake.pdb"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Win32"
-			IntermediateDirectory="Release"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="0"
-				UsePrecompiledHeader="2"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\IMake.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<File
-			RelativePath=".\IMake.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\SimpleXmlParser.cpp"
-			>
-		</File>
-		<File
-			RelativePath=".\SimpleXmlParser.h"
-			>
-		</File>
-		<File
-			RelativePath=".\stdafx.cpp"
-			>
-			<FileConfiguration
-				Name="Debug|Win32"
-				>
-				<Tool
-					Name="VCCLCompilerTool"
-					UsePrecompiledHeader="1"
-				/>
-			</FileConfiguration>
-			<FileConfiguration
-				Name="Release|Win32"
-				>
-				<Tool
-					Name="VCCLCompilerTool"
-					UsePrecompiledHeader="1"
-				/>
-			</FileConfiguration>
-		</File>
-		<File
-			RelativePath=".\stdafx.h"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>

Copied: branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.vcxproj (from rev 8164, trunk/MgDev/BuildTools/WebTools/IMake/IMake.vcxproj)
===================================================================
--- branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.vcxproj	                        (rev 0)
+++ branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.vcxproj	2014-05-27 04:27:00 UTC (rev 8167)
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B601F04C-0D42-4AFC-A092-B31185E2EA8C}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v110</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v110</PlatformToolset>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>11.0.61030.0</_ProjectFileVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>Win32\</OutDir>
+    <IntDir>Debug\</IntDir>
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>Win32\</OutDir>
+    <IntDir>Release\</IntDir>
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(OutDir)IMake.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)IMake.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(OutDir)IMake.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention />
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="IMake.cpp" />
+    <ClCompile Include="SimpleXmlParser.cpp" />
+    <ClCompile Include="stdafx.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="SimpleXmlParser.h" />
+    <ClInclude Include="stdafx.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

Modified: branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.xsd
===================================================================
--- branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.xsd	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/BuildTools/WebTools/IMake/IMake.xsd	2014-05-27 04:27:00 UTC (rev 8167)
@@ -21,6 +21,11 @@
             <xs:attribute name="path" type="xs:string" use="required" />
           </xs:complexType>
         </xs:element>
+        <xs:element name="DocTarget">
+          <xs:complexType>
+            <xs:attribute name="path" type="xs:string" use="required" />
+          </xs:complexType>
+        </xs:element>
         <xs:element name="CppInline" minOccurs="0" />
         <xs:element name="TypeReplacements" minOccurs="0">
           <xs:complexType>

Modified: branches/2.6/MgDev/BuildTools/WebTools/IMake/Win32/IMake.exe
===================================================================
(Binary files differ)

Modified: branches/2.6/MgDev/Common/Foundation/Data/FeaturePropertyType.h
===================================================================
--- branches/2.6/MgDev/Common/Foundation/Data/FeaturePropertyType.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/Foundation/Data/FeaturePropertyType.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -59,6 +59,7 @@
     static const int AssociationProperty    =  103;
 
     ///////////////////////////////////////////////////
+    /// \brief
     /// Type name for a raster property definition. See
     /// MgRasterPropertyDefinition.
     static const int RasterProperty         =  104;

Modified: branches/2.6/MgDev/Common/Foundation/Data/MimeType.h
===================================================================
--- branches/2.6/MgDev/Common/Foundation/Data/MimeType.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/Foundation/Data/MimeType.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -32,42 +32,55 @@
     /// The "value(xxx)" comments are used by SWIG to build constants.php.  Do not alter them.
     /// \endif
 
+    /// \brief
     /// application/agf
     static const STRING Agf;      ///\if INTERNAL value("application/agf") \endif
 
+    /// \brief
     /// application/octet-stream
     static const STRING Binary;   ///\if INTERNAL value("application/octet-stream") \endif
 
+    /// \brief
     /// model/vnd.dwf
     static const STRING Dwf;      ///\if INTERNAL value("model/vnd.dwf") \endif
 
+    /// \brief
     /// image/gif
     static const STRING Gif;      ///\if INTERNAL value("image/gif") \endif
 
+    /// \brief
     /// image/jpeg
     static const STRING Jpeg;     ///\if INTERNAL value("image/jpeg") \endif
 
+    /// \brief
     /// image/png
     static const STRING Png;      ///\if INTERNAL value("image/png") \endif
 
+    /// \brief
     /// text/plain
     static const STRING Text;     ///\if INTERNAL value("text/plain") \endif
 
+    /// \brief
     /// image/tiff
     static const STRING Tiff;     ///\if INTERNAL value("image/tiff") \endif
 
+    /// \brief
     /// text/xml
     static const STRING Xml;      ///\if INTERNAL value("text/xml") \endif
 
+    /// \brief
     /// application/json
     static const STRING Json;      ///\if INTERNAL value("application/json") \endif
 
+    /// \brief
     /// text/html
     static const STRING Html;     ///\if INTERNAL value("text/html") \endif
 
+    /// \brief
     /// application/vnd.google-earth.kml+xml
     static const STRING Kml;      ///\if INTERNAL value("application/vnd.google-earth.kml+xml") \endif
 
+    /// \brief
     /// application/vnd.google-earth.kmz
     static const STRING Kmz;      ///\if INTERNAL value("application/vnd.google-earth.kmz") \endif
 };

Modified: branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemErrorCode.h
===================================================================
--- branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemErrorCode.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemErrorCode.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -317,32 +317,32 @@
 
     ///////////////////////////////////////////////////////////////////////////////////////////////
     /// \brief
-    /// 
+    /// The operation succeeded
     ///
     static const INT32 Ok                   = 1000;
     ///////////////////////////////////////////////////////////////////////////////////////////////
     /// \brief
-    /// 
+    /// The operation ran out of memory
     ///
     static const INT32 OutOfMemory          = 1001;
     ///////////////////////////////////////////////////////////////////////////////////////////////
     /// \brief
-    /// 
+    /// An initialization operation failed 
     ///
     static const INT32 InitializationFailed = 1002;
     ///////////////////////////////////////////////////////////////////////////////////////////////
     /// \brief
-    /// 
+    /// A conversion operation failed
     ///
     static const INT32 ConversionFailed     = 1003;
     ///////////////////////////////////////////////////////////////////////////////////////////////
     /// \brief
-    /// 
+    /// An argument supplied to an operation was null
     ///
     static const INT32 NullArgument         = 1004;
     ///////////////////////////////////////////////////////////////////////////////////////////////
     /// \brief
-    /// 
+    /// An argument supplied to an operation was invalid
     ///
     static const INT32 InvalidArgument      = 1005;
 };

Modified: branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGeodeticTransformationMethod.h
===================================================================
--- branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGeodeticTransformationMethod.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGeodeticTransformationMethod.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -24,6 +24,7 @@
 
 ///////////////////////////////////////////////////////////////
 /// \brief
+/// Defines the type of a geodetic transformation method
 ///
 class MG_GEOMETRY_API MgCoordinateSystemGeodeticTransformationMethod
 {

Modified: branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGridOrientation.h
===================================================================
--- branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGridOrientation.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGridOrientation.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -23,7 +23,7 @@
 /// \{
 
 ///////////////////////////////////////////////////////////////////////////////
-/// <summary>
+/// \brief
 /// An enumeration of the supported values for the <c>m_Orientation</c> member
 /// of several objects related to grids and graticules. <p>
 /// This value is used to qualify objects which are of the "iso" type.  I.e. a
@@ -34,25 +34,24 @@
 /// points which share a common <b>easting</b> value, and the "m_Value" element
 /// of that object will be an <b>easting</b> value.  Note that in this example,
 /// the line is typically a vertical line.
-/// </summary>
 class MG_GEOMETRY_API MgCoordinateSystemGridOrientation
 {
 PUBLISHED_API:
     ///////////////////////////////////////////////////////////////////////////
-    /// \brief Not specified yet, initialize to this value.
-    ///
+    /// \brief
+    /// Not specified yet, initialize to this value.
     static const INT8 None = 0;
     ///////////////////////////////////////////////////////////////////////////
-    /// \brief The object represents a constant easting value.
-    ///
+    /// \brief
+    /// The object represents a constant easting value.
     static const INT8 EastWest = 1;         // generally indicates a vertical grid line
     ///////////////////////////////////////////////////////////////////////////
-    /// \brief The object represents a constant northing value.
-    ///
+    /// \brief
+    /// The object represents a constant northing value.
     static const INT8 NorthSouth = 2;       // generally indicates a horizontal grid line
     ///////////////////////////////////////////////////////////////////////////
-    /// \brief Indicates the failure of an algorithm or other problem.
-    ///
+    /// \brief
+    /// Indicates the failure of an algorithm or other problem.
     static const INT8 Unknown = 3;          // indicates a failure of an algorithm
 };
 

Modified: branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGridSpecializationType.h
===================================================================
--- branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGridSpecializationType.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/Geometry/CoordinateSystem/CoordinateSystemGridSpecializationType.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -23,7 +23,7 @@
 /// \{
 
 ///////////////////////////////////////////////////////////////////////////////
-/// <summary>
+/// \brief
 /// An enumeration of the various types of specialized grids/graticules
 /// currently supported.  A specialized grid is one for which specific
 /// standards exist to which the results of this feature are compliant with.
@@ -33,7 +33,6 @@
 /// with similar features and is currently entirely arbitrary.  Using a
 /// numeric literal instead of thes names of the defined constants is a sure
 /// way to write code that will get broken in the future.
-/// </summary>
 class MG_GEOMETRY_API MgCoordinateSystemGridSpecializationType
 {
 PUBLISHED_API:

Modified: branches/2.6/MgDev/Common/MapGuideCommon/Services/ImageFormats.h
===================================================================
--- branches/2.6/MgDev/Common/MapGuideCommon/Services/ImageFormats.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/MapGuideCommon/Services/ImageFormats.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -30,21 +30,27 @@
     /// \internal
     /// The "value(xxx)" comments are used by SWIG to build constants.php.  Do not alter them.
 
+    /// \brief
     /// Gif format
     static const STRING Gif;    /// \if INTERNAL value("GIF") \endif
 
+    /// \brief
     /// Jpeg format
     static const STRING Jpeg;   /// \if INTERNAL value("JPG") \endif
 
+    /// \brief
     /// Png format
     static const STRING Png;    /// \if INTERNAL value("PNG") \endif
 
+    /// \brief
     /// Png format
     static const STRING Png8;   /// \if INTERNAL value("PNG8") \endif
 
+    /// \brief
     /// Tiff format
     static const STRING Tiff;   /// \if INTERNAL value("TIF") \endif
 
+    /// \brief
     /// Raw format
     static const STRING Raw;    /// \if INTERNAL value("RAW") \endif
 };

Modified: branches/2.6/MgDev/Common/MapGuideCommon/Services/MappingDefs.h
===================================================================
--- branches/2.6/MgDev/Common/MapGuideCommon/Services/MappingDefs.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/MapGuideCommon/Services/MappingDefs.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -37,9 +37,11 @@
     /// The "value(xxx)" comments are used by SWIG to build constants.php.  Do not alter them.
     /// \endif
 
+    /// \brief
     /// Page units are in inches.
     static const STRING Inches;           ///\if INTERNAL value("in") \endif
 
+    /// \brief
     /// Page units are in millimeters.
     static const STRING Millimeters;      ///\if INTERNAL value("mm") \endif
 };

Modified: branches/2.6/MgDev/Common/MapGuideCommon/Services/UnitType.h
===================================================================
--- branches/2.6/MgDev/Common/MapGuideCommon/Services/UnitType.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/MapGuideCommon/Services/UnitType.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -29,9 +29,11 @@
     /// The "value(xxx)" comments are used by SWIG to build constants.php.  Do not alter them.
     /// \endif
 
+    /// \brief
     /// US English.
     static const STRING USEnglish;  ///\if INTERNAL value("US-English") \endif
 
+    /// \brief
     /// Metric.
     static const STRING Metric;     ///\if INTERNAL value("Metric") \endif
 };

Modified: branches/2.6/MgDev/Common/PlatformBase/Services/BaseServiceDefs.h
===================================================================
--- branches/2.6/MgDev/Common/PlatformBase/Services/BaseServiceDefs.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/PlatformBase/Services/BaseServiceDefs.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -29,39 +29,47 @@
 {
 PUBLISHED_API:
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// Resource Service
     static const INT16 ResourceService      = 0;
 
 
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// DWF Drawing Service
     static const INT16 DrawingService       = 1;
 
 
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// FDO Feature Service
     static const INT16 FeatureService       = 2;
 
 
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// Mapping Service
     static const INT16 MappingService       = 3;
 
 
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// Rendering Service
     static const INT16 RenderingService     = 4;
 
 
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// Tile Service
     static const INT16 TileService          = 5;
 
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// Kml Service
     static const INT16 KmlService           = 6;
 
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// Profiling Service
     static const INT16 ProfilingService     = 10;
 

Modified: branches/2.6/MgDev/Common/PlatformBase/Services/FeatureCommandType.h
===================================================================
--- branches/2.6/MgDev/Common/PlatformBase/Services/FeatureCommandType.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/PlatformBase/Services/FeatureCommandType.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -31,18 +31,23 @@
 {
 PUBLISHED_API:
     /////////////////////////////////////////////////////
+    /// \brief
     /// Specifies the type of an MgInsertFeatures object.
     static const int InsertFeatures = 0;
     /////////////////////////////////////////////////////
+    /// \brief
     /// Specifies the type of an MgUpdateFeatures object.
     static const int UpdateFeatures = 1;
     /////////////////////////////////////////////////////
+    /// \brief
     /// Specifies the type of an MgDeleteFeatures object.
     static const int DeleteFeatures = 2;
     /////////////////////////////////////////////////////
+    /// \brief
     /// Specifies the type of an MgLockFeatures object.
     static const int LockFeatures = 3;
     /////////////////////////////////////////////////////
+    /// \brief
     /// Specifies the type of an MgUnlockFeatures object.
     static const int UnlockFeatures = 4;
 INTERNAL_API:

Modified: branches/2.6/MgDev/Common/PlatformBase/Services/FeatureGeometricType.h
===================================================================
--- branches/2.6/MgDev/Common/PlatformBase/Services/FeatureGeometricType.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/PlatformBase/Services/FeatureGeometricType.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -35,21 +35,25 @@
 {
 PUBLISHED_API:
     /////////////////////////////////////////////////////////////
+    /// \brief
     /// Represents zero-dimensional geometric primitives, such as
     /// MgPoint.
     static const int Point      =  1;
 
     ////////////////////////////////////////////////////////////
+    /// \brief
     /// Represents one-dimensional geometric primitives, such as
     /// MgLineString and MgCurveString.
     static const int Curve      =  2;
 
     ////////////////////////////////////////////////////////////
+    /// \brief
     /// Represents two-dimensional geometric primitives, such as
     /// MgPolygon and MgCurvePolygon.
     static const int Surface    =  4;
 
     //////////////////////////////////////////////////////////////
+    /// \brief
     /// Represents three-dimensional geometric primitives, such as
     /// Cubes.
     static const int Solid      =  8;

Modified: branches/2.6/MgDev/Common/PlatformBase/Services/FeatureService.h
===================================================================
--- branches/2.6/MgDev/Common/PlatformBase/Services/FeatureService.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/PlatformBase/Services/FeatureService.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -1891,6 +1891,7 @@
     static const INT32 m_cls_id = PlatformBase_FeatureService_FeatureService;
 };
 
+///\cond INTERNAL
 #define MG_CHECK_FEATURE_SET_COUNT(pointer, methodname)                       \
 if (0 == pointer->GetCount())                                                 \
 {                                                                             \
@@ -1904,6 +1905,7 @@
     throw new MgInvalidPropertyTypeException(methodname,                      \
         __LINE__, __WFILE__, NULL, L"", NULL);                                \
 }
+///\endcond
 
 /// \}
 

Modified: branches/2.6/MgDev/Common/PlatformBase/Services/ObjectPropertyType.h
===================================================================
--- branches/2.6/MgDev/Common/PlatformBase/Services/ObjectPropertyType.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/PlatformBase/Services/ObjectPropertyType.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -24,8 +24,8 @@
 
 ///////////////////////////////////////////////////////////////
 /// \brief
-/// Defines the type of an MgObjectPropertionDefinition object
-/// property, that is, whether the property ccontains a single
+/// Defines the type of an \link MgObjectPropertionDefinition \endlink object
+/// property, that is, whether the property contains a single
 /// feature class object, or an unordered or ordered collection
 /// of them.
 ///
@@ -33,21 +33,23 @@
 {
 PUBLISHED_API:
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// Signifies that the object property contains a single feature
     /// class object.
     static const int Value = 0;
     //////////////////////////////////////////////////////////////
+    /// \brief
     /// Signifies that the object property contains more than one
     /// feature class object. The collection of objects is in no
     /// particular order relative to the identity property defined
-    /// for the collection. See
-    /// MgObjectPropertyDefinition::GetIdentityProperty.
+    /// for the collection. See \link MgObjectPropertyDefinition::GetIdentityProperty \endlink
     static const int Collection = 1;
     /////////////////////////////////////////////////////////////////
+    /// \brief
     /// Signifies that the object property contains more than one
     /// feature class object in ascending or descending order
     /// relative to the identity property defined for the collection.
-    /// See MgObjectPropertyDefinition::GetIdentityProperty.
+    /// See \link MgObjectPropertyDefinition::GetIdentityProperty \endlink
     static const int OrderedCollection = 2;
 INTERNAL_API:
 

Modified: branches/2.6/MgDev/Common/PlatformBase/Services/RasterTypes.h
===================================================================
--- branches/2.6/MgDev/Common/PlatformBase/Services/RasterTypes.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/PlatformBase/Services/RasterTypes.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -32,27 +32,34 @@
 
     // These correspond to FDO RasterDataModelType definitions
 
+    /// \brief
     /// Data is organized in an unknown or provider specific manner.
     static const INT32 Unknown;     /// value(0)
 
+    /// \brief
     /// Data is rectangular grid, floating point data model.
     static const INT32 Data;        /// value(1)
 
+    /// \brief
     /// Data is one bit (black/white - bitonal) pixels.
     static const INT32 Bitonal;     /// value(2)
 
+    /// \brief
     /// Data is monochrome (black->gray->white) pixels.
     /// It is necessary to know the BitsPerPixel value to interpret the data.
     static const INT32 Gray;        /// value(3)
 
+    /// \brief
     /// Data is red/green/blue (in that order) pixels.
     /// It is necessary to know the BitsPerPixel value to interpret the data.
     static const INT32 RGB;         /// value(4)
 
+    /// \brief
     /// Data is red/green/blue/alpha (in that order) pixels; RGB with transparency.
     /// It is necessary to know the BitsPerPixel value to interpret the data.
     static const INT32 RGBA;        /// value(5)
 
+    /// \brief
     /// Data is monochrome but backed by a pallette (value->pallette->colour) pixels.
     /// It is necessary to know the BitsPerPixel value to interpret the data.
     static const INT32 Palette;     /// value(6)

Modified: branches/2.6/MgDev/Common/PlatformBase/Services/ReaderType.h
===================================================================
--- branches/2.6/MgDev/Common/PlatformBase/Services/ReaderType.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/PlatformBase/Services/ReaderType.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -36,12 +36,15 @@
 {
 PUBLISHED_API:
     /////////////////////////////////////////////////////////
+    /// \brief
     /// Signifies that the object is of type MgFeatureReader.
     static const int FeatureReader = 0;
     //////////////////////////////////////////////////////
+    /// \brief
     /// Signifies that the object is of type MgDataReader.
     static const int DataReader = 1;
     /////////////////////////////////////////////////////////
+    /// \brief
     /// Signifies that the object is of type MgSqlDataReader.
     static const int SqlDataReader = 2;
 INTERNAL_API:

Modified: branches/2.6/MgDev/Common/PlatformBase/Services/ResourceDefs.h
===================================================================
--- branches/2.6/MgDev/Common/PlatformBase/Services/ResourceDefs.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/PlatformBase/Services/ResourceDefs.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -52,10 +52,12 @@
     /// \endif
 
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// The repository is the \link library library \endlink.
     static const STRING Library;      ///\if INTERNAL value("Library") \endif
 
     ////////////////////////////////////////////////////////////////
+    /// \brief
     /// The repository is a \link session_repository session repository \endlink,
     /// used to store temporary data.
     /// \note1
@@ -492,12 +494,15 @@
     /// The "value(xxx)" comments are used by SWIG to build constants.php.  Do not alter them.
     /// \endif
 
+    /// \brief
     /// No Access permission.
     static const STRING NoAccess;       ///\if INTERNAL value("n") \endif
 
+    /// \brief
     /// Read-Only permission.
     static const STRING ReadOnly;       ///\if INTERNAL value("r") \endif
 
+    /// \brief
     /// Read/Write permission.
     static const STRING ReadWrite;      ///\if INTERNAL value("r,w") \endif
 };
@@ -549,12 +554,15 @@
     /// The "value(xxx)" comments are used by SWIG to build constants.php.  Do not alter them.
     /// \endif
 
+    /// \brief
     /// Return folders only
     static const STRING Folders;     ///\if INTERNAL value("Folders") \endif
 
+    /// \brief
     /// Return files only
     static const STRING Files;       ///\if INTERNAL value("Files") \endif
 
+    /// \brief
     /// Return both files and folders
     static const STRING Both;        ///\if INTERNAL value("Both") \endif
 };

Modified: branches/2.6/MgDev/Common/PlatformBase/Services/SpatialContextExtentType.h
===================================================================
--- branches/2.6/MgDev/Common/PlatformBase/Services/SpatialContextExtentType.h	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/Common/PlatformBase/Services/SpatialContextExtentType.h	2014-05-27 04:27:00 UTC (rev 8167)
@@ -29,9 +29,11 @@
 class MgSpatialContextExtentType
 {
 PUBLISHED_API:
+    /// \brief
     /// The spatial extent of the context is static and must be specified
     /// when the context is created.
     static const int scStatic = 0;
+    /// \brief
     /// The spatial extent of the context is dynamic and changes as data is
     /// added and removed from the context.
     static const int scDynamic = 1;

Modified: branches/2.6/MgDev/UnitTest/WebTier/DotNet/MgTestRunner/MgTestRunner.csproj
===================================================================
--- branches/2.6/MgDev/UnitTest/WebTier/DotNet/MgTestRunner/MgTestRunner.csproj	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/UnitTest/WebTier/DotNet/MgTestRunner/MgTestRunner.csproj	2014-05-27 04:27:00 UTC (rev 8167)
@@ -99,7 +99,7 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
     <PostBuildEvent>copy /Y "$(SolutionDir)Libs\*.*" "$(TargetDir)"
-xcopy /S /Y /I $(SolutionDir)..\..\..\Web\src\mapagent\Resources "$(TargetDir)\Resources"</PostBuildEvent>
+xcopy /S /Y /I "$(SolutionDir)..\..\..\Common\MapGuideCommon\Resources" "$(TargetDir)\Resources"</PostBuildEvent>
   </PropertyGroup>
   <PropertyGroup>
     <PreBuildEvent>call "$(SolutionDir)prebuild.bat" "$(ConfigurationName)" "$(PlatformName)"</PreBuildEvent>

Modified: branches/2.6/MgDev/UnitTest/WebTier/DotNet/TestMapGuideApi/MapGuideTestExecutorCollection.cs
===================================================================
--- branches/2.6/MgDev/UnitTest/WebTier/DotNet/TestMapGuideApi/MapGuideTestExecutorCollection.cs	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/UnitTest/WebTier/DotNet/TestMapGuideApi/MapGuideTestExecutorCollection.cs	2014-05-27 04:27:00 UTC (rev 8167)
@@ -412,7 +412,11 @@
                             {
                                 if (strExpectedResult != null && strResultData != null)
                                 {
-                                    bEqual = strResultData.Equals(strExpectedResult, StringComparison.InvariantCultureIgnoreCase);
+                                    //Normalize line endings on LF before comparsion (in case the SQLite GUI recorded CRLFs)
+                                    string normStrResultData = strResultData.Replace("\r\n", "\n");
+                                    string normStrExpectedResult = strExpectedResult.Replace("\r\n", "\n");
+
+                                    bEqual = normStrResultData.Equals(normStrExpectedResult, StringComparison.InvariantCultureIgnoreCase);
                                 }
                                 else if (bExpected != null && bActual != null)
                                 {

Modified: branches/2.6/MgDev/UnitTest/WebTier/DotNet/prebuild.bat
===================================================================
--- branches/2.6/MgDev/UnitTest/WebTier/DotNet/prebuild.bat	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/UnitTest/WebTier/DotNet/prebuild.bat	2014-05-27 04:27:00 UTC (rev 8167)
@@ -22,7 +22,7 @@
 goto done
 
 :copy
-if "%PLAT%"=="x64" (
+if %PLAT%=="x64" (
     echo Copying x64 binaries from %SLN_DIR%..\..\..\Web\bin\%CFG%64
     copy /Y %SLN_DIR%..\..\..\Web\bin\%CFG%64\*.* "%SLN_DIR%Libs\"
     echo Copying x64 SqliteDotNet.dll

Modified: branches/2.6/MgDev/UnitTest/WebTier/Php/Validate.php
===================================================================
--- branches/2.6/MgDev/UnitTest/WebTier/Php/Validate.php	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/UnitTest/WebTier/Php/Validate.php	2014-05-27 04:27:00 UTC (rev 8167)
@@ -138,8 +138,12 @@
 
                     if ($_POST['testExecutionMode'] == "validate")
                     {
+                        //Normalize line endings so comparisons don't fall over due to incorrect line endings when expected results were entered in SQLite GUI
+                        $normResultData = str_replace("\r\n", "\n", $resultData);
+                        $normExpectedResult = str_replace("\r\n", "\n", $expectedResult);
+                    
                         //If the results are different and special validation fails then the operation failed ->mark it red
-                        if (strncasecmp($resultData, $expectedResult, strlen($resultData . $expectedResult)) && !(ValidateUtils::SpecialValidation($operation, $resultData, $expectedResult)))
+                        if (strncasecmp($normResultData, $normExpectedResult, strlen($normResultData . $normExpectedResult)) && !(ValidateUtils::SpecialValidation($operation, $resultData, $expectedResult)))
                         {
                             $outcome="fail";
                             $exitStatus=1;

Modified: branches/2.6/MgDev/run_tests.bat
===================================================================
--- branches/2.6/MgDev/run_tests.bat	2014-05-27 04:17:07 UTC (rev 8166)
+++ branches/2.6/MgDev/run_tests.bat	2014-05-27 04:27:00 UTC (rev 8167)
@@ -18,10 +18,12 @@
 
 SET START_MGSERVER=1
 SET START_WEBSERVER=1
-SET RUN_SERVER_TESTS=1
+SET RUN_SERVER_TESTS=0
 SET RUN_PHP_TESTS=1
 SET RUN_DOTNET_TESTS=1
 
+SET RETURN_CODE=0
+
 echo *************** TEST SUMMARY ******************
 echo Platform: %PLAT%
 echo Configuration: %CONF%
@@ -44,8 +46,11 @@
     echo [build]: DotNet test runner
     SET TEST_COMPONENT=Build DotNet test runner
     pushd UnitTest\WebTier\DotNet
-    msbuild /p:Configuration=%CONFIG%;Platform=%PLAT% DotNet.sln
-    if %ERRORLEVEL% neq 0 goto error
+    msbuild /p:Configuration=%CONFIG%;Platform=%PLAT% /fl /flp:logfile=build.log DotNet.sln
+    if "%ERRORLEVEL%" == "1" (
+        set RETURN_CODE=%ERRORLEVEL%
+        goto error
+    )
     popd
 )
 :start_mgserver
@@ -64,7 +69,10 @@
 pushd UnitTest
 SET TEST_COMPONENT=Prepare webtier test suites
 php -n -d display_errors=Off -d extension_dir="%PHP_EXT_DIR%" -d extension=php_mbstring.dll -d extension=php_curl.dll -d extension=php_MapGuideApi.dll -d extension=php_SQLitePhpApi.dll prepare.php
-if %ERRORLEVEL% neq 0 goto error
+if %ERRORLEVEL% neq 0 (
+    set RETURN_CODE=%ERRORLEVEL%
+    goto error
+)
 popd
 :start_php_webserver
 if "%START_WEBSERVER%" == "1" (
@@ -75,6 +83,20 @@
 :test_php
 if "%RUN_PHP_TESTS%" == "1" (
     echo [test]: PHP tests
+    REM Clear out old dbs before running
+    pushd UnitTest\TestData
+    if exist Unicode\UnicodeTest.db del /F Unicode\UnicodeTest.db
+    if exist WmsTest\WmsTest.db del /F WmsTest\WmsTest.db
+    if exist WebLayout\WebLayoutTest.db del /F WebLayout\WebLayoutTest.db
+    if exist WfsTest\WfsTest.db del /F WfsTest\WfsTest.db
+    if exist MapLayer\MapLayerTest.db del /F MapLayer\MapLayerTest.db
+    if exist ServerAdmin\ServerAdminTest.db del /F ServerAdmin\ServerAdminTest.db
+    if exist MappingService\MappingServiceTest.db del /F MappingService\MappingServiceTest.db
+    if exist SiteService\SiteServiceTest.db del /F SiteService\SiteServiceTest.db
+    if exist FeatureService\FeatureServiceTest.db del /F FeatureService\FeatureServiceTest.db
+    if exist DrawingService\DrawingServiceTest.db del /F DrawingService\DrawingServiceTest.db
+    if exist ResourceService\ResourceServiceTest.db del /F ResourceService\ResourceServiceTest.db
+    popd
     pushd UnitTest\WebTier\Php
     php.exe -n -d display_errors=Off -d extension_dir="%PHP_EXT_DIR%" -d extension=php_mbstring.dll -d extension=php_curl.dll -d extension=php_MapGuideApi.dll -d extension=php_SQLitePhpApi.dll RunTests.php
     popd
@@ -82,6 +104,20 @@
 :test_dotnet
 if "%RUN_DOTNET_TESTS%" == "1" (
     echo [test]: .net tests
+    REM Clear out old dbs before running
+    pushd UnitTest\TestData
+    if exist Unicode\UnicodeTest.db del /F Unicode\UnicodeTest.db
+    if exist WmsTest\WmsTest.db del /F WmsTest\WmsTest.db
+    if exist WebLayout\WebLayoutTest.db del /F WebLayout\WebLayoutTest.db
+    if exist WfsTest\WfsTest.db del /F WfsTest\WfsTest.db
+    if exist MapLayer\MapLayerTest.db del /F MapLayer\MapLayerTest.db
+    if exist ServerAdmin\ServerAdminTest.db del /F ServerAdmin\ServerAdminTest.db
+    if exist MappingService\MappingServiceTest.db del /F MappingService\MappingServiceTest.db
+    if exist SiteService\SiteServiceTest.db del /F SiteService\SiteServiceTest.db
+    if exist FeatureService\FeatureServiceTest.db del /F FeatureService\FeatureServiceTest.db
+    if exist DrawingService\DrawingServiceTest.db del /F DrawingService\DrawingServiceTest.db
+    if exist ResourceService\ResourceServiceTest.db del /F ResourceService\ResourceServiceTest.db
+    popd
     pushd UnitTest\WebTier\DotNet_%PLAT%
     MgTestRunner.exe "%WEBCONFIGINI%" "../../../Oem/CsMap/Dictionaries"
     if %ERRORLEVEL% neq 0 echo [test]: .net test runner had one or more test failures. Check log files for more information
@@ -101,7 +137,7 @@
 )
 goto done
 :error
-echo [error]: An error occured with %TEST_COMPONENT%
+echo [error]: An error occured with %TEST_COMPONENT% (exit code: %RETURN_CODE%)
 goto quit
 :done
 



More information about the mapguide-commits mailing list