Commits

Anonymous committed 1fdfb7c Merge

CWS-TOOLING: integrate CWS jl162

  • Participants
  • Parent commits e476dc5, 435b82e

Comments (0)

Files changed (10)

File jvmfwk/inc/jvmfwk/framework.h

     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);
 

File jvmfwk/inc/jvmfwk/vendorplugin.h

 
 
 
+/** 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

File jvmfwk/plugins/sunmajor/pluginlib/otherjre.cxx

         "/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
 #ifdef UNX        
     static char const * ar[] = {
 #ifdef MACOSX
-        "/../Libraries",
-        "/lib"
+        //mac version does not have a ld library path anymore
 #else
         "/bin",
         "/jre/bin",

File jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx

      {
          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;
      }
 
    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;
+}
+
+

File jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.map

     local:
 	*;
 };
+
+UDK_3.1 { # OOo 3.3
+    global:
+    jfw_plugin_existJRE;	
+} UDK_3_0_0;

File jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx

             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
 

File jvmfwk/plugins/sunmajor/pluginlib/util.cxx

         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)
     } while (nIndex >= 0);
 
     *out = buff.makeStringAndClear();
-    JFW_TRACE2(*out);
+//    JFW_TRACE2(*out);
     return true;
 }
 

File jvmfwk/source/elements.cxx

                 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)
         {

File jvmfwk/source/framework.cxx

 
 javaFrameworkError jfw_existJRE(const JavaInfo *pInfo, sal_Bool *exist)
 {
+    //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);
+
     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)
+    switch (plerr)
     {
-        *exist = sal_True;
-    }
-    else if (::osl::File::E_NOENT == rc_item)
-    {
-        *exist = sal_False;
-    }
-    else
-    {
+    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;
 }
 

File jvmfwk/source/framework.hxx

     JavaVM ** ppVM,
     JNIEnv ** ppEnv);
 
+typedef javaPluginError (*jfw_plugin_existJRE_ptr)(
+    const JavaInfo *info, 
+    sal_Bool *exist);
+
 
 namespace jfw
 {