INTEGRATION: CWS jl8 (1.17.4); FILE MERGED
2004/07/08 09:39:27 jl 1.17.4.6: #116544# use bootstrap vars _OS _ARCH 2004/07/07 13:30:18 jl 1.17.4.5: #i30342# 2004/07/06 16:03:15 jl 1.17.4.4: #i30342# 2004/06/25 09:43:21 jl 1.17.4.3: #i30342# 2004/06/24 13:02:03 jl 1.17.4.2: #i30342# 2004/06/18 15:01:57 jl 1.17.4.1: #i30342# plugin supports multiple vendors
This commit is contained in:
@@ -2,9 +2,9 @@
|
|||||||
*
|
*
|
||||||
* $RCSfile: fwkutil.cxx,v $
|
* $RCSfile: fwkutil.cxx,v $
|
||||||
*
|
*
|
||||||
* $Revision: 1.17 $
|
* $Revision: 1.18 $
|
||||||
*
|
*
|
||||||
* last change: $Author: jl $ $Date: 2004-05-19 09:38:08 $
|
* last change: $Author: hr $ $Date: 2004-07-23 11:55:05 $
|
||||||
*
|
*
|
||||||
* The Contents of this file are made available subject to the terms of
|
* The Contents of this file are made available subject to the terms of
|
||||||
* either of the following licenses
|
* either of the following licenses
|
||||||
@@ -170,51 +170,23 @@ rtl::OUString retrieveClassPath( ::rtl::OUString const & macro )
|
|||||||
return buf.makeStringAndClear();
|
return buf.makeStringAndClear();
|
||||||
}
|
}
|
||||||
|
|
||||||
//ToDo we should use a SAL function to determine which platform and OS we are working on.
|
|
||||||
rtl::OUString getPlatform()
|
rtl::OUString getPlatform()
|
||||||
{
|
{
|
||||||
char * szArchitecture =
|
|
||||||
#if defined SPARC
|
|
||||||
"sparc";
|
|
||||||
#elif defined INTEL
|
|
||||||
"x86";
|
|
||||||
#elif defined POWERPC
|
|
||||||
"ppc";
|
|
||||||
#elif defined MIPS
|
|
||||||
"mips";
|
|
||||||
#elif defined S390
|
|
||||||
"s390";
|
|
||||||
#else
|
|
||||||
#error unknown plattform
|
|
||||||
#endif
|
|
||||||
|
|
||||||
char * szOS =
|
|
||||||
|
|
||||||
#if defined WNT
|
|
||||||
"wnt";
|
|
||||||
#elif defined SOLARIS
|
|
||||||
"solaris";
|
|
||||||
#elif defined LINUX
|
|
||||||
"linux";
|
|
||||||
#elif defined MACOSX
|
|
||||||
"macosx";
|
|
||||||
#elif defined FREEBSD
|
|
||||||
"freebsd";
|
|
||||||
#elif defined NETBSD
|
|
||||||
"netbsd";
|
|
||||||
#elif defined AIX
|
|
||||||
"aix";
|
|
||||||
#else
|
|
||||||
#error unknown operating system
|
|
||||||
#endif
|
|
||||||
rtl::OUStringBuffer buf(256);
|
rtl::OUStringBuffer buf(256);
|
||||||
buf.appendAscii("_");
|
buf.appendAscii("_");
|
||||||
rtl::OUString sOS = rtl::OStringToOUString(
|
|
||||||
rtl::OString(szOS), RTL_TEXTENCODING_UTF8);
|
rtl::OUString sOS;
|
||||||
|
rtl::Bootstrap::get(
|
||||||
|
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_OS")),
|
||||||
|
sOS);
|
||||||
|
OSL_ASSERT(sOS.getLength() > 0);
|
||||||
buf.append(sOS);
|
buf.append(sOS);
|
||||||
buf.appendAscii("_");
|
buf.appendAscii("_");
|
||||||
rtl::OUString sArch = rtl::OStringToOUString(
|
rtl::OUString sArch;
|
||||||
rtl::OString(szArchitecture), RTL_TEXTENCODING_UTF8);
|
rtl::Bootstrap::get(
|
||||||
|
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_ARCH")),
|
||||||
|
sArch);
|
||||||
|
OSL_ASSERT(sArch.getLength() > 0);
|
||||||
buf.append(sArch);
|
buf.append(sArch);
|
||||||
return buf.makeStringAndClear();
|
return buf.makeStringAndClear();
|
||||||
}
|
}
|
||||||
@@ -312,7 +284,8 @@ javaFrameworkError getVendorPluginURLs(
|
|||||||
jfw::CXmlCharPtr sTextLibrary(
|
jfw::CXmlCharPtr sTextLibrary(
|
||||||
xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
|
xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
|
||||||
PluginLibrary plugin;
|
PluginLibrary plugin;
|
||||||
plugin.sVendor = rtl::OString((sal_Char*)(xmlChar*) sAttrVendor);
|
rtl::OString osVendor((sal_Char*)(xmlChar*) sAttrVendor);
|
||||||
|
plugin.sVendor = rtl::OStringToOUString(osVendor, RTL_TEXTENCODING_UTF8);
|
||||||
|
|
||||||
if (mode == JFW_MODE_OFFICE)
|
if (mode == JFW_MODE_OFFICE)
|
||||||
{
|
{
|
||||||
@@ -341,6 +314,40 @@ javaFrameworkError getVendorPluginURLs(
|
|||||||
return JFW_E_NONE;
|
return JFW_E_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
javaFrameworkError getSupportedVendors(
|
||||||
|
const xmlDocPtr doc,
|
||||||
|
const xmlXPathContextPtr context,
|
||||||
|
std::vector<rtl::OUString> * vecVendors)
|
||||||
|
{
|
||||||
|
OSL_ASSERT(vecVendors && doc && context);
|
||||||
|
|
||||||
|
//get the nodeset for the library elements
|
||||||
|
jfw::CXPathObjectPtr result;
|
||||||
|
result = xmlXPathEvalExpression(
|
||||||
|
(xmlChar*)"/jf:javaSelection/jf:plugins/jf:library", context);
|
||||||
|
if (xmlXPathNodeSetIsEmpty(result->nodesetval))
|
||||||
|
{
|
||||||
|
return JFW_E_ERROR;
|
||||||
|
}
|
||||||
|
vecVendors->clear();
|
||||||
|
|
||||||
|
//get the values of the library elements + vendor attribute
|
||||||
|
xmlNode* cur = result->nodesetval->nodeTab[0];
|
||||||
|
JFW_MODE mode = getMode();
|
||||||
|
while (cur != NULL)
|
||||||
|
{
|
||||||
|
//between library elements are also text elements
|
||||||
|
if (cur->type == XML_ELEMENT_NODE)
|
||||||
|
{
|
||||||
|
jfw::CXmlCharPtr sAttrVendor(xmlGetProp(cur, (xmlChar*) "vendor"));
|
||||||
|
vecVendors->push_back(sAttrVendor);
|
||||||
|
}
|
||||||
|
cur = cur->next;
|
||||||
|
}
|
||||||
|
return JFW_E_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Get the file URL to the javasettings.xml
|
/** Get the file URL to the javasettings.xml
|
||||||
*/
|
*/
|
||||||
rtl::OUString getUserSettingsURL()
|
rtl::OUString getUserSettingsURL()
|
||||||
@@ -443,56 +450,78 @@ rtl::OUString getVendorSettingsURL()
|
|||||||
{
|
{
|
||||||
//get the system path to the javavendors.xml file
|
//get the system path to the javavendors.xml file
|
||||||
//First try in an office installation
|
//First try in an office installation
|
||||||
rtl::OUString sBaseDir = getBaseInstallation();
|
JFW_MODE mode = getMode();
|
||||||
if (sBaseDir.getLength() != 0)
|
if (mode == JFW_MODE_OFFICE)
|
||||||
{
|
{
|
||||||
//We are run within office installation
|
rtl::OUString sBaseDir = getBaseInstallation();
|
||||||
rtl::OUStringBuffer sSettings(256);
|
if (sBaseDir.getLength() != 0)
|
||||||
sSettings.append(sBaseDir);
|
{
|
||||||
sSettings.appendAscii("/share/config/");
|
//We are run within office installation
|
||||||
sSettings.appendAscii(VENDORSETTINGS);
|
rtl::OUStringBuffer sSettings(256);
|
||||||
return sSettings.makeStringAndClear();
|
sSettings.append(sBaseDir);
|
||||||
|
sSettings.appendAscii("/share/config/");
|
||||||
|
sSettings.appendAscii(VENDORSETTINGS);
|
||||||
|
return sSettings.makeStringAndClear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(mode == JFW_MODE_ENV_SIMPLE)
|
||||||
|
{
|
||||||
|
|
||||||
|
//try next to the executable
|
||||||
|
rtl_uString* sExe = NULL;
|
||||||
|
if (osl_getExecutableFile( & sExe) == osl_Process_E_None)
|
||||||
|
{
|
||||||
|
rtl::OUString ouExe(sExe, SAL_NO_ACQUIRE);
|
||||||
|
rtl::OUString sVendor = getDirFromFile(ouExe);
|
||||||
|
rtl::OUStringBuffer sBufVendor(256);
|
||||||
|
sBufVendor.append(sVendor);
|
||||||
|
sBufVendor.appendAscii("/");
|
||||||
|
sBufVendor.appendAscii(VENDORSETTINGS);
|
||||||
|
sVendor = sBufVendor.makeStringAndClear();
|
||||||
|
|
||||||
|
//check if the file exists
|
||||||
|
osl::DirectoryItem vendorItem;
|
||||||
|
osl::File::RC fileError = osl::DirectoryItem::get(sVendor, vendorItem);
|
||||||
|
if (fileError == osl::FileBase::E_None)
|
||||||
|
return sVendor;
|
||||||
|
//Hack. try the so sub dir of the executable dir. Necessery for build process
|
||||||
|
//where javavendors.xml is delivered to ../bin/so for StarOffice
|
||||||
|
sVendor = getDirFromFile(ouExe);
|
||||||
|
sBufVendor.append(sVendor);
|
||||||
|
sBufVendor.appendAscii("/so/");
|
||||||
|
sBufVendor.appendAscii(VENDORSETTINGS);
|
||||||
|
sVendor = sBufVendor.makeStringAndClear();
|
||||||
|
//check if the file exists
|
||||||
|
fileError = osl::DirectoryItem::get(sVendor, vendorItem);
|
||||||
|
if (fileError == osl::FileBase::E_None)
|
||||||
|
return sVendor;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
OSL_ASSERT(0);
|
||||||
|
|
||||||
|
//try next to the jvmfwk.dll
|
||||||
|
rtl::OUString sLib = searchFileNextToThisLib(
|
||||||
|
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(VENDORSETTINGS)));
|
||||||
|
if (sLib.getLength() > 0)
|
||||||
|
return sLib;
|
||||||
|
|
||||||
|
//try the paths from the PATH environment variable
|
||||||
|
rtl::OUString sVendorsFile(
|
||||||
|
RTL_CONSTASCII_USTRINGPARAM(VENDORSETTINGS));
|
||||||
|
rtl::OUString sVendorsUrl;
|
||||||
|
|
||||||
|
rtl::OUString sPathName(RTL_CONSTASCII_USTRINGPARAM("PATH"));
|
||||||
|
rtl::OUString sPathValue;
|
||||||
|
if (osl_getEnvironment(sPathName.pData, & sPathValue.pData)
|
||||||
|
== osl_Process_E_None)
|
||||||
|
{
|
||||||
|
if (osl_searchFileURL(sVendorsFile.pData, sPathValue.pData ,
|
||||||
|
& sVendorsUrl.pData)
|
||||||
|
== osl_File_E_None)
|
||||||
|
return sVendorsUrl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//try next to the executable
|
|
||||||
rtl_uString* sExe = NULL;
|
|
||||||
if (osl_getExecutableFile( & sExe) != osl_Process_E_None)
|
|
||||||
{
|
|
||||||
OSL_ASSERT(0);
|
|
||||||
return rtl::OUString();
|
|
||||||
}
|
|
||||||
|
|
||||||
rtl::OUString ouExe(sExe, SAL_NO_ACQUIRE);
|
|
||||||
rtl::OUString sVendor = getDirFromFile(ouExe);
|
|
||||||
rtl::OUStringBuffer sBufVendor(256);
|
|
||||||
sBufVendor.append(sVendor);
|
|
||||||
sBufVendor.appendAscii("/");
|
|
||||||
sBufVendor.appendAscii(VENDORSETTINGS);
|
|
||||||
sVendor = sBufVendor.makeStringAndClear();
|
|
||||||
|
|
||||||
//check if the file exists
|
|
||||||
osl::DirectoryItem vendorItem;
|
|
||||||
osl::File::RC fileError = osl::DirectoryItem::get(sVendor, vendorItem);
|
|
||||||
if (fileError == osl::FileBase::E_None)
|
|
||||||
return sVendor;
|
|
||||||
|
|
||||||
//Hack. try the so sub dir of the executable dir. Necessery for build process
|
|
||||||
//where javavendors.xml is delivered to ../bin/so for StarOffice
|
|
||||||
sVendor = getDirFromFile(ouExe);
|
|
||||||
sBufVendor.append(sVendor);
|
|
||||||
sBufVendor.appendAscii("/so/");
|
|
||||||
sBufVendor.appendAscii(VENDORSETTINGS);
|
|
||||||
sVendor = sBufVendor.makeStringAndClear();
|
|
||||||
//check if the file exists
|
|
||||||
fileError = osl::DirectoryItem::get(sVendor, vendorItem);
|
|
||||||
if (fileError == osl::FileBase::E_None)
|
|
||||||
return sVendor;
|
|
||||||
|
|
||||||
//try next to the jvmfwk.dll
|
|
||||||
rtl::OUString sLib = searchFileNextToThisLib(
|
|
||||||
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(VENDORSETTINGS)));
|
|
||||||
|
|
||||||
OSL_ASSERT(sLib.getLength()> 0 );
|
|
||||||
return rtl::OUString();
|
return rtl::OUString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -574,15 +603,16 @@ bool isAccessibilitySupportDesired()
|
|||||||
javaFrameworkError getVersionInformation(
|
javaFrameworkError getVersionInformation(
|
||||||
const xmlDocPtr doc,
|
const xmlDocPtr doc,
|
||||||
const xmlXPathContextPtr context,
|
const xmlXPathContextPtr context,
|
||||||
const rtl::OString & sVendor,
|
const rtl::OUString & sVendor,
|
||||||
VersionInfo *pVersionInfo)
|
VersionInfo *pVersionInfo)
|
||||||
{
|
{
|
||||||
OSL_ASSERT(doc && context && sVendor.getLength() && pVersionInfo);
|
OSL_ASSERT(doc && context && sVendor.getLength() && pVersionInfo);
|
||||||
|
|
||||||
|
rtl::OString osVendor = rtl::OUStringToOString(sVendor, RTL_TEXTENCODING_UTF8);
|
||||||
//Get minVersion
|
//Get minVersion
|
||||||
rtl::OString sExpresion= rtl::OString(
|
rtl::OString sExpresion= rtl::OString(
|
||||||
"/jf:javaSelection/jf:vendorInfos/jf:vendor[@name=\"") +
|
"/jf:javaSelection/jf:vendorInfos/jf:vendor[@name=\"") +
|
||||||
sVendor + rtl::OString("\"]/jf:minVersion");
|
osVendor + rtl::OString("\"]/jf:minVersion");
|
||||||
|
|
||||||
jfw::CXPathObjectPtr xPathObjectMin;
|
jfw::CXPathObjectPtr xPathObjectMin;
|
||||||
xPathObjectMin =
|
xPathObjectMin =
|
||||||
@@ -603,7 +633,7 @@ javaFrameworkError getVersionInformation(
|
|||||||
|
|
||||||
//Get maxVersion
|
//Get maxVersion
|
||||||
sExpresion = rtl::OString("/jf:javaSelection/jf:vendorInfos/jf:vendor[@name=\"") +
|
sExpresion = rtl::OString("/jf:javaSelection/jf:vendorInfos/jf:vendor[@name=\"") +
|
||||||
sVendor + rtl::OString("\"]/jf:maxVersion");
|
osVendor + rtl::OString("\"]/jf:maxVersion");
|
||||||
jfw::CXPathObjectPtr xPathObjectMax;
|
jfw::CXPathObjectPtr xPathObjectMax;
|
||||||
xPathObjectMax = xmlXPathEvalExpression(
|
xPathObjectMax = xmlXPathEvalExpression(
|
||||||
(xmlChar*) sExpresion.getStr(), context);
|
(xmlChar*) sExpresion.getStr(), context);
|
||||||
@@ -623,11 +653,11 @@ javaFrameworkError getVersionInformation(
|
|||||||
|
|
||||||
//Get excludeVersions
|
//Get excludeVersions
|
||||||
sExpresion = rtl::OString("/jf:javaSelection/jf:vendorInfos/jf:vendor[@name=\"") +
|
sExpresion = rtl::OString("/jf:javaSelection/jf:vendorInfos/jf:vendor[@name=\"") +
|
||||||
sVendor + rtl::OString("\"]/jf:excludeVersions/jf:version");
|
osVendor + rtl::OString("\"]/jf:excludeVersions/jf:version");
|
||||||
jfw::CXPathObjectPtr xPathObjectVersions;
|
jfw::CXPathObjectPtr xPathObjectVersions;
|
||||||
xPathObjectVersions =
|
xPathObjectVersions =
|
||||||
xmlXPathEvalExpression((xmlChar*) sExpresion.getStr(), context);
|
xmlXPathEvalExpression((xmlChar*) sExpresion.getStr(), context);
|
||||||
if (xPathObjectVersions->nodesetval)
|
if (!xmlXPathNodeSetIsEmpty(xPathObjectVersions->nodesetval))
|
||||||
{
|
{
|
||||||
xmlNode* cur = xPathObjectVersions->nodesetval->nodeTab[0];
|
xmlNode* cur = xPathObjectVersions->nodesetval->nodeTab[0];
|
||||||
while (cur != NULL)
|
while (cur != NULL)
|
||||||
|
Reference in New Issue
Block a user