summaryrefslogtreecommitdiff
path: root/jvmfwk/source/fwkutil.cxx
diff options
context:
space:
mode:
authorJoachim Lingner <jl@openoffice.org>2004-05-17 12:55:32 +0000
committerJoachim Lingner <jl@openoffice.org>2004-05-17 12:55:32 +0000
commita917e5f73090323c80a5cd0670ea1d2dd69edadb (patch)
tree2e5f2d0b5c7fe4e98023a7238c9d9edcfbf126e2 /jvmfwk/source/fwkutil.cxx
parent4078f3b82ff4035f17257e965ed56178ffcff983 (diff)
#i20052#
Diffstat (limited to 'jvmfwk/source/fwkutil.cxx')
-rw-r--r--jvmfwk/source/fwkutil.cxx119
1 files changed, 106 insertions, 13 deletions
diff --git a/jvmfwk/source/fwkutil.cxx b/jvmfwk/source/fwkutil.cxx
index a9ab78218fc7..b14910bf766b 100644
--- a/jvmfwk/source/fwkutil.cxx
+++ b/jvmfwk/source/fwkutil.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: fwkutil.cxx,v $
*
- * $Revision: 1.10 $
+ * $Revision: 1.11 $
*
- * last change: $Author: jl $ $Date: 2004-05-14 14:44:09 $
+ * last change: $Author: jl $ $Date: 2004-05-17 13:55:31 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -219,19 +219,11 @@ rtl::OUString getPlatform()
return buf.makeStringAndClear();
}
-javaFrameworkError getPluginLibrary(rtl::OUString & sLibUrl)
+javaFrameworkError getPluginLibrary(
+ const rtl::OUString& sVendor, rtl::OUString & sLibUrl)
{
javaFrameworkError errcode = JFW_E_NONE;
- CNodeJava javaNode;
- if ((errcode = javaNode.loadFromSettings()) != JFW_E_NONE)
- return errcode;
- CJavaInfo aInfo(javaNode.getJavaInfo());
- if (aInfo == NULL)
- return JFW_E_NO_SELECT;
-
- //With the vendor name we can get the associated plugin library
- //from the javavendors.xml
rtl::OString sVendorsPath = getVendorSettingsPath();
CXmlDocPtr docVendor;
CXPathContextPtr contextVendor;
@@ -246,7 +238,7 @@ javaFrameworkError getPluginLibrary(rtl::OUString & sLibUrl)
rtl::OUStringBuffer usBuffer(256);
usBuffer.appendAscii("/jf:javaSelection/jf:plugins/jf:library[@vendor=\"");
- usBuffer.append(aInfo.getVendor());
+ usBuffer.append(sVendor);
usBuffer.appendAscii("\"]/text()");
rtl::OUString ouExpr = usBuffer.makeStringAndClear();
rtl::OString sExpression =
@@ -791,4 +783,105 @@ rtl::OUString getDirFromFile(const rtl::OUString& usFilePath)
return rtl::OUString(usFilePath.getStr(), index);
}
+//todo !!!
+rtl::OUString getJavaSettingsDirectory()
+{
+ //test if we are running within an office
+ return rtl::OUString();
+}
+
+JFW_MODE getMode()
+{
+ //Determine if we run in an office process:
+ rtl_uString* sExe = NULL;
+ if (osl_getExecutableFile( & sExe) != osl_Process_E_None)
+ return JFW_MODE_INDETERMINED;
+ rtl::OUString ouExe(sExe, SAL_NO_ACQUIRE);
+
+ //create the name of the executable
+ rtl::OUStringBuffer buff(128);
+ buff.appendAscii("soffice");
+ buff.appendAscii(SAL_PRGEXTENSION);
+ rtl::OUString sOffice = buff.makeStringAndClear();
+
+ sal_Int32 index = 0;
+ if ((index = ouExe.lastIndexOf(sOffice)) != 1
+ && index + sOffice.getLength() == ouExe.getLength())
+ return JFW_MODE_OFFICE;
+
+
+ //FWK_MODE_ENV_SIMPLE ?
+ rtl::OUString sOO_USE_JRE(RTL_CONSTASCII_USTRINGPARAM(ENVIRONMENT_VAR_JRE_PATH));
+
+ rtl_uString * psOO_USE_JRE = 0;
+ if (osl_getEnvironment(sOO_USE_JRE.pData, & psOO_USE_JRE) != osl_Process_E_None)
+ return JFW_MODE_INDETERMINED;
+
+ rtl::OUString sOO_USE_JRE_VALUE(psOO_USE_JRE, SAL_NO_ACQUIRE);
+ if (sOO_USE_JRE_VALUE.getLength() > 0)
+ return JFW_MODE_ENV_SIMPLE;
+
+ return JFW_MODE_INDETERMINED;
+
+
+}
+
+javaFrameworkError makeClassPathOption(
+ JFW_MODE mode, CNodeJava & javaSettings, rtl::OString & sOption)
+{
+ //Compose the class path
+ rtl::OUStringBuffer sBufCP(4096);
+ char szSep[] = {SAL_PATHSEPARATOR,0};
+ if (mode == JFW_MODE_OFFICE)
+ {
+ //build the class path from the classes directory
+ rtl::OUString sClassPath;
+ javaFrameworkError errcode = jfw::buildClassPathFromDirectory(
+ javaSettings.m_sClassesDirectory, sClassPath);
+ if (errcode != JFW_E_NONE)
+ return JFW_E_ERROR;
+ sBufCP.append(sClassPath);
+ // append all user selected jars to the classpath
+ if (javaSettings.getUserClassPath().getLength() != 0)
+ {
+ sBufCP.appendAscii(szSep);
+ sBufCP.append(javaSettings.getUserClassPath());
+ }
+ }
+ else if (mode == JFW_MODE_ENV_SIMPLE)
+ {
+ //We use the CLASSPATH environment variable
+ rtl::OUString sCP(
+ RTL_CONSTASCII_USTRINGPARAM("CLASSPATH"));
+
+ rtl_uString * psCPVal = 0;
+ if (osl_getEnvironment(sCP.pData, & psCPVal) != osl_Process_E_None)
+ return JFW_E_ERROR;
+
+ rtl::OUString sCPVal(psCPVal, SAL_NO_ACQUIRE);
+ sBufCP.append(sCPVal);
+ }
+ else
+ OSL_ASSERT(0);
+
+ //add the path of the UNO components
+ rtl::OUString sComponents =
+ jfw::retrieveClassPath(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "${$PKG_SharedUnoFile:UNO_JAVA_CLASSPATH}")));
+ sBufCP.append(sComponents);
+ sComponents = jfw::retrieveClassPath(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "${$PKG_UserUnoFile:UNO_JAVA_CLASSPATH}")));
+
+ sBufCP.append(sComponents);
+ rtl::OString sOptionClassPath("-Djava.class.path=");
+ sOptionClassPath += rtl::OUStringToOString(
+ sBufCP.makeStringAndClear(), osl_getThreadTextEncoding());
+
+ sOption = sOptionClassPath;
+ return JFW_E_NONE;
+}
+
+
}