Check each potential JRE location only once

i.e., after recent "fdo#83753: consider JAVA_HOME and PATH when selecting JRE"
fix, if jfw_findAndSelectJRE found no suitable JRE in
jfw_plugin_getJavaInfoFromJavaHome or jfw_plugin_getJavaInfosFromPath, do not
re-check those locations in jfw_plugin_getAllJavaInfos.

Change-Id: If4e085b4fceff5b2494c7b7b84ac51691dbc78cc
This commit is contained in:
Stephan Bergmann
2014-12-15 16:42:03 +01:00
parent 0136acb836
commit 5e9a2e9b0f
6 changed files with 127 additions and 91 deletions

View File

@@ -86,14 +86,17 @@ javaFrameworkError SAL_CALL jfw_findAllJREs(JavaInfo ***pparInfo, sal_Int32 *pSi
//maxVersion and excludeVersions
sal_Int32 cInfos = 0;
JavaInfo** arInfos = NULL;
std::vector<rtl::Reference<jfw_plugin::VendorBase>> infos;
javaPluginError plerr = jfw_plugin_getAllJavaInfos(
true,
vendor,
versionInfo.sMinVersion,
versionInfo.sMaxVersion,
versionInfo.getExcludeVersions(),
versionInfo.getExcludeVersionSize(),
& arInfos,
& cInfos);
& cInfos,
infos);
if (plerr != JFW_PLUGIN_E_NONE)
return JFW_E_ERROR;
@@ -408,10 +411,12 @@ javaFrameworkError SAL_CALL jfw_findAndSelectJRE(JavaInfo **pInfo)
std::pair<OUString, jfw::VersionInfo>(vendor, versionInfo));
}
std::vector<rtl::Reference<jfw_plugin::VendorBase>> infos;
// first inspect Java installation that the JAVA_HOME
// environment variable points to (if it is set)
JavaInfo* pHomeInfo = NULL;
if (jfw_plugin_getJavaInfoFromJavaHome(versionInfos, &pHomeInfo)
if (jfw_plugin_getJavaInfoFromJavaHome(versionInfos, &pHomeInfo, infos)
== JFW_PLUGIN_E_NONE)
{
aCurrentInfo = pHomeInfo;
@@ -431,7 +436,8 @@ javaFrameworkError SAL_CALL jfw_findAndSelectJRE(JavaInfo **pInfo)
if (!bInfoFound)
{
std::vector<JavaInfo*> vecJavaInfosFromPath;
if (jfw_plugin_getJavaInfosFromPath(versionInfos, vecJavaInfosFromPath)
if (jfw_plugin_getJavaInfosFromPath(
versionInfos, vecJavaInfosFromPath, infos)
== JFW_PLUGIN_E_NONE)
{
std::vector<JavaInfo*>::const_iterator it = vecJavaInfosFromPath.begin();
@@ -482,13 +488,15 @@ javaFrameworkError SAL_CALL jfw_findAndSelectJRE(JavaInfo **pInfo)
sal_Int32 cInfos = 0;
JavaInfo** arInfos = NULL;
javaPluginError plerr = jfw_plugin_getAllJavaInfos(
false,
vendor,
versionInfo.sMinVersion,
versionInfo.sMaxVersion,
versionInfo.getExcludeVersions(),
versionInfo.getExcludeVersionSize(),
& arInfos,
& cInfos);
& cInfos,
infos);
if (plerr != JFW_PLUGIN_E_NONE)
continue;