Kaydet (Commit) 752d233c authored tarafından Jan Holesovsky's avatar Jan Holesovsky

Merge commit 'ooo/OOO330_m13'

......@@ -831,6 +831,7 @@ javaFrameworkError SAL_CALL jfw_getJRELocations(
JFW_E_NONE the function ran successfully.</br>
JFW_E_ERROR an error occurred during execution.</br>
JFW_E_INVALID_ARG pInfo contains invalid data</br>
JFW_E_NO_PLUGIN a plug-in library could not be found.<br/>
*/
javaFrameworkError SAL_CALL jfw_existJRE(const JavaInfo *pInfo, sal_Bool *exist);
......
......@@ -239,6 +239,25 @@ javaPluginError jfw_plugin_startJavaVirtualMachine(
/** checks if the installation of the jre still exists.
This function checks if the JRE described by pInfo still
exists. The check must be very quick because it is called by javaldx
(Linux, Solaris) at start up.
@param pInfo
[in] the JavaInfo object with information about the JRE.
@param pp_exist
[out] the parameter is set to either sal_True or sal_False. The value is
only valid if the function returns JFW_E_NONE.
@return
JFW_PLUGIN_E_NONE the function ran successfully.</br>
JFW_PLUGIN_E_ERROR an error occurred during execution.</br>
JFW_PLUGIN_E_INVALID_ARG pInfo contains invalid data</br>
*/
javaPluginError jfw_plugin_existJRE(const JavaInfo *pInfo, sal_Bool *exist);
#ifdef __cplusplus
}
#endif
......
......@@ -74,7 +74,7 @@ char const* const* OtherInfo::getRuntimePaths(int * size)
"/bin/hotspot/jvm.dll"
#elif UNX
#ifdef MACOSX
"/../../../JavaVM"
"/../../../../../Frameworks/JavaVM.framework/JavaVM" //as of 1.6.0_22
#else
"/lib/" JFW_PLUGIN_ARCH "/client/libjvm.so", // for Blackdown PPC
"/lib/" JFW_PLUGIN_ARCH "/server/libjvm.so", // for Blackdown AMD64
......@@ -96,8 +96,7 @@ char const* const* OtherInfo::getLibraryPaths(int* size)
#ifdef UNX
static char const * ar[] = {
#ifdef MACOSX
"/../Libraries",
"/lib"
//mac version does not have a ld library path anymore
#else
"/bin",
"/jre/bin",
......
......@@ -471,10 +471,10 @@ javaPluginError jfw_plugin_startJavaVirtualMachine(
{
JFW_ENSURE(0, OUSTR("[Java framework]sunjavaplugin" SAL_DLLEXTENSION
" could not load Java runtime library: \n")
+ sRuntimeLib + OUSTR("."));
+ sRuntimeLib + OUSTR("\n"));
JFW_TRACE0(OUSTR("[Java framework]sunjavaplugin" SAL_DLLEXTENSION
" could not load Java runtime library: \n")
+ sRuntimeLib + OUSTR("."));
+ sRuntimeLib + OUSTR("\n"));
return JFW_PLUGIN_E_VM_CREATION_FAILED;
}
......@@ -615,6 +615,64 @@ javaPluginError jfw_plugin_startJavaVirtualMachine(
return errcode;
}
extern "C"
javaPluginError jfw_plugin_existJRE(const JavaInfo *pInfo, sal_Bool *exist)
{
javaPluginError ret = JFW_PLUGIN_E_NONE;
if (!pInfo || !exist)
return JFW_PLUGIN_E_INVALID_ARG;
::rtl::OUString sLocation(pInfo->sLocation);
if (sLocation.getLength() == 0)
return JFW_PLUGIN_E_INVALID_ARG;
::osl::DirectoryItem item;
::osl::File::RC rc_item = ::osl::DirectoryItem::get(sLocation, item);
if (::osl::File::E_None == rc_item)
{
*exist = sal_True;
}
else if (::osl::File::E_NOENT == rc_item)
{
*exist = sal_False;
}
else
{
ret = JFW_PLUGIN_E_ERROR;
}
#ifdef MACOSX
//We can have the situation that the JavaVM runtime library is not
//contained within JAVA_HOME. Then the check for JAVA_HOME would return
//true although the runtime library may not be loadable.
if (ret == JFW_PLUGIN_E_NONE && *exist == sal_True)
{
rtl::OUString sRuntimeLib = getRuntimeLib(pInfo->arVendorData);
JFW_TRACE2(OUSTR("[Java framework] Checking existence of Java runtime library.\n"));
::osl::DirectoryItem itemRt;
::osl::File::RC rc_itemRt = ::osl::DirectoryItem::get(sRuntimeLib, itemRt);
if (::osl::File::E_None == rc_itemRt)
{
*exist = sal_True;
JFW_TRACE2(OUSTR("[Java framework] Java runtime library exist: ")
+ sRuntimeLib + OUSTR("\n"));
}
else if (::osl::File::E_NOENT == rc_itemRt)
{
*exist = sal_False;
JFW_TRACE2(OUSTR("[Java framework] Java runtime library does not exist: ")
+ sRuntimeLib + OUSTR("\n"));
}
else
{
ret = JFW_PLUGIN_E_ERROR;
JFW_TRACE2(OUSTR("[Java framework] Error while looking for Java runtime library: ")
+ sRuntimeLib + OUSTR(" \n"));
}
}
#endif
return ret;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -6,3 +6,8 @@ UDK_3_0_0 {
local:
*;
};
UDK_3.1 { # OOo 3.3
global:
jfw_plugin_existJRE;
} UDK_3_0_0;
......@@ -419,9 +419,9 @@ SelfTest::SelfTest()
break;
}
if (bRet)
JFW_TRACE2("[Java framework] sunjavaplugin: Testing class SunVersion succeeded.");
JFW_TRACE2("[Java framework] sunjavaplugin: Testing class SunVersion succeeded.\n");
else
OSL_ENSURE(bRet, "[Java framework] sunjavaplugin: SunVersion self test failed");
OSL_ENSURE(bRet, "[Java framework] sunjavaplugin: SunVersion self test failed.\n");
}
#endif
......
......@@ -451,12 +451,12 @@ bool getJavaProps(const OUString & exePath,
rs = stdoutReader.readLine( & aLine);
if (rs != FileHandleReader::RESULT_OK)
break;
JFW_TRACE2(OString("[Java framework] line:\" ")
+ aLine + OString(" \".\n"));
// JFW_TRACE2(OString("[Java framework] line:\" ")
// + aLine + OString(" \".\n"));
OUString sLine;
if (!decodeOutput(aLine, &sLine))
continue;
JFW_TRACE2(OString("[Java framework] line:\" ")
JFW_TRACE2(OString("[Java framework]:\" ")
+ OString( CHAR_POINTER(sLine)) + OString(" \".\n"));
sLine = sLine.trim();
if (sLine.getLength() == 0)
......@@ -510,7 +510,7 @@ bool decodeOutput(const rtl::OString& s, rtl::OUString* out)
} while (nIndex >= 0);
*out = buff.makeStringAndClear();
JFW_TRACE2(*out);
// JFW_TRACE2(*out);
return true;
}
......
......@@ -931,6 +931,16 @@ void CNodeJavaInfo::loadFromNode(xmlDoc * pDoc, xmlNode * pJavaInfo)
pDoc, cur->children, 1);
rtl::OUString sRequire = xmlRequire;
nRequirements = sRequire.toInt64(16);
#ifdef MACOSX
//javaldx is not used anymore in the mac build. In case the Java
//corresponding to the saved settings does not exist anymore the
//javavm services will look for an existing Java after creation of
//the JVM failed. See stoc/source/javavm/javavm.cxx. Only if
//nRequirements does not have the flag JFW_REQUIRE_NEEDRESTART the
//jvm of the new selected JRE will be started. Old settings (before
//OOo 3.3) still contain the flag which can be safely ignored.
nRequirements &= ~JFW_REQUIRE_NEEDRESTART;
#endif
}
else if (xmlStrcmp(cur->name, (xmlChar*) "vendorData") == 0)
{
......
......@@ -1115,29 +1115,39 @@ javaFrameworkError SAL_CALL jfw_getJRELocations(
javaFrameworkError jfw_existJRE(const JavaInfo *pInfo, sal_Bool *exist)
{
javaFrameworkError ret = JFW_E_NONE;
if (!pInfo || !exist)
return JFW_E_INVALID_ARG;
::rtl::OUString sLocation(pInfo->sLocation);
if (sLocation.getLength() == 0)
return JFW_E_INVALID_ARG;
//get the function jfw_plugin_existJRE
jfw::VendorSettings aVendorSettings;
jfw::CJavaInfo aInfo;
aInfo = (const ::JavaInfo*) pInfo; //makes a copy of pInfo
rtl::OUString sLibPath = aVendorSettings.getPluginLibrary(aInfo.getVendor());
osl::Module modulePlugin(sLibPath);
if ( ! modulePlugin)
return JFW_E_NO_PLUGIN;
rtl::OUString sFunctionName(
RTL_CONSTASCII_USTRINGPARAM("jfw_plugin_existJRE"));
jfw_plugin_existJRE_ptr pFunc =
(jfw_plugin_existJRE_ptr)
osl_getFunctionSymbol(modulePlugin, sFunctionName.pData);
if (pFunc == NULL)
return JFW_E_ERROR;
javaPluginError plerr = (*pFunc)(pInfo, exist);
::osl::DirectoryItem item;
::osl::File::RC rc_item = ::osl::DirectoryItem::get(sLocation, item);
if (::osl::File::E_None == rc_item)
{
*exist = sal_True;
}
else if (::osl::File::E_NOENT == rc_item)
{
*exist = sal_False;
}
else
javaFrameworkError ret = JFW_E_NONE;
switch (plerr)
{
case JFW_PLUGIN_E_NONE:
ret = JFW_E_NONE;
break;
case JFW_PLUGIN_E_INVALID_ARG:
ret = JFW_E_INVALID_ARG;
break;
case JFW_PLUGIN_E_ERROR:
ret = JFW_E_ERROR;
break;
default:
ret = JFW_E_ERROR;
}
return ret;
}
......
......@@ -65,6 +65,10 @@ typedef javaPluginError (*jfw_plugin_startJavaVirtualMachine_ptr)(
JavaVM ** ppVM,
JNIEnv ** ppEnv);
typedef javaPluginError (*jfw_plugin_existJRE_ptr)(
const JavaInfo *info,
sal_Bool *exist);
namespace jfw
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment