LCOV - code coverage report
Current view: top level - jvmfwk/source - fwkbase.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 157 252 62.3 %
Date: 2014-11-03 Functions: 17 22 77.3 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include "rtl/ustring.hxx"
      21             : #include "rtl/ustrbuf.hxx"
      22             : #include "rtl/uri.hxx"
      23             : #include "osl/thread.hxx"
      24             : #include "osl/process.h"
      25             : #include "libxml/xpathInternals.h"
      26             : #include "osl/file.hxx"
      27             : #include "osl/module.hxx"
      28             : #include "framework.hxx"
      29             : #include "fwkutil.hxx"
      30             : #include "elements.hxx"
      31             : #include "fwkbase.hxx"
      32             : 
      33             : using namespace osl;
      34             : 
      35             : 
      36             : #define UNO_JAVA_JFW_PARAMETER "UNO_JAVA_JFW_PARAMETER_"
      37             : #define UNO_JAVA_JFW_JREHOME "UNO_JAVA_JFW_JREHOME"
      38             : #define UNO_JAVA_JFW_ENV_JREHOME "UNO_JAVA_JFW_ENV_JREHOME"
      39             : #define UNO_JAVA_JFW_CLASSPATH "UNO_JAVA_JFW_CLASSPATH"
      40             : #define UNO_JAVA_JFW_ENV_CLASSPATH "UNO_JAVA_JFW_ENV_CLASSPATH"
      41             : #define UNO_JAVA_JFW_CLASSPATH_URLS "UNO_JAVA_JFW_CLASSPATH_URLS"
      42             : #define UNO_JAVA_JFW_VENDOR_SETTINGS "UNO_JAVA_JFW_VENDOR_SETTINGS"
      43             : 
      44             : namespace jfw
      45             : {
      46             : bool  g_bJavaSet = false;
      47             : 
      48             : namespace {
      49             : 
      50         234 : OString getVendorSettingsPath(OUString const & sURL)
      51             : {
      52         234 :     if (sURL.isEmpty())
      53           0 :         return OString();
      54         234 :     OUString sSystemPathSettings;
      55         234 :     if (osl_getSystemPathFromFileURL(sURL.pData,
      56         234 :         & sSystemPathSettings.pData) != osl_File_E_None)
      57             :         throw FrameworkException(
      58             :             JFW_E_ERROR,
      59             :             OString("[Java framework] Error in function "
      60           0 :                          "getVendorSettingsPath (fwkbase.cxx) "));
      61             :     OString osSystemPathSettings =
      62         468 :         OUStringToOString(sSystemPathSettings,osl_getThreadTextEncoding());
      63         468 :     return osSystemPathSettings;
      64             : }
      65             : 
      66         148 : OUString getParam(OUString const & name)
      67             : {
      68         148 :     OUString retVal;
      69         148 :     bool b = Bootstrap::get()->getFrom(name, retVal);
      70             :     SAL_INFO(
      71             :         "jfw",
      72             :         "Using bootstrap parameter " << name << " = \"" << retVal << "\""
      73             :             << (b ? "" : " (undefined)"));
      74         148 :     return retVal;
      75             : }
      76             : 
      77         148 : OUString getParamFirstUrl(OUString const & name)
      78             : {
      79             :     // Some parameters can consist of multiple URLs (separated by space
      80             :     // characters, although trim() harmlessly also removes other white-space),
      81             :     // of which only the first is used:
      82         148 :     sal_Int32 i = 0;
      83         148 :     return getParam(name).trim().getToken(0, ' ', i);
      84             : }
      85             : 
      86             : }//blind namespace
      87             : 
      88             : 
      89         232 : VendorSettings::VendorSettings():
      90         232 :     m_xmlDocVendorSettingsFileUrl(BootParams::getVendorSettings())
      91             : {
      92             :     OString sMsgExc("[Java framework] Error in constructor "
      93         232 :                          "VendorSettings::VendorSettings() (fwkbase.cxx)");
      94             :     //Prepare the xml document and context
      95         464 :     OString sSettingsPath = getVendorSettingsPath(m_xmlDocVendorSettingsFileUrl);
      96         232 :     if (sSettingsPath.isEmpty())
      97             :     {
      98             :         OString sMsg("[Java framework] A vendor settings file was not specified."
      99           0 :                "Check the bootstrap parameter " UNO_JAVA_JFW_VENDOR_SETTINGS ".");
     100             :         OSL_FAIL(sMsg.getStr());
     101           0 :         throw FrameworkException(JFW_E_CONFIGURATION, sMsg);
     102             :     }
     103         232 :     if (!sSettingsPath.isEmpty())
     104             :     {
     105         232 :         m_xmlDocVendorSettings = xmlParseFile(sSettingsPath.getStr());
     106         232 :         if (m_xmlDocVendorSettings == NULL)
     107             :             throw FrameworkException(
     108             :                 JFW_E_ERROR,
     109             :                 OString("[Java framework] Error while parsing file: ")
     110           0 :                 + sSettingsPath + OString("."));
     111             : 
     112         232 :         m_xmlPathContextVendorSettings = xmlXPathNewContext(m_xmlDocVendorSettings);
     113             :         int res = xmlXPathRegisterNs(
     114             :             m_xmlPathContextVendorSettings, (xmlChar*) "jf",
     115         232 :             (xmlChar*) NS_JAVA_FRAMEWORK);
     116         232 :         if (res == -1)
     117           0 :             throw FrameworkException(JFW_E_ERROR, sMsgExc);
     118         232 :     }
     119         232 : }
     120             : 
     121         232 : VersionInfo VendorSettings::getVersionInformation(const OUString & sVendor)
     122             : {
     123             :     OSL_ASSERT(!sVendor.isEmpty());
     124         232 :     VersionInfo aVersionInfo;
     125         464 :     OString osVendor = OUStringToOString(sVendor, RTL_TEXTENCODING_UTF8);
     126             :     //Get minVersion
     127             :     OString sExpresion = OString(
     128         464 :         "/jf:javaSelection/jf:vendorInfos/jf:vendor[@name=\"") +
     129         928 :         osVendor + OString("\"]/jf:minVersion");
     130             : 
     131         464 :     CXPathObjectPtr xPathObjectMin;
     132         464 :     xPathObjectMin =
     133         232 :         xmlXPathEvalExpression((xmlChar*) sExpresion.getStr(),
     134         232 :                                m_xmlPathContextVendorSettings);
     135         232 :     if (xmlXPathNodeSetIsEmpty(xPathObjectMin->nodesetval))
     136             :     {
     137           0 :         aVersionInfo.sMinVersion = OUString();
     138             :     }
     139             :     else
     140             :     {
     141         232 :         CXmlCharPtr sVersion;
     142         232 :         sVersion = xmlNodeListGetString(
     143             :             m_xmlDocVendorSettings,
     144         464 :             xPathObjectMin->nodesetval->nodeTab[0]->xmlChildrenNode, 1);
     145         464 :         OString osVersion((sal_Char*)(xmlChar*) sVersion);
     146         464 :         aVersionInfo.sMinVersion = OStringToOUString(
     147         464 :             osVersion, RTL_TEXTENCODING_UTF8);
     148             :     }
     149             : 
     150             :     //Get maxVersion
     151         928 :     sExpresion = OString("/jf:javaSelection/jf:vendorInfos/jf:vendor[@name=\"") +
     152        1160 :         osVendor + OString("\"]/jf:maxVersion");
     153         464 :     CXPathObjectPtr xPathObjectMax;
     154         464 :     xPathObjectMax = xmlXPathEvalExpression(
     155         232 :         (xmlChar*) sExpresion.getStr(),
     156         232 :         m_xmlPathContextVendorSettings);
     157         232 :     if (xmlXPathNodeSetIsEmpty(xPathObjectMax->nodesetval))
     158             :     {
     159         232 :         aVersionInfo.sMaxVersion = OUString();
     160             :     }
     161             :     else
     162             :     {
     163           0 :         CXmlCharPtr sVersion;
     164           0 :         sVersion = xmlNodeListGetString(
     165             :             m_xmlDocVendorSettings,
     166           0 :             xPathObjectMax->nodesetval->nodeTab[0]->xmlChildrenNode, 1);
     167           0 :         OString osVersion((sal_Char*) (xmlChar*) sVersion);
     168           0 :         aVersionInfo.sMaxVersion = OStringToOUString(
     169           0 :             osVersion, RTL_TEXTENCODING_UTF8);
     170             :     }
     171             : 
     172             :     //Get excludeVersions
     173         928 :     sExpresion = OString("/jf:javaSelection/jf:vendorInfos/jf:vendor[@name=\"") +
     174        1160 :         osVendor + OString("\"]/jf:excludeVersions/jf:version");
     175         464 :     CXPathObjectPtr xPathObjectVersions;
     176         464 :     xPathObjectVersions =
     177         232 :         xmlXPathEvalExpression((xmlChar*) sExpresion.getStr(),
     178         232 :                                m_xmlPathContextVendorSettings);
     179         232 :     if (!xmlXPathNodeSetIsEmpty(xPathObjectVersions->nodesetval))
     180             :     {
     181           0 :         xmlNode* cur = xPathObjectVersions->nodesetval->nodeTab[0];
     182           0 :         while (cur != NULL)
     183             :         {
     184           0 :             if (cur->type == XML_ELEMENT_NODE )
     185             :             {
     186           0 :                 if (xmlStrcmp(cur->name, (xmlChar*) "version") == 0)
     187             :                 {
     188           0 :                     CXmlCharPtr sVersion;
     189           0 :                     sVersion = xmlNodeListGetString(
     190           0 :                         m_xmlDocVendorSettings, cur->xmlChildrenNode, 1);
     191           0 :                     OString osVersion((sal_Char*)(xmlChar*) sVersion);
     192             :                     OUString usVersion = OStringToOUString(
     193           0 :                         osVersion, RTL_TEXTENCODING_UTF8);
     194           0 :                     aVersionInfo.addExcludeVersion(usVersion);
     195             :                 }
     196             :             }
     197           0 :             cur = cur->next;
     198             :         }
     199             :     }
     200         464 :     return aVersionInfo;
     201             : }
     202             : 
     203         116 : std::vector<OUString> VendorSettings::getSupportedVendors()
     204             : {
     205         116 :     std::vector<OUString> vecVendors;
     206             :     //get the nodeset for the vendor elements
     207         232 :     jfw::CXPathObjectPtr result;
     208         116 :     result = xmlXPathEvalExpression(
     209             :         (xmlChar*)"/jf:javaSelection/jf:vendorInfos/jf:vendor",
     210         116 :         m_xmlPathContextVendorSettings);
     211         116 :     if (!xmlXPathNodeSetIsEmpty(result->nodesetval))
     212             :     {
     213             :         //get the values of the vendor elements + name attribute
     214         116 :         xmlNode* cur = result->nodesetval->nodeTab[0];
     215        1624 :         while (cur != NULL)
     216             :         {
     217             :             //between vendor elements are also text elements
     218        1392 :             if (cur->type == XML_ELEMENT_NODE)
     219             :             {
     220         696 :                 jfw::CXmlCharPtr sAttrVendor(xmlGetProp(cur, (xmlChar*) "name"));
     221         696 :                 vecVendors.push_back(sAttrVendor);
     222             :             }
     223        1392 :             cur = cur->next;
     224             :         }
     225             :     }
     226         232 :     return vecVendors;
     227             : }
     228             : 
     229           4 : ::std::vector<OString> BootParams::getVMParameters()
     230             : {
     231           4 :     ::std::vector<OString> vecParams;
     232             : 
     233           4 :     for (sal_Int32 i = 1; ; i++)
     234             :     {
     235           4 :         OUString sName = OUString(UNO_JAVA_JFW_PARAMETER) + OUString::number(i);
     236           4 :         OUString sValue;
     237           4 :         if (Bootstrap::get()->getFrom(sName, sValue))
     238             :         {
     239             :             OString sParam =
     240           0 :                 OUStringToOString(sValue, osl_getThreadTextEncoding());
     241           0 :             vecParams.push_back(sParam);
     242             : #if OSL_DEBUG_LEVEL >=2
     243             :             OString sParamName = OUStringToOString(sName, osl_getThreadTextEncoding());
     244             :             fprintf(stderr,"[Java framework] Using bootstrap parameter %s"
     245             :                     " = %s.\n", sParamName.getStr(), sParam.getStr());
     246             : #endif
     247             :         }
     248             :         else
     249           4 :             break;
     250           0 :     }
     251           4 :     return vecParams;
     252             : }
     253             : 
     254         102 : OUString BootParams::getUserData()
     255             : {
     256         102 :     return getParamFirstUrl("UNO_JAVA_JFW_USER_DATA");
     257             : }
     258             : 
     259          46 : OUString BootParams::getSharedData()
     260             : {
     261          46 :     return getParamFirstUrl("UNO_JAVA_JFW_SHARED_DATA");
     262             : }
     263             : 
     264           4 : OString BootParams::getClasspath()
     265             : {
     266           4 :     OString sClassPath;
     267           8 :     OUString sCP;
     268          12 :     if (Bootstrap::get()->getFrom(
     269             :         OUString(UNO_JAVA_JFW_CLASSPATH),
     270          12 :         sCP))
     271             :     {
     272           0 :         sClassPath = OUStringToOString(sCP, osl_getThreadTextEncoding());
     273             : #if OSL_DEBUG_LEVEL >=2
     274             :         fprintf(stderr,"[Java framework] Using bootstrap parameter "
     275             :             UNO_JAVA_JFW_CLASSPATH " = %s.\n", sClassPath.getStr());
     276             : #endif
     277             :     }
     278             : 
     279           8 :     OUString sEnvCP;
     280          12 :     if (Bootstrap::get()->getFrom(
     281             :         OUString(UNO_JAVA_JFW_ENV_CLASSPATH),
     282          12 :         sEnvCP))
     283             :     {
     284           4 :         char * pCp = getenv("CLASSPATH");
     285           4 :         if (pCp)
     286             :         {
     287           0 :             char szSep[] = {SAL_PATHSEPARATOR,0};
     288           0 :             sClassPath += OString(szSep) + OString(pCp);
     289             :         }
     290             : #if OSL_DEBUG_LEVEL >=2
     291             :         fprintf(stderr,"[Java framework] Using bootstrap parameter "
     292             :             UNO_JAVA_JFW_ENV_CLASSPATH " and class path is:\n %s.\n", pCp ? pCp : "");
     293             : #endif
     294             :     }
     295             : 
     296           8 :     return sClassPath;
     297             : }
     298             : 
     299         234 : OUString BootParams::getVendorSettings()
     300             : {
     301         234 :     OUString sVendor;
     302             :     OUString sName(
     303         468 :         UNO_JAVA_JFW_VENDOR_SETTINGS);
     304         234 :     if (Bootstrap::get()->getFrom(sName ,sVendor))
     305             :     {
     306             :         //check the value of the bootstrap variable
     307         234 :         jfw::FileStatus s = checkFileURL(sVendor);
     308         234 :         if (s != FILE_OK)
     309             :         {
     310             :             //This bootstrap parameter can contain a relative URL
     311           0 :             OUString sAbsoluteUrl;
     312           0 :             OUString sBaseDir = getLibraryLocation();
     313           0 :             if (File::getAbsoluteFileURL(sBaseDir, sVendor, sAbsoluteUrl)
     314             :                 != File::E_None)
     315             :                 throw FrameworkException(
     316             :                     JFW_E_CONFIGURATION,
     317             :                     OString("[Java framework] Invalid value for bootstrap variable: "
     318           0 :                              UNO_JAVA_JFW_VENDOR_SETTINGS));
     319           0 :             sVendor = sAbsoluteUrl;
     320           0 :             s = checkFileURL(sVendor);
     321           0 :             if (s == jfw::FILE_INVALID || s == jfw::FILE_DOES_NOT_EXIST)
     322             :             {
     323             :                 throw FrameworkException(
     324             :                     JFW_E_CONFIGURATION,
     325             :                     OString("[Java framework] Invalid value for bootstrap variable: "
     326           0 :                                  UNO_JAVA_JFW_VENDOR_SETTINGS));
     327           0 :             }
     328             :         }
     329             : #if OSL_DEBUG_LEVEL >=2
     330             :     OString sValue = OUStringToOString(sVendor, osl_getThreadTextEncoding());
     331             :     fprintf(stderr,"[Java framework] Using bootstrap parameter "
     332             :             UNO_JAVA_JFW_VENDOR_SETTINGS" = %s.\n", sValue.getStr());
     333             : #endif
     334             :     }
     335         468 :     return sVendor;
     336             : }
     337             : 
     338         102 : OUString BootParams::getJREHome()
     339             : {
     340         102 :     OUString sJRE;
     341         204 :     OUString sEnvJRE;
     342         102 :     bool bJRE = Bootstrap::get()->getFrom(
     343         204 :         OUString(UNO_JAVA_JFW_JREHOME) ,sJRE);
     344         102 :     bool bEnvJRE = Bootstrap::get()->getFrom(
     345         204 :         OUString(UNO_JAVA_JFW_ENV_JREHOME) ,sEnvJRE);
     346             : 
     347         102 :     if (bJRE && bEnvJRE)
     348             :     {
     349             :         throw FrameworkException(
     350             :             JFW_E_CONFIGURATION,
     351             :             OString("[Java framework] Both bootstrap parameter "
     352             :                          UNO_JAVA_JFW_JREHOME" and "
     353             :                          UNO_JAVA_JFW_ENV_JREHOME" are set. However only one of them can be set."
     354             :                              "Check bootstrap parameters: environment variables, command line "
     355           0 :                              "arguments, rc/ini files for executable and java framework library."));
     356             :     }
     357         102 :     else if (bEnvJRE)
     358             :     {
     359         102 :         const char * pJRE = getenv("JAVA_HOME");
     360         102 :         if (pJRE == NULL)
     361             :         {
     362             :             throw FrameworkException(
     363             :             JFW_E_CONFIGURATION,
     364             :             OString("[Java framework] Both bootstrap parameter "
     365             :                          UNO_JAVA_JFW_ENV_JREHOME" is set, but the environment variable "
     366           0 :                          "JAVA_HOME is not set."));
     367             :         }
     368         102 :         OString osJRE(pJRE);
     369         204 :         OUString usJRE = OStringToOUString(osJRE, osl_getThreadTextEncoding());
     370         102 :         if (File::getFileURLFromSystemPath(usJRE, sJRE) != File::E_None)
     371             :             throw FrameworkException(
     372             :                 JFW_E_ERROR,
     373             :                 OString("[Java framework] Error in function BootParams::getJREHome() "
     374         102 :                              "(fwkbase.cxx)."));
     375             : #if OSL_DEBUG_LEVEL >=2
     376             :     fprintf(stderr,"[Java framework] Using bootstrap parameter "
     377             :             UNO_JAVA_JFW_ENV_JREHOME" with JAVA_HOME = %s.\n", pJRE);
     378             : #endif
     379             :     }
     380           0 :     else if (getMode() == JFW_MODE_DIRECT
     381           0 :         && !bEnvJRE
     382           0 :         && !bJRE)
     383             :     {
     384             :         throw FrameworkException(
     385             :             JFW_E_CONFIGURATION,
     386             :             OString("[Java framework] The bootstrap parameter "
     387             :                          UNO_JAVA_JFW_ENV_JREHOME" or " UNO_JAVA_JFW_JREHOME
     388           0 :                          " must be set in direct mode."));
     389             :     }
     390             : 
     391             : #if OSL_DEBUG_LEVEL >=2
     392             :     if (bJRE == sal_True)
     393             :     {
     394             :         OString sValue = OUStringToOString(sJRE, osl_getThreadTextEncoding());
     395             :         fprintf(stderr,"[Java framework] Using bootstrap parameter "
     396             :             UNO_JAVA_JFW_JREHOME" = %s.\n", sValue.getStr());
     397             :     }
     398             : #endif
     399         204 :     return sJRE;
     400             : }
     401             : 
     402           0 : OUString BootParams::getClasspathUrls()
     403             : {
     404           0 :     OUString sParams;
     405           0 :     Bootstrap::get()->getFrom(
     406             :         OUString(UNO_JAVA_JFW_CLASSPATH_URLS),
     407           0 :         sParams);
     408             : #if OSL_DEBUG_LEVEL >=2
     409             :     OString sValue = OUStringToOString(sParams, osl_getThreadTextEncoding());
     410             :     fprintf(stderr,"[Java framework] Using bootstrap parameter "
     411             :             UNO_JAVA_JFW_CLASSPATH_URLS " = %s.\n", sValue.getStr());
     412             : #endif
     413           0 :     return sParams;
     414             : }
     415             : 
     416         370 : JFW_MODE getMode()
     417             : {
     418             :     static bool g_bMode = false;
     419             :     static JFW_MODE g_mode = JFW_MODE_APPLICATION;
     420             : 
     421         370 :     if (g_bMode == false)
     422             :     {
     423             :         //check if either of the "direct mode" bootstrap variables is set
     424         116 :         bool bDirectMode = true;
     425         116 :         OUString sValue;
     426         116 :         const rtl::Bootstrap * aBoot = Bootstrap::get();
     427         232 :         OUString sJREHome(UNO_JAVA_JFW_JREHOME);
     428         116 :         if (!aBoot->getFrom(sJREHome, sValue))
     429             :         {
     430         116 :             OUString sEnvJRE(UNO_JAVA_JFW_ENV_JREHOME);
     431         116 :             if (!aBoot->getFrom(sEnvJRE, sValue))
     432             :             {
     433          14 :                 OUString sClasspath(UNO_JAVA_JFW_CLASSPATH);
     434          14 :                 if (!aBoot->getFrom(sClasspath, sValue))
     435             :                 {
     436          14 :                     OUString sEnvClasspath(UNO_JAVA_JFW_ENV_CLASSPATH);
     437          14 :                     if (!aBoot->getFrom(sEnvClasspath, sValue))
     438             :                     {
     439             :                         OUString sParams = OUString(
     440          28 :                             UNO_JAVA_JFW_PARAMETER) +
     441          42 :                             OUString::number(1);
     442          14 :                         if (!aBoot->getFrom(sParams, sValue))
     443             :                         {
     444          14 :                             bDirectMode = false;
     445          14 :                         }
     446          14 :                     }
     447          14 :                 }
     448         116 :             }
     449             :         }
     450             : 
     451         116 :         if (bDirectMode)
     452         102 :             g_mode = JFW_MODE_DIRECT;
     453             :         else
     454          14 :             g_mode = JFW_MODE_APPLICATION;
     455         232 :         g_bMode = true;
     456             :     }
     457             : 
     458         370 :     return g_mode;
     459             : }
     460             : 
     461           0 : OUString getApplicationClassPath()
     462             : {
     463             :     OSL_ASSERT(getMode() == JFW_MODE_APPLICATION);
     464           0 :     OUString retVal;
     465           0 :     OUString sParams = BootParams::getClasspathUrls();
     466           0 :     if (sParams.isEmpty())
     467           0 :         return retVal;
     468             : 
     469           0 :     OUStringBuffer buf;
     470           0 :     sal_Int32 index = 0;
     471           0 :     const char szClassPathSep[] = {SAL_PATHSEPARATOR,0};
     472           0 :     do
     473             :     {
     474           0 :         OUString token( sParams.getToken( 0, ' ', index ).trim() );
     475           0 :         if (!token.isEmpty())
     476             :         {
     477           0 :             OUString systemPathElement;
     478             :             oslFileError rc = osl_getSystemPathFromFileURL(
     479           0 :                 token.pData, &systemPathElement.pData );
     480             :             OSL_ASSERT( rc == osl_File_E_None );
     481           0 :             if (rc == osl_File_E_None && !systemPathElement.isEmpty())
     482             :             {
     483           0 :                 if (buf.getLength() > 0)
     484           0 :                     buf.append( szClassPathSep );
     485           0 :                 buf.append( systemPathElement );
     486           0 :             }
     487           0 :         }
     488             :     }
     489           0 :     while (index >= 0);
     490           0 :     return buf.makeStringAndClear();
     491             : }
     492             : 
     493           0 : OString makeClassPathOption(OUString const & sUserClassPath)
     494             : {
     495             :     //Compose the class path
     496           0 :     OString sPaths;
     497           0 :     OUStringBuffer sBufCP(4096);
     498             : 
     499             :     // append all user selected jars to the class path
     500           0 :     if (!sUserClassPath.isEmpty())
     501           0 :         sBufCP.append(sUserClassPath);
     502             : 
     503             :     //append all jar libraries and components to the class path
     504           0 :     OUString sAppCP = getApplicationClassPath();
     505           0 :     if (!sAppCP.isEmpty())
     506             :     {
     507           0 :         if (!sUserClassPath.isEmpty())
     508             :         {
     509           0 :             char szSep[] = {SAL_PATHSEPARATOR,0};
     510           0 :             sBufCP.appendAscii(szSep);
     511             :         }
     512           0 :         sBufCP.append(sAppCP);
     513             :     }
     514             : 
     515           0 :     sPaths = OUStringToOString(
     516           0 :         sBufCP.makeStringAndClear(), osl_getThreadTextEncoding());
     517             : 
     518           0 :     OString sOptionClassPath("-Djava.class.path=");
     519           0 :     sOptionClassPath += sPaths;
     520           0 :     return sOptionClassPath;
     521             : }
     522             : 
     523          42 : OString getUserSettingsPath()
     524             : {
     525          42 :     return getSettingsPath(BootParams::getUserData());
     526             : }
     527             : 
     528           0 : OString getSharedSettingsPath()
     529             : {
     530           0 :     return getSettingsPath(BootParams::getSharedData());
     531             : }
     532             : 
     533          42 : OString getSettingsPath( const OUString & sURL)
     534             : {
     535          42 :     if (sURL.isEmpty())
     536           0 :         return OString();
     537          42 :     OUString sPath;
     538          42 :     if (osl_getSystemPathFromFileURL(sURL.pData,
     539          42 :         & sPath.pData) != osl_File_E_None)
     540             :         throw FrameworkException(
     541             :             JFW_E_ERROR, OString(
     542           0 :                 "[Java framework] Error in function ::getSettingsPath (fwkbase.cxx)."));
     543          42 :     return OUStringToOString(sPath,osl_getThreadTextEncoding());
     544             : }
     545             : 
     546           2 : OString getVendorSettingsPath()
     547             : {
     548           2 :     return getVendorSettingsPath(BootParams::getVendorSettings());
     549             : }
     550             : 
     551          14 : void setJavaSelected()
     552             : {
     553          14 :     g_bJavaSet = true;
     554          14 : }
     555             : 
     556           0 : bool wasJavaSelectedInSameProcess()
     557             : {
     558             :     //g_setJavaProcId not set means no Java selected
     559           0 :     if (g_bJavaSet == true)
     560           0 :         return true;
     561           0 :     return false;
     562             : }
     563             : 
     564             : 
     565             : }
     566             : 
     567             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10