[mapguide-commits] r9601 - trunk/MgDev/Common/Foundation/System
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Wed Sep 11 04:14:02 PDT 2019
Author: jng
Date: 2019-09-11 04:14:02 -0700 (Wed, 11 Sep 2019)
New Revision: 9601
Modified:
trunk/MgDev/Common/Foundation/System/Resources.cpp
trunk/MgDev/Common/Foundation/System/Resources.h
Log:
Apply patch to give better context for MgResourcesLoadFailedException
Fixes #2206
Modified: trunk/MgDev/Common/Foundation/System/Resources.cpp
===================================================================
--- trunk/MgDev/Common/Foundation/System/Resources.cpp 2019-09-11 11:07:08 UTC (rev 9600)
+++ trunk/MgDev/Common/Foundation/System/Resources.cpp 2019-09-11 11:14:02 UTC (rev 9601)
@@ -48,6 +48,7 @@
const STRING MgResources::BetaReleaseDetected = L"Beta release detected. Beta version will expire in: %1 day(s).";
const STRING MgResources::PreviewReleaseDetected = L"Preview release detected. Preview version will expire in: %1 day(s).";
const STRING MgResources::InvalidLicense = L"You have an invalid license.";
+const STRING MgResources::InvalidExtendedLocale = L"The given extended locale is invalid";
const STRING MgResources::LicenseAlreadyExists = L"Cannot create a new license, one already exists.";
const STRING MgResources::LicenseCheckoutCancel = L"The license checkout was canceled by the user.";
const STRING MgResources::LicenseInvalidSerialNumber = L"Invalid serial number.";
@@ -54,9 +55,10 @@
const STRING MgResources::LicenseCheckoutError = L"Generic license checkout error.";
const STRING MgResources::LicenseNotFound = L"The license was not found.";
const STRING MgResources::PreCacheMapsStart = L"Precaching the following Maps:";
+const STRING MgResources::ResourceFileNotFound = L"The resource file could not be found";
+const STRING MgResources::CouldNotParseResourceFile = L"The resource file could not be parsed";
+const STRING MgResources::NoParentSectionForResourceDirective = L"No parent section found for current directive at offset %1";
-
-
// The following resource strings are for the commandline options for the server. These are not in the resources file because
// the server has not even started at this point.
const STRING MgResources::ServerCmdDaemon = L"daemon"; // Do not translate
@@ -307,6 +309,7 @@
MgStringCollection arguments;
arguments.Add(strResourceFilename.c_str());
arguments.Add(locale.c_str());
+ arguments.Add(MgResources::InvalidExtendedLocale);
throw new MgResourcesLoadFailedException(L"MgResources.LoadResources",
__LINE__, __WFILE__, &arguments, L"", NULL);
@@ -317,7 +320,11 @@
if (NULL != pResources)
{
bool bSuccess = false;
- if (MgFileUtil::PathnameExists(strResourceFilename) && true == ParseFile(strResourceFilename, pResources))
+ STRING sCause = MgResources::Unknown;
+ bool bPathExists = MgFileUtil::PathnameExists(strResourceFilename);
+ bool bParsedFile = ParseFile(strResourceFilename, pResources, locale);
+
+ if (bPathExists && true == bParsedFile)
{
m_resourceCache[locale] = pResources;
bSuccess = true;
@@ -330,12 +337,40 @@
// try to find the resource file of the parent locale, i.e. "en"
STRING strParentLocale = locale.substr(0, ParentLocaleLength);
STRING strParentResourceFilename = GetResourceFilename(strParentLocale);
- if (MgFileUtil::PathnameExists(strParentResourceFilename) && true == ParseFile(strParentResourceFilename, pResources))
+
+ bPathExists = MgFileUtil::PathnameExists(strParentResourceFilename);
+ bParsedFile = ParseFile(strParentResourceFilename, pResources, strParentLocale);
+
+ if (bPathExists && true == bParsedFile)
{
m_resourceCache[locale] = pResources;
bSuccess = true;
}
+ else //bSuccess still false
+ {
+ //One of the above (bPathExists or bParseFile) was false. Find out which
+ if (!bPathExists)
+ {
+ sCause = MgResources::ResourceFileNotFound;
+ }
+ else if (!bParsedFile)
+ {
+ sCause = MgResources::CouldNotParseResourceFile;
+ }
+ }
}
+ else //bSuccess still false
+ {
+ //One of the above (bPathExists or bParseFile) was false. Find out which
+ if (!bPathExists)
+ {
+ sCause = MgResources::ResourceFileNotFound;
+ }
+ else if (!bParsedFile)
+ {
+ sCause = MgResources::CouldNotParseResourceFile;
+ }
+ }
}
if (!bSuccess)
@@ -343,6 +378,7 @@
MgStringCollection arguments;
arguments.Add(strResourceFilename.c_str());
arguments.Add(locale.c_str());
+ arguments.Add(sCause);
throw new MgResourcesLoadFailedException(L"MgResources.LoadResources",
__LINE__, __WFILE__, &arguments, L"", NULL);
@@ -513,7 +549,7 @@
}
-bool MgResources::ParseFile(CREFSTRING strResourceFileName, ResourceFile* pResourceFile)
+bool MgResources::ParseFile(CREFSTRING strResourceFileName, ResourceFile* pResourceFile, CREFSTRING locale)
{
bool bParsed = false;
@@ -573,6 +609,17 @@
}
else
{
+ //This will at least tell us *where* in the file we're having problems with
+ MgStringCollection arguments;
+ arguments.Add(strResourceFileName);
+ arguments.Add(locale);
+
+ MgStringCollection args2;
+ STRING sOffset;
+ MgUtil::Int32ToString(offset, sOffset);
+ STRING sCause = MgResources::FormatMessage(MgResources::NoParentSectionForResourceDirective, &args2);
+
+ arguments.Add(sCause);
throw new MgResourcesLoadFailedException(L"MgResources.ParseFile", __LINE__, __WFILE__, NULL, L"", NULL);
}
}
Modified: trunk/MgDev/Common/Foundation/System/Resources.h
===================================================================
--- trunk/MgDev/Common/Foundation/System/Resources.h 2019-09-11 11:07:08 UTC (rev 9600)
+++ trunk/MgDev/Common/Foundation/System/Resources.h 2019-09-11 11:14:02 UTC (rev 9601)
@@ -237,6 +237,7 @@
static const STRING BetaReleaseDetected;
static const STRING PreviewReleaseDetected;
static const STRING InvalidLicense;
+ static const STRING InvalidExtendedLocale;
static const STRING LicenseAlreadyExists;
static const STRING LicenseNotFound;
static const STRING LicenseCheckoutCancel;
@@ -243,8 +244,10 @@
static const STRING LicenseCheckoutError;
static const STRING LicenseInvalidSerialNumber;
static const STRING PreCacheMapsStart;
+ static const STRING ResourceFileNotFound;
+ static const STRING CouldNotParseResourceFile;
+ static const STRING NoParentSectionForResourceDirective;
-
static const STRING UsingDefaultResourceFile;
static const STRING Resource_Exception_Section;
@@ -293,7 +296,7 @@
void DeleteResourceFile(ResourceFile* file);
/// Helper function to read in UTF8 resource file and parse it
- bool ParseFile(CREFSTRING strResourceFileName, ResourceFile* resourceFile);
+ bool ParseFile(CREFSTRING strResourceFileName, ResourceFile* resourceFile, CREFSTRING locale);
/// Pointer to a process-wide singleton.
static Ptr<MgResources> m_resources;
More information about the mapguide-commits
mailing list