diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2014-12-15 16:42:03 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2014-12-15 16:45:51 +0100 |
commit | 5e9a2e9b0f33ab50aa3a84728db75383aede19d9 (patch) | |
tree | 1f66af867652c4c12ea1c34c0e564caaf5915578 /jvmfwk/source | |
parent | Rename getJREInfoByPath overload to getAndAddJREInfoByPath (diff) | |
download | core-5e9a2e9b0f33ab50aa3a84728db75383aede19d9.tar.gz core-5e9a2e9b0f33ab50aa3a84728db75383aede19d9.zip |
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.cxx | 16 |
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; |