summaryrefslogtreecommitdiff
path: root/jvmfwk
diff options
context:
space:
mode:
Diffstat (limited to 'jvmfwk')
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml2
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml2
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_os2.xml2
-rwxr-xr-xjvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml4
-rw-r--r--jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml2
-rw-r--r--jvmfwk/inc/jvmfwk/framework.h21
-rwxr-xr-xjvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx36
-rw-r--r--jvmfwk/source/framework.cxx30
-rw-r--r--jvmfwk/source/framework.map5
9 files changed, 91 insertions, 13 deletions
diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml
index f3bf44addc25..ed329e5788d3 100644
--- a/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml
+++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml
@@ -3,7 +3,7 @@
<javaSelection xmlns="http://openoffice.org/2004/java/framework/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <updated>2008-01-16</updated>
+ <updated>2004-01-30</updated>
<vendorInfos>
<vendor name="Sun Microsystems Inc.">
diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml
index 1d7894a11025..215d26c0ea2a 100644
--- a/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml
+++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml
@@ -3,7 +3,7 @@
<javaSelection xmlns="http://openoffice.org/2004/java/framework/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <updated>2008-01-16</updated>
+ <updated>2006-05-02</updated>
<vendorInfos>
<vendor name="Apple Computer, Inc.">
diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_os2.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_os2.xml
index 5ba2eaf76251..372254d4ee71 100644
--- a/jvmfwk/distributions/OpenOfficeorg/javavendors_os2.xml
+++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_os2.xml
@@ -3,7 +3,7 @@
<javaSelection xmlns="http://openoffice.org/2004/java/framework/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <updated>2008-01-16</updated>
+ <updated>2004-01-30</updated>
<vendorInfos>
<vendor name="Sun Microsystems Inc.">
diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml
index b9b8296edf8f..3b1f53fc4fce 100755
--- a/jvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml
+++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml
@@ -3,7 +3,7 @@
<javaSelection xmlns="http://openoffice.org/2004/java/framework/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <updated>2008-01-16</updated>
+ <updated>2004-01-30</updated>
<vendorInfos>
<vendor name="Sun Microsystems Inc.">
@@ -14,4 +14,4 @@
<plugins>
<library vendor="Sun Microsystems Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/sunjavaplugin.so</library>
</plugins>
-</javaSelection> \ No newline at end of file
+</javaSelection>
diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml
index 47a5800659ca..a72216d66646 100644
--- a/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml
+++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml
@@ -3,7 +3,7 @@
<javaSelection xmlns="http://openoffice.org/2004/java/framework/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <updated>2008-01-16</updated>
+ <updated>2004-01-30</updated>
<vendorInfos>
<vendor name="Sun Microsystems Inc.">
diff --git a/jvmfwk/inc/jvmfwk/framework.h b/jvmfwk/inc/jvmfwk/framework.h
index 49516f554e21..4082adba0a5f 100644
--- a/jvmfwk/inc/jvmfwk/framework.h
+++ b/jvmfwk/inc/jvmfwk/framework.h
@@ -815,6 +815,27 @@ javaFrameworkError SAL_CALL jfw_setJRELocations(
javaFrameworkError SAL_CALL jfw_getJRELocations(
rtl_uString *** parLocations, sal_Int32 * pSize);
+
+/** 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_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>
+ */
+javaFrameworkError SAL_CALL jfw_existJRE(const JavaInfo *pInfo, sal_Bool *exist);
+
+
/** locks this API so that it cannot be used by other threads.
<p>If a different thread called this function before then the
diff --git a/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx b/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx
index 762497b8d8bc..1a6f99f65ba4 100755
--- a/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx
+++ b/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx
@@ -46,6 +46,7 @@ using namespace rtl;
static sal_Bool hasOption(char const * szOption, int argc, char** argv);
static rtl::OString getLD_LIBRARY_PATH(const rtl::ByteSequence & vendorData);
+static bool findAndSelect(JavaInfo**);
//static sal_Bool printPaths(const OUString& sPathFile);
#define HELP_TEXT \
@@ -95,15 +96,22 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
if (pInfo == NULL)
{
- errcode = jfw_findAndSelectJRE( & pInfo);
- if (errcode == JFW_E_NO_JAVA_FOUND)
+ if (false == findAndSelect(&pInfo))
+ return -1;
+ }
+ else
+ {
+ //check if the JRE was not uninstalled
+ sal_Bool bExist = sal_False;
+ errcode = jfw_existJRE(pInfo, &bExist);
+ if (errcode == JFW_E_NONE)
{
- fprintf(stderr,"javaldx: Could not find a Java Runtime Environment! \n");
- return 0;
+ if (false == findAndSelect(&pInfo))
+ return -1;
}
- else if (errcode != JFW_E_NONE && errcode != JFW_E_DIRECT_MODE)
+ else
{
- fprintf(stderr,"javaldx failed!\n");
+ fprintf(stderr, "javaldx: Could not determine if JRE still exist\n");
return -1;
}
}
@@ -162,7 +170,21 @@ static sal_Bool hasOption(char const * szOption, int argc, char** argv)
return retVal;
}
-
+static bool findAndSelect(JavaInfo ** ppInfo)
+{
+ javaFrameworkError errcode = jfw_findAndSelectJRE(ppInfo);
+ if (errcode == JFW_E_NO_JAVA_FOUND)
+ {
+ fprintf(stderr,"javaldx: Could not find a Java Runtime Environment! \n");
+ return false;
+ }
+ else if (errcode != JFW_E_NONE && errcode != JFW_E_DIRECT_MODE)
+ {
+ fprintf(stderr,"javaldx failed!\n");
+ return false;
+ }
+ return true;
+}
diff --git a/jvmfwk/source/framework.cxx b/jvmfwk/source/framework.cxx
index 75a20ac98ff3..933e5e10ea09 100644
--- a/jvmfwk/source/framework.cxx
+++ b/jvmfwk/source/framework.cxx
@@ -34,6 +34,7 @@
#include "rtl/ustring.hxx"
#include "rtl/bootstrap.hxx"
#include "osl/thread.hxx"
+#include "osl/file.hxx"
#include "osl/module.hxx"
#include "jvmfwk/framework.h"
#include "jvmfwk/vendorplugin.h"
@@ -1113,6 +1114,35 @@ javaFrameworkError SAL_CALL jfw_getJRELocations(
return errcode;
}
+
+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;
+
+ ::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_E_ERROR;
+ }
+
+ return ret;
+}
+
void SAL_CALL jfw_lock()
{
jfw::FwkMutex::get().acquire();
diff --git a/jvmfwk/source/framework.map b/jvmfwk/source/framework.map
index 2ce5d22b61dc..c95cc83aa826 100644
--- a/jvmfwk/source/framework.map
+++ b/jvmfwk/source/framework.map
@@ -24,3 +24,8 @@ UDK_3_0_0 {
local:
*;
};
+
+UDK_3.1 { # OOo 3.1.0
+ global:
+ jfw_existJRE;
+} UDK_3_0_0;