[commit] r2287 - in trunk/GME: Mga MgaUtil
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Thu Aug 15 10:55:40 CDT 2013
Author: ksmyth
Date: Thu Aug 15 10:55:39 2013
New Revision: 2287
Log:
Better error message for MgaProject::Open version mismatch
Modified:
trunk/GME/Mga/MgaProject.cpp
trunk/GME/MgaUtil/MgaRegistrar.cpp
Modified: trunk/GME/Mga/MgaProject.cpp
==============================================================================
--- trunk/GME/Mga/MgaProject.cpp Wed Aug 14 14:24:40 2013 (r2286)
+++ trunk/GME/Mga/MgaProject.cpp Thu Aug 15 10:55:39 2013 (r2287)
@@ -145,9 +145,17 @@
CComPtr<IMgaRegistrar> mgareg;
COMTHROW(mgareg.CoCreateInstance(OLESTR("Mga.MgaRegistrar")));
CComBSTR connstr;
- COMTHROW(EDEF(mgareg->QueryParadigm(s, &connstr, pGUID, REGACCESS_PRIORITY), E_MGA_PARADIGM_NOTREG));
+ {
+ HRESULT hr = mgareg->QueryParadigm(s, &connstr, pGUID, REGACCESS_PRIORITY);
+ if (FAILED(hr))
+ {
+ CComPtr<IErrorInfo> info;
+ GetErrorInfo(0, &info);
+ throw _com_error(E_MGA_PARADIGM_NOTREG, info, true);
+ }
+ }
ASSERT(connstr);
- COMTHROW(metapr.CoCreateInstance( OLESTR("Mga.MgaMetaProject")));
+ COMTHROW(metapr.CoCreateInstance(OLESTR("Mga.MgaMetaProject")));
COMTHROW(EDEF(metapr->Open(connstr), E_MGA_PARADIGM_NOTREG));
CComVariant metaGUID;
COMTHROW(metapr->get_GUID(&metaGUID));
@@ -163,9 +171,19 @@
{
CComPtr<IMgaRegistrar> mgareg;
COMTHROW(mgareg.CoCreateInstance(OLESTR("Mga.MgaRegistrar")));
- COMTHROW(EDEF(mgareg->GUIDFromVersion(s, ver, &vguid, REGACCESS_PRIORITY), E_MGA_PARADIGM_NOTREG));
+ {
+ HRESULT hr = mgareg->GUIDFromVersion(s, ver, &vguid, REGACCESS_PRIORITY);
+ if (FAILED(hr))
+ {
+ CComPtr<IErrorInfo> info;
+ GetErrorInfo(0, &info);
+ throw _com_error(E_MGA_PARADIGM_NOTREG, info, true);
+ }
+ }
}
- COMTHROW(OpenParadigm(s,&vguid));
+ HRESULT hr = OpenParadigm(s,&vguid);
+ if (FAILED(hr))
+ return hr;
} COMCATCH(;);
}
@@ -412,12 +430,19 @@
}
if(s.Length()) {
+ HRESULT hr;
if (ver.Length()) {
// Version string has precedence
- COMTHROW(OpenParadigm(s,ver));
+ hr = OpenParadigm(s,ver);
}
else {
- COMTHROW(OpenParadigm(s,&pGUID));
+ hr = OpenParadigm(s,&pGUID);
+ }
+ if (FAILED(hr))
+ {
+ CComPtr<IErrorInfo> info;
+ GetErrorInfo(0, &info);
+ throw _com_error(hr, info, true);
}
}
else COMTHROW(E_MGA_MODULE_INCOMPATIBILITY);
Modified: trunk/GME/MgaUtil/MgaRegistrar.cpp
==============================================================================
--- trunk/GME/MgaUtil/MgaRegistrar.cpp Wed Aug 14 14:24:40 2013 (r2286)
+++ trunk/GME/MgaUtil/MgaRegistrar.cpp Thu Aug 15 10:55:39 2013 (r2287)
@@ -1473,12 +1473,12 @@
CRegKey par;
res = par.Open(HKEY_CURRENT_USER, rootreg + _T("\\Paradigms\\") + pname, KEY_READ);
if(res == ERROR_SUCCESS) {
- // REVOKE_SYS2(mode); // paradigm found, ignore system settings
if(inguidstr == NULL) {
guidact = QueryValue(par, _T("CurrentVersion"));
if(guidact.IsEmpty()) res = ERROR_FILE_NOT_FOUND;
}
- else guidact = inguidstr;
+ else
+ guidact = inguidstr;
}
if(res == ERROR_SUCCESS) res = subk.Open(par, guidact, KEY_READ);
if(res != ERROR_SUCCESS && res != ERROR_ACCESS_DENIED && res != ERROR_FILE_NOT_FOUND) ERRTHROW(res);
@@ -1490,20 +1490,33 @@
res = par.Open(HKEY_LOCAL_MACHINE, rootreg + _T("\\Paradigms\\") + pname, KEY_READ | KEY_WOW64_32KEY);
if(res == ERROR_SUCCESS) {
CString cur = QueryValue(par, _T("CurrentVersion"));
- if(cur.IsEmpty()) {
+ if (cur.IsEmpty() && inguidstr == NULL) {
guidact = QueryValue(par, _T("GUID"));
- if(inguidstr != NULL && inguidstr != CComBSTR(guidact)) COMTHROW(E_NOTFOUND);
+ if (inguidstr != NULL && inguidstr != CComBSTR(guidact))
+ COMTHROW(E_NOTFOUND);
subk.Attach(par.Detach());
}
else {
- if(inguidstr == NULL) guidact = cur;
- else guidact = inguidstr;
+ if (inguidstr == NULL)
+ guidact = cur;
+ else
+ guidact = inguidstr;
res = subk.Open(par, guidact, KEY_READ);
- if(res != ERROR_SUCCESS && res != ERROR_ACCESS_DENIED && res != ERROR_FILE_NOT_FOUND) ERRTHROW(res);
+ if (res != ERROR_SUCCESS && res != ERROR_ACCESS_DENIED && res != ERROR_FILE_NOT_FOUND)
+ ERRTHROW(res);
}
}
}
- if(subk == NULL) return(E_NOTFOUND); // !!!!!!!
+ if (subk == NULL)
+ {
+ CString error;
+ if (inguidstr)
+ error.Format(L"Paradigm '%s' with GUID '%s' is not registered.", pname, inguidstr);
+ else
+ error.Format(L"Paradigm '%s' is not registered.", pname);
+ SetErrorInfo(error);
+ return E_NOTFOUND;
+ }
CopyTo(QueryValue(subk, _T("ConnStr")), connstr);
@@ -1646,7 +1659,13 @@
}
if (gstr.IsEmpty()) {
- ERRTHROW(E_NOTFOUND);
+ CString error;
+ if (SysStringLen(ver))
+ error.Format(L"Paradigm '%s' with version '%s' is not registered.", name, ver);
+ else
+ error.Format(L"Paradigm '%s' is not registered.", name);
+ SetErrorInfo(error);
+ return E_NOTFOUND;
}
GUID g;
More information about the gme-commit
mailing list