summaryrefslogtreecommitdiff
path: root/jvmfwk/source
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2014-12-15 16:42:03 +0100
committerStephan Bergmann <sbergman@redhat.com>2014-12-15 16:45:51 +0100
commit5e9a2e9b0f33ab50aa3a84728db75383aede19d9 (patch)
tree1f66af867652c4c12ea1c34c0e564caaf5915578 /jvmfwk/source
parent0136acb836f3451786c4bd9c34dafe66e30d4dda (diff)
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
Diffstat (limited to 'jvmfwk/source')
-rw-r--r--jvmfwk/source/framework.cxx16
1 files changed, 12 insertions, 4 deletions
diff --git a/jvmfwk/source/framework.cxx b/jvmfwk/source/framework.cxx
index 75daa77b83eb..314e92fb26b1 100644
--- a/jvmfwk/source/framework.cxx
+++ b/jvmfwk/source/framework.cxx
@@ -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;