diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2014-10-09 17:24:52 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2014-10-09 17:27:20 +0200 |
commit | 2ceeee914e3ff69811ca04ecccf30a582c58b34a (patch) | |
tree | bba87c6d0d2c783ce47134349f7c8fd5dc19c932 /jvmfwk | |
parent | 3de89997f492c1216592fa4db1c7e6ce6c3fe4fa (diff) |
Remove jvmfwk plugin feature
...which was effectively unused; there only ever was a single sunjavaplugin that
is now folded directly into jvmfwk. Leaves room for further clean up.
Change-Id: I14dd2a3a09bd1ce9a8c3f5c156628ec11d954a0b
Diffstat (limited to 'jvmfwk')
-rw-r--r-- | jvmfwk/Library_jvmfwk.mk | 23 | ||||
-rw-r--r-- | jvmfwk/Library_sunjavaplugin.mk | 62 | ||||
-rw-r--r-- | jvmfwk/Module_jvmfwk.mk | 1 | ||||
-rw-r--r-- | jvmfwk/README | 2 | ||||
-rw-r--r-- | jvmfwk/distributions/OpenOfficeorg/javavendors.xsd | 31 | ||||
-rw-r--r-- | jvmfwk/distributions/OpenOfficeorg/javavendors_freebsd.xml | 6 | ||||
-rw-r--r-- | jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml | 8 | ||||
-rw-r--r-- | jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml | 6 | ||||
-rw-r--r-- | jvmfwk/distributions/OpenOfficeorg/javavendors_template.xml | 4 | ||||
-rw-r--r-- | jvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml | 4 | ||||
-rw-r--r-- | jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml | 5 | ||||
-rw-r--r-- | jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx | 16 | ||||
-rw-r--r-- | jvmfwk/source/elements.hxx | 17 | ||||
-rw-r--r-- | jvmfwk/source/framework.cxx | 277 | ||||
-rw-r--r-- | jvmfwk/source/fwkbase.cxx | 111 | ||||
-rw-r--r-- | jvmfwk/source/fwkbase.hxx | 13 |
16 files changed, 74 insertions, 512 deletions
diff --git a/jvmfwk/Library_jvmfwk.mk b/jvmfwk/Library_jvmfwk.mk index f47caa2ec867..5b99f5869acc 100644 --- a/jvmfwk/Library_jvmfwk.mk +++ b/jvmfwk/Library_jvmfwk.mk @@ -13,16 +13,30 @@ $(eval $(call gb_Library_add_defs,jvmfwk,\ -DJVMFWK_DLLIMPLEMENTATION \ )) +ifneq ($(JVM_ONE_PATH_CHECK),) +$(eval $(call gb_Library_add_defs,jvmfwk,\ + -DJVM_ONE_PATH_CHECK=\"$(JVM_ONE_PATH_CHECK)\" \ +)) +endif + $(eval $(call gb_Library_use_api,jvmfwk,\ udkapi \ )) $(eval $(call gb_Library_use_libraries,jvmfwk,\ + cppu \ cppuhelper \ sal \ + salhelper \ $(gb_UWINAPI) \ )) +ifeq ($(OS),ANDROID) +$(eval $(call gb_Library_use_libraries,jvmfwk,\ + lo-bootstrap \ +)) +endif + ifeq ($(OS),WNT) $(eval $(call gb_Library_use_system_win32_libs,jvmfwk,\ advapi32 \ @@ -32,9 +46,18 @@ endif $(eval $(call gb_Library_use_externals,jvmfwk,\ boost_headers \ libxml2 \ + valgrind \ )) $(eval $(call gb_Library_add_exception_objects,jvmfwk,\ + jvmfwk/plugins/sunmajor/pluginlib/gnujre \ + jvmfwk/plugins/sunmajor/pluginlib/otherjre \ + jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin \ + jvmfwk/plugins/sunmajor/pluginlib/sunjre \ + jvmfwk/plugins/sunmajor/pluginlib/sunversion \ + jvmfwk/plugins/sunmajor/pluginlib/util \ + jvmfwk/plugins/sunmajor/pluginlib/vendorbase \ + jvmfwk/plugins/sunmajor/pluginlib/vendorlist \ jvmfwk/source/elements \ jvmfwk/source/framework \ jvmfwk/source/fwkbase \ diff --git a/jvmfwk/Library_sunjavaplugin.mk b/jvmfwk/Library_sunjavaplugin.mk deleted file mode 100644 index a82dfe8fd939..000000000000 --- a/jvmfwk/Library_sunjavaplugin.mk +++ /dev/null @@ -1,62 +0,0 @@ -# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -$(eval $(call gb_Library_Library,sunjavaplugin)) - -$(eval $(call gb_Library_add_defs,sunjavaplugin,\ - -DJVMFWK_PLUGIN_DLLIMPLEMENTATION \ -)) - -ifneq ($(JVM_ONE_PATH_CHECK),) -$(eval $(call gb_Library_add_defs,sunjavaplugin,\ - -DJVM_ONE_PATH_CHECK=\"$(JVM_ONE_PATH_CHECK)\" \ -)) -endif - -$(eval $(call gb_Library_use_api,sunjavaplugin,\ - udkapi \ -)) - -$(eval $(call gb_Library_use_libraries,sunjavaplugin,\ - cppu \ - cppuhelper \ - sal \ - salhelper \ - $(gb_UWINAPI) \ -)) - -ifeq ($(OS),ANDROID) -$(eval $(call gb_Library_use_libraries,sunjavaplugin,\ - lo-bootstrap \ -)) -endif - -ifeq ($(OS),WNT) -$(eval $(call gb_Library_use_system_win32_libs,sunjavaplugin,\ - advapi32 \ -)) -endif - -$(eval $(call gb_Library_use_externals,sunjavaplugin,\ - boost_headers \ - valgrind \ -)) - -$(eval $(call gb_Library_add_exception_objects,sunjavaplugin,\ - jvmfwk/plugins/sunmajor/pluginlib/gnujre \ - jvmfwk/plugins/sunmajor/pluginlib/otherjre \ - jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin \ - jvmfwk/plugins/sunmajor/pluginlib/sunjre \ - jvmfwk/plugins/sunmajor/pluginlib/sunversion \ - jvmfwk/plugins/sunmajor/pluginlib/util \ - jvmfwk/plugins/sunmajor/pluginlib/vendorbase \ - jvmfwk/plugins/sunmajor/pluginlib/vendorlist \ -)) - -# vim:set noet sw=4 ts=4: diff --git a/jvmfwk/Module_jvmfwk.mk b/jvmfwk/Module_jvmfwk.mk index 00fd9c569008..5ec28e5f8ead 100644 --- a/jvmfwk/Module_jvmfwk.mk +++ b/jvmfwk/Module_jvmfwk.mk @@ -14,7 +14,6 @@ ifeq ($(ENABLE_JAVA),TRUE) $(eval $(call gb_Module_add_targets,jvmfwk,\ CustomTarget_jreproperties \ Library_jvmfwk \ - Library_sunjavaplugin \ Package_jreproperties \ Package_rcfiles \ )) diff --git a/jvmfwk/README b/jvmfwk/README index dad5f435622e..3c2b105cd207 100644 --- a/jvmfwk/README +++ b/jvmfwk/README @@ -1,4 +1,4 @@ Wrappers so you can use all the Java Runtime Environments with their slightly incompatible APIs with more ease. -Uses an over-engineered "plugin" mechanism although there is only one +Used to use an over-engineered "plugin" mechanism although there was only one "plugin", called "sunmajor", that handles all possible JREs. diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors.xsd b/jvmfwk/distributions/OpenOfficeorg/javavendors.xsd index 34a0cd579ec8..fbc643f713c7 100644 --- a/jvmfwk/distributions/OpenOfficeorg/javavendors.xsd +++ b/jvmfwk/distributions/OpenOfficeorg/javavendors.xsd @@ -21,33 +21,16 @@ xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <element name="javaSelection" type="jf:JavaSelectionType"> - <unique name="dummy1"> - <selector xpath="jf:plugins/jf:library"/> - <field xpath="@vendor"/> - </unique> - - - <keyref name="dummy2" refer="jf:pluginKey"> - <selector xpath="jf:vendorInfos/jf:vendor"/> - <field xpath="@name"/> - </keyref> - <unique name="dummy3"> <selector xpath="jf:vendorInfos/jf:vendor"/> <field xpath="@name"/> </unique> - - <key name="pluginKey"> - <selector xpath="jf:plugins/jf:library"/> - <field xpath="@vendor"/> - </key> </element> <complexType name="JavaSelectionType"> <sequence> <element name="updated" type="date"/> <element name="vendorInfos" type="jf:VendorInfoType"/> - <element name="plugins" type="jf:PluginType"/> </sequence> </complexType> @@ -57,21 +40,7 @@ <element name="vendor" type="jf:VendorType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> - - <complexType name="PluginType"> - <sequence> - <element name="library" type="jf:LibraryType" minOccurs="0" maxOccurs="unbounded"/> - </sequence> - </complexType> - <complexType name="LibraryType"> - <simpleContent> - <extension base="string"> - <attribute name="vendor" use="required" type="string"/> - </extension> - </simpleContent> - </complexType> - <complexType name="VendorType"> <sequence> <element name="minVersion" type="string" minOccurs="0"/> diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_freebsd.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_freebsd.xml index bfd80e0a926a..13089bca3000 100644 --- a/jvmfwk/distributions/OpenOfficeorg/javavendors_freebsd.xml +++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_freebsd.xml @@ -37,10 +37,4 @@ </vendor> </vendorInfos> - <plugins> - <library vendor="Oracle Corporation">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - <library vendor="Sun Microsystems Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - <library vendor="The FreeBSD Foundation">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - <library vendor="Free Software Foundation, Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - </plugins> </javaSelection> diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml index 311bf8146c0f..1c8c8bd32cdc 100644 --- a/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml +++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_linux.xml @@ -43,12 +43,4 @@ </vendor> </vendorInfos> - <plugins> - <library vendor="Sun Microsystems Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - <library vendor="Oracle Corporation">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - <library vendor="IBM Corporation">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - <library vendor="Blackdown Java-Linux Team">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - <library vendor="Free Software Foundation, Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - <library vendor="BEA Systems, Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - </plugins> </javaSelection> diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml index aa8b423a348e..e2925ee8aaaa 100644 --- a/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml +++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml @@ -33,9 +33,5 @@ <minVersion>1.7.0</minVersion> </vendor> </vendorInfos> - <plugins> - <library vendor="Oracle Corporation">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.dylib</library> - <library vendor="Apple Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.dylib</library> - <library vendor="Apple Computer, Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.dylib</library> - </plugins> + </javaSelection> diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_template.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_template.xml index 9bc0c4119da4..f4e5fb8306ba 100644 --- a/jvmfwk/distributions/OpenOfficeorg/javavendors_template.xml +++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_template.xml @@ -45,8 +45,4 @@ look like. </vendor> </vendorInfos> - <plugins> - <library vendor="Sun Microsystems Inc.">libsunjavapluginlo.dll</library> - <library vendor="VendorX">./pluginDir/vendorx.dll</library> - </plugins> </javaSelection> diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml index e9bbd68887fc..c7b0568c2d18 100644 --- a/jvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml +++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_unx.xml @@ -31,8 +31,4 @@ </vendor> </vendorInfos> - <plugins> - <library vendor="Oracle Corporation">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - <library vendor="Sun Microsystems Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/libsunjavapluginlo.so</library> - </plugins> </javaSelection> diff --git a/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml b/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml index 5b33aad6a777..4f76089863b9 100644 --- a/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml +++ b/jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml @@ -34,9 +34,4 @@ </vendor> </vendorInfos> - <plugins> - <library vendor="Sun Microsystems Inc.">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/sunjavapluginlo.dll</library> - <library vendor="Oracle Corporation">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/sunjavapluginlo.dll</library> - <library vendor="IBM Corporation">vnd.sun.star.expand:$URE_INTERNAL_LIB_DIR/sunjavapluginlo.dll</library> - </plugins> </javaSelection> diff --git a/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx b/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx index 09e0435b0c06..8f5e5a249ffb 100644 --- a/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx +++ b/jvmfwk/plugins/sunmajor/javaenvsetup/javaldx.cxx @@ -95,22 +95,6 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) } } - OUString aVendor( pInfo->sVendor ); - // Only do something if the sunjavaplugin created this JavaInfo - if ( aVendor != "Sun Microsystems Inc." && - aVendor != "Oracle Corporation" && - aVendor != "IBM Corporation" && - aVendor != "Blackdown Java-Linux Team" && - aVendor != "Apple Inc." && - aVendor != "Apple Computer, Inc." && - aVendor != "BEA Systems, Inc." && - aVendor != "Free Software Foundation, Inc." && - aVendor != "The FreeBSD Foundation" ) - { - jfw_freeJavaInfo(pInfo); - return 0; - } - OString sPaths = getLD_LIBRARY_PATH(pInfo->arVendorData); fprintf(stdout, "%s\n", sPaths.getStr()); jfw_freeJavaInfo(pInfo); diff --git a/jvmfwk/source/elements.hxx b/jvmfwk/source/elements.hxx index 17d66fef227f..28abbaef7291 100644 --- a/jvmfwk/source/elements.hxx +++ b/jvmfwk/source/elements.hxx @@ -353,23 +353,6 @@ public: sal_Int32 getExcludeVersionSize(); }; -struct PluginLibrary -{ - PluginLibrary() - { - } - PluginLibrary(const OUString & vendor, const OUString & path) : - sVendor(vendor), sPath(path) - { - } - /** contains the vendor string which is later userd in the xml API - */ - OUString sVendor; - /** File URL the plug-in library - */ - OUString sPath; -}; - } //end namespace #endif diff --git a/jvmfwk/source/framework.cxx b/jvmfwk/source/framework.cxx index 1a32be20919f..cd7d55194d92 100644 --- a/jvmfwk/source/framework.cxx +++ b/jvmfwk/source/framework.cxx @@ -22,7 +22,6 @@ #include "rtl/bootstrap.hxx" #include "osl/thread.hxx" #include "osl/file.hxx" -#include "osl/module.hxx" #include "jvmfwk/framework.h" #include "jvmfwk/vendorplugin.h" #include <cassert> @@ -48,41 +47,6 @@ bool areEqualJavaInfo( } -#ifdef DISABLE_DYNLOADING - -extern "C" -javaPluginError jfw_plugin_getAllJavaInfos( - rtl_uString *sVendor, - rtl_uString *sMinVersion, - rtl_uString *sMaxVersion, - rtl_uString * *arExcludeList, - sal_Int32 nLenList, - JavaInfo*** parJavaInfo, - sal_Int32 *nLenInfoList); - -extern "C" -javaPluginError jfw_plugin_getJavaInfoByPath( - rtl_uString *path, - rtl_uString *sVendor, - rtl_uString *sMinVersion, - rtl_uString *sMaxVersion, - rtl_uString * *arExcludeList, - sal_Int32 nLenList, - JavaInfo ** ppInfo); - -extern "C" -javaPluginError jfw_plugin_startJavaVirtualMachine( - const JavaInfo *pInfo, - const JavaVMOption* arOptions, - sal_Int32 cOptions, - JavaVM ** ppVm, - JNIEnv ** ppEnv); - -extern "C" -javaPluginError jfw_plugin_existJRE(const JavaInfo *pInfo, sal_Bool *exist); - -#endif - javaFrameworkError SAL_CALL jfw_findAllJREs(JavaInfo ***pparInfo, sal_Int32 *pSize) { javaFrameworkError retVal = JFW_E_NONE; @@ -94,16 +58,8 @@ javaFrameworkError SAL_CALL jfw_findAllJREs(JavaInfo ***pparInfo, sal_Int32 *pSi return JFW_E_INVALID_ARG; jfw::VendorSettings aVendorSettings; - //Get a list of plugins which provide Java information - std::vector<jfw::PluginLibrary> vecPlugins = - aVendorSettings.getPluginData(); -#ifndef DISABLE_DYNLOADING - //Create a vector that holds the libraries, which will be later - //dynamically loaded; - boost::scoped_array<osl::Module> sarModules; - sarModules.reset(new osl::Module[vecPlugins.size()]); - osl::Module * arModules = sarModules.get(); -#endif + std::vector<OUString> vecVendors = + aVendorSettings.getSupportedVendors(); //Add the JavaInfos found by jfw_plugin_getAllJavaInfos to the vector //Make sure that the contents are destroyed if this //function returns with an error @@ -119,42 +75,20 @@ javaFrameworkError SAL_CALL jfw_findAllJREs(JavaInfo ***pparInfo, sal_Int32 *pSi const std::vector<OUString>& vecJRELocations = settings.getJRELocations(); //Use every plug-in library to get Java installations. - typedef std::vector<jfw::PluginLibrary>::const_iterator ci_pl; + typedef std::vector<OUString>::const_iterator ci_pl; int cModule = 0; - for (ci_pl i = vecPlugins.begin(); i != vecPlugins.end(); ++i, ++cModule) + for (ci_pl i = vecVendors.begin(); i != vecVendors.end(); ++i, ++cModule) { - const jfw::PluginLibrary & library = *i; + const OUString & vendor = *i; jfw::VersionInfo versionInfo = - aVendorSettings.getVersionInformation(library.sVendor); -#ifndef DISABLE_DYNLOADING - arModules[cModule].load(library.sPath); - osl::Module & pluginLib = arModules[cModule]; - - if (!pluginLib.is()) - { - OString msg = OUStringToOString( - library.sPath, osl_getThreadTextEncoding()); - fprintf(stderr,"[jvmfwk] Could not load plugin %s\n" \ - "Modify the javavendors.xml accordingly!\n", msg.getStr()); - return JFW_E_NO_PLUGIN; - } - jfw_plugin_getAllJavaInfos_ptr getAllJavaFunc = - (jfw_plugin_getAllJavaInfos_ptr) pluginLib.getFunctionSymbol( - OUString("jfw_plugin_getAllJavaInfos")); -#else - jfw_plugin_getAllJavaInfos_ptr getAllJavaFunc = - jfw_plugin_getAllJavaInfos; -#endif - OSL_ASSERT(getAllJavaFunc); - if (getAllJavaFunc == NULL) - return JFW_E_ERROR; + aVendorSettings.getVersionInformation(vendor); //get all installations of one vendor according to minVersion, //maxVersion and excludeVersions sal_Int32 cInfos = 0; JavaInfo** arInfos = NULL; - javaPluginError plerr = (*getAllJavaFunc)( - library.sVendor.pData, + javaPluginError plerr = jfw_plugin_getAllJavaInfos( + vendor.pData, versionInfo.sMinVersion.pData, versionInfo.sMaxVersion.pData, versionInfo.getExcludeVersions(), @@ -173,27 +107,15 @@ javaFrameworkError SAL_CALL jfw_findAllJREs(JavaInfo ***pparInfo, sal_Int32 *pSi //Check if the current plugin can detect JREs at the location // of the paths added by jfw_addJRELocation //get the function from the plugin -#ifndef DISABLE_DYNLOADING - jfw_plugin_getJavaInfoByPath_ptr jfw_plugin_getJavaInfoByPathFunc = - (jfw_plugin_getJavaInfoByPath_ptr) pluginLib.getFunctionSymbol( - OUString("jfw_plugin_getJavaInfoByPath")); - OSL_ASSERT(jfw_plugin_getJavaInfoByPathFunc); - if (jfw_plugin_getJavaInfoByPathFunc == NULL) - return JFW_E_ERROR; -#else - jfw_plugin_getJavaInfoByPath_ptr jfw_plugin_getJavaInfoByPathFunc = - jfw_plugin_getJavaInfoByPath; -#endif - typedef std::vector<OUString>::const_iterator citLoc; //Check every manually added location for (citLoc ii = vecJRELocations.begin(); ii != vecJRELocations.end(); ++ii) { jfw::CJavaInfo aInfo; - plerr = (*jfw_plugin_getJavaInfoByPathFunc)( + plerr = jfw_plugin_getJavaInfoByPath( ii->pData, - library.sVendor.pData, + vendor.pData, versionInfo.sMinVersion.pData, versionInfo.sMaxVersion.pData, versionInfo.getExcludeVersions(), @@ -225,9 +147,9 @@ javaFrameworkError SAL_CALL jfw_findAllJREs(JavaInfo ***pparInfo, sal_Int32 *pSi std::vector<jfw::CJavaInfo> vecInfoManual2; for (it_info ivm = vecInfoManual.begin(); ivm != vecInfoManual.end(); ++ivm) { - for (ci_pl ii = vecPlugins.begin(); ii != vecPlugins.end(); ++ii) + for (ci_pl ii = vecVendors.begin(); ii != vecVendors.end(); ++ii) { - if ( ii->sVendor.equals((*ivm)->sVendor)) + if ( ii->equals((*ivm)->sVendor)) { vecInfoManual2.push_back(*ivm); break; @@ -378,23 +300,6 @@ javaFrameworkError SAL_CALL jfw_startVM( //get the function jfw_plugin_startJavaVirtualMachine jfw::VendorSettings aVendorSettings; - OUString sLibPath = aVendorSettings.getPluginLibrary(pInfo->sVendor); - -#ifndef DISABLE_DYNLOADING - osl::Module modulePlugin(sLibPath); - if ( ! modulePlugin) - return JFW_E_NO_PLUGIN; - - OUString sFunctionName("jfw_plugin_startJavaVirtualMachine"); - jfw_plugin_startJavaVirtualMachine_ptr pFunc = - (jfw_plugin_startJavaVirtualMachine_ptr) - osl_getFunctionSymbol(modulePlugin, sFunctionName.pData); - if (pFunc == NULL) - return JFW_E_ERROR; -#else - jfw_plugin_startJavaVirtualMachine_ptr pFunc = - jfw_plugin_startJavaVirtualMachine; -#endif // create JavaVMOptions array that is passed to the plugin // it contains the classpath and all options set in the @@ -434,7 +339,7 @@ javaFrameworkError SAL_CALL jfw_startVM( //start Java JavaVM *pVm = NULL; SAL_INFO("jfw", "Starting Java"); - javaPluginError plerr = (*pFunc)(pInfo, arOpt, index, & pVm, ppEnv); + javaPluginError plerr = jfw_plugin_startJavaVirtualMachine(pInfo, arOpt, index, & pVm, ppEnv); if (plerr == JFW_PLUGIN_E_VM_CREATION_FAILED) { errcode = JFW_E_VM_CREATION_FAILED; @@ -483,47 +388,24 @@ javaFrameworkError SAL_CALL jfw_findAndSelectJRE(JavaInfo **pInfo) //Get a list of services which provide Java information jfw::VendorSettings aVendorSettings; - std::vector<jfw::PluginLibrary> vecPlugins = - aVendorSettings.getPluginData(); -#ifndef DISABLE_DYNLOADING - //Create a vector that holds the libraries, which will be later - //dynamically loaded; - boost::scoped_array<osl::Module> sarModules; - sarModules.reset(new osl::Module[vecPlugins.size()]); - osl::Module * arModules = sarModules.get(); -#endif - //Use every plug-in library to get Java installations. At the first usable + std::vector<OUString> vecVendors = + aVendorSettings.getSupportedVendors(); + //Use every vendor to get Java installations. At the first usable //Java the loop will break - typedef std::vector<jfw::PluginLibrary>::const_iterator ci_pl; + typedef std::vector<OUString>::const_iterator ci_pl; int cModule = 0; - for (ci_pl i = vecPlugins.begin(); i != vecPlugins.end(); ++i, ++cModule) + for (ci_pl i = vecVendors.begin(); i != vecVendors.end(); ++i, ++cModule) { - const jfw::PluginLibrary & library = *i; + const OUString & vendor = *i; jfw::VersionInfo versionInfo = - aVendorSettings.getVersionInformation(library.sVendor); -#ifndef DISABLE_DYNLOADING - arModules[cModule].load(library.sPath); - osl::Module & pluginLib = arModules[cModule]; - if (!pluginLib.is()) - return JFW_E_NO_PLUGIN; - - jfw_plugin_getAllJavaInfos_ptr getAllJavaFunc = - (jfw_plugin_getAllJavaInfos_ptr) pluginLib.getFunctionSymbol( - OUString("jfw_plugin_getAllJavaInfos")); -#else - jfw_plugin_getAllJavaInfos_ptr getAllJavaFunc = - jfw_plugin_getAllJavaInfos; -#endif - OSL_ASSERT(getAllJavaFunc); - if (getAllJavaFunc == NULL) - continue; + aVendorSettings.getVersionInformation(vendor); //get all installations of one vendor according to minVersion, //maxVersion and excludeVersions sal_Int32 cInfos = 0; JavaInfo** arInfos = NULL; - javaPluginError plerr = (*getAllJavaFunc)( - library.sVendor.pData, + javaPluginError plerr = jfw_plugin_getAllJavaInfos( + vendor.pData, versionInfo.sMinVersion.pData, versionInfo.sMaxVersion.pData, versionInfo.getExcludeVersions(), @@ -581,37 +463,20 @@ javaFrameworkError SAL_CALL jfw_findAndSelectJRE(JavaInfo **pInfo) settings.getJRELocations(); //use every plug-in to determine the JavaInfo objects bool bInfoFound = false; - for (ci_pl i = vecPlugins.begin(); i != vecPlugins.end(); ++i) + for (ci_pl i = vecVendors.begin(); i != vecVendors.end(); ++i) { - const jfw::PluginLibrary & library = *i; + const OUString & vendor = *i; jfw::VersionInfo versionInfo = - aVendorSettings.getVersionInformation(library.sVendor); -#ifndef DISABLE_DYNLOADING - osl::Module pluginLib(library.sPath); - if (!pluginLib.is()) - return JFW_E_NO_PLUGIN; - //Check if the current plugin can detect JREs at the location - // of the paths added by jfw_addJRELocation - //get the function from the plugin - jfw_plugin_getJavaInfoByPath_ptr jfw_plugin_getJavaInfoByPathFunc = - (jfw_plugin_getJavaInfoByPath_ptr) pluginLib.getFunctionSymbol( - OUString("jfw_plugin_getJavaInfoByPath")); -#else - jfw_plugin_getJavaInfoByPath_ptr jfw_plugin_getJavaInfoByPathFunc = - jfw_plugin_getJavaInfoByPath; -#endif - OSL_ASSERT(jfw_plugin_getJavaInfoByPathFunc); - if (jfw_plugin_getJavaInfoByPathFunc == NULL) - return JFW_E_ERROR; + aVendorSettings.getVersionInformation(vendor); typedef std::vector<OUString>::const_iterator citLoc; for (citLoc it = vecJRELocations.begin(); it != vecJRELocations.end(); ++it) { jfw::CJavaInfo aInfo; - javaPluginError err = (*jfw_plugin_getJavaInfoByPathFunc)( + javaPluginError err = jfw_plugin_getJavaInfoByPath( it->pData, - library.sVendor.pData, + vendor.pData, versionInfo.sMinVersion.pData, versionInfo.sMaxVersion.pData, versionInfo.getExcludeVersions(), @@ -787,61 +652,27 @@ javaFrameworkError SAL_CALL jfw_getJavaInfoByPath( return JFW_E_INVALID_ARG; jfw::VendorSettings aVendorSettings; - //Get a list of plugins which provide Java information - std::vector<jfw::PluginLibrary> vecPlugins = - aVendorSettings.getPluginData(); -#ifndef DISABLE_DYNLOADING - //Create a vector that holds the libraries, which will be later - //dynamically loaded; - boost::scoped_array<osl::Module> sarModules; - sarModules.reset(new osl::Module[vecPlugins.size()]); - osl::Module * arModules = sarModules.get(); -#endif - typedef std::vector<OUString>::const_iterator CIT_VENDOR; std::vector<OUString> vecVendors = aVendorSettings.getSupportedVendors(); //Use every plug-in library to determine if the path represents a //JRE. If a plugin recognized it then the loop will break - typedef std::vector<jfw::PluginLibrary>::const_iterator ci_pl; + typedef std::vector<OUString>::const_iterator ci_pl; int cModule = 0; - for (ci_pl i = vecPlugins.begin(); i != vecPlugins.end(); + for (ci_pl i = vecVendors.begin(); i != vecVendors.end(); ++i, ++cModule) { - const jfw::PluginLibrary & library = *i; + const OUString & vendor = *i; jfw::VersionInfo versionInfo = - aVendorSettings.getVersionInformation(library.sVendor); - -#ifndef DISABLE_DYNLOADING - arModules[cModule].load(library.sPath); - osl::Module & pluginLib = arModules[cModule]; - if (!pluginLib.is()) - { - OString msg = OUStringToOString( - library.sPath, osl_getThreadTextEncoding()); - fprintf(stderr,"[jvmfwk] Could not load plugin %s\n" \ - "Modify the javavendors.xml accordingly!\n", msg.getStr()); - return JFW_E_NO_PLUGIN; - } - - jfw_plugin_getJavaInfoByPath_ptr jfw_plugin_getJavaInfoByPathFunc = - (jfw_plugin_getJavaInfoByPath_ptr) pluginLib.getFunctionSymbol( - OUString("jfw_plugin_getJavaInfoByPath")); -#else - jfw_plugin_getJavaInfoByPath_ptr jfw_plugin_getJavaInfoByPathFunc = - jfw_plugin_getJavaInfoByPath; -#endif - OSL_ASSERT(jfw_plugin_getJavaInfoByPathFunc); - if (jfw_plugin_getJavaInfoByPathFunc == NULL) - continue; + aVendorSettings.getVersionInformation(vendor); //ask the plugin if this is a JRE. //If so check if it meets the version requirements. //Only if it does return a JavaInfo JavaInfo* pInfo = NULL; - javaPluginError plerr = (*jfw_plugin_getJavaInfoByPathFunc)( + javaPluginError plerr = jfw_plugin_getJavaInfoByPath( pPath, - library.sVendor.pData, + vendor.pData, versionInfo.sMinVersion.pData, versionInfo.sMaxVersion.pData, versionInfo.getExcludeVersions(), @@ -850,29 +681,8 @@ javaFrameworkError SAL_CALL jfw_getJavaInfoByPath( if (plerr == JFW_PLUGIN_E_NONE) { - //check if the vendor of the found JRE is supported - if (vecVendors.empty()) - { - //vendor does not matter - *ppInfo = pInfo; - break; - } - else - { - OUString sVendor(pInfo->sVendor); - CIT_VENDOR ivendor = std::find(vecVendors.begin(), vecVendors.end(), - sVendor); - if (ivendor != vecVendors.end()) - { - *ppInfo = pInfo; - } - else - { - *ppInfo = NULL; - errcode = JFW_E_NOT_RECOGNIZED; - } - break; - } + *ppInfo = pInfo; + break; } else if(plerr == JFW_PLUGIN_E_FAILED_VERSION) {//found JRE but it has the wrong version @@ -1141,22 +951,7 @@ javaFrameworkError jfw_existJRE(const JavaInfo *pInfo, sal_Bool *exist) jfw::VendorSettings aVendorSettings; jfw::CJavaInfo aInfo; aInfo = (const ::JavaInfo*) pInfo; //makes a copy of pInfo -#ifndef DISABLE_DYNLOADING - OUString sLibPath = aVendorSettings.getPluginLibrary(aInfo.getVendor()); - osl::Module modulePlugin(sLibPath); - if ( ! modulePlugin) - return JFW_E_NO_PLUGIN; - OUString sFunctionName("jfw_plugin_existJRE"); - jfw_plugin_existJRE_ptr pFunc = - (jfw_plugin_existJRE_ptr) - osl_getFunctionSymbol(modulePlugin, sFunctionName.pData); - if (pFunc == NULL) - return JFW_E_ERROR; -#else - jfw_plugin_existJRE_ptr pFunc = - jfw_plugin_existJRE; -#endif - javaPluginError plerr = (*pFunc)(pInfo, exist); + javaPluginError plerr = jfw_plugin_existJRE(pInfo, exist); javaFrameworkError ret = JFW_E_NONE; switch (plerr) diff --git a/jvmfwk/source/fwkbase.cxx b/jvmfwk/source/fwkbase.cxx index 3b4fba351a54..84dcbb5d0eca 100644 --- a/jvmfwk/source/fwkbase.cxx +++ b/jvmfwk/source/fwkbase.cxx @@ -118,53 +118,6 @@ VendorSettings::VendorSettings(): } } -std::vector<PluginLibrary> VendorSettings::getPluginData() -{ - OString sExcMsg("[Java framework] Error in function VendorSettings::getVendorPluginURLs " - "(fwkbase.cxx)."); - std::vector<PluginLibrary> vecPlugins; - CXPathObjectPtr result(xmlXPathEvalExpression( - (xmlChar*)"/jf:javaSelection/jf:plugins/jf:library", - m_xmlPathContextVendorSettings)); - if (xmlXPathNodeSetIsEmpty(result->nodesetval)) - throw FrameworkException(JFW_E_ERROR, sExcMsg); - - //get the values of the library elements + vendor attribute - xmlNode* cur = result->nodesetval->nodeTab[0]; - - while (cur != NULL) - { - //between library elements are also text elements - if (cur->type == XML_ELEMENT_NODE) - { - CXmlCharPtr sAttrVendor(xmlGetProp(cur, (xmlChar*) "vendor")); - CXmlCharPtr sTextLibrary( - xmlNodeListGetString(m_xmlDocVendorSettings, - cur->xmlChildrenNode, 1)); - PluginLibrary plugin; - OString osVendor((sal_Char*)(xmlChar*) sAttrVendor); - plugin.sVendor = OStringToOUString(osVendor, RTL_TEXTENCODING_UTF8); - - //create the file URL to the library - OUString sUrl = findPlugin( - m_xmlDocVendorSettingsFileUrl, sTextLibrary); - if (sUrl.isEmpty()) - { - OString sPlugin = OUStringToOString( - sTextLibrary, osl_getThreadTextEncoding()); - throw FrameworkException( - JFW_E_CONFIGURATION, - "[Java framework] The file: " + sPlugin + " does not exist."); - } - plugin.sPath = sUrl; - - vecPlugins.push_back(plugin); - } - cur = cur->next; - } - return vecPlugins; -} - VersionInfo VendorSettings::getVersionInformation(const OUString & sVendor) { OSL_ASSERT(!sVendor.isEmpty()); @@ -250,67 +203,29 @@ VersionInfo VendorSettings::getVersionInformation(const OUString & sVendor) std::vector<OUString> VendorSettings::getSupportedVendors() { std::vector<OUString> vecVendors; - //get the nodeset for the library elements + //get the nodeset for the vendor elements jfw::CXPathObjectPtr result; result = xmlXPathEvalExpression( - (xmlChar*)"/jf:javaSelection/jf:plugins/jf:library", + (xmlChar*)"/jf:javaSelection/jf:vendorInfos/jf:vendor", m_xmlPathContextVendorSettings); - if (xmlXPathNodeSetIsEmpty(result->nodesetval)) - throw FrameworkException( - JFW_E_ERROR, - OString("[Java framework] Error in function getSupportedVendors (fwkbase.cxx).")); - - //get the values of the library elements + vendor attribute - xmlNode* cur = result->nodesetval->nodeTab[0]; - while (cur != NULL) + if (!xmlXPathNodeSetIsEmpty(result->nodesetval)) { - //between library elements are also text elements - if (cur->type == XML_ELEMENT_NODE) + //get the values of the vendor elements + name attribute + xmlNode* cur = result->nodesetval->nodeTab[0]; + while (cur != NULL) { - jfw::CXmlCharPtr sAttrVendor(xmlGetProp(cur, (xmlChar*) "vendor")); - vecVendors.push_back(sAttrVendor); + //between vendor elements are also text elements + if (cur->type == XML_ELEMENT_NODE) + { + jfw::CXmlCharPtr sAttrVendor(xmlGetProp(cur, (xmlChar*) "name")); + vecVendors.push_back(sAttrVendor); + } + cur = cur->next; } - cur = cur->next; } return vecVendors; } -OUString VendorSettings::getPluginLibrary(const OUString& sVendor) -{ - OSL_ASSERT(!sVendor.isEmpty()); - - OString sExcMsg("[Java framework] Error in function getPluginLibrary (fwkbase.cxx)."); - OUStringBuffer usBuffer(256); - usBuffer.appendAscii("/jf:javaSelection/jf:plugins/jf:library[@vendor=\""); - usBuffer.append(sVendor); - usBuffer.appendAscii("\"]/text()"); - OUString ouExpr = usBuffer.makeStringAndClear(); - OString sExpression = - OUStringToOString(ouExpr, osl_getThreadTextEncoding()); - CXPathObjectPtr pathObjVendor; - pathObjVendor = xmlXPathEvalExpression( - (xmlChar*) sExpression.getStr(), m_xmlPathContextVendorSettings); - if (xmlXPathNodeSetIsEmpty(pathObjVendor->nodesetval)) - throw FrameworkException(JFW_E_ERROR, sExcMsg); - - CXmlCharPtr xmlCharPlugin; - xmlCharPlugin = - xmlNodeListGetString( - m_xmlDocVendorSettings,pathObjVendor->nodesetval->nodeTab[0], 1); - - //make an absolute file url from the relative plugin URL - OUString sUrl = findPlugin(m_xmlDocVendorSettingsFileUrl, xmlCharPlugin); - if (sUrl.isEmpty()) - { - OString sPlugin = OUStringToOString( - xmlCharPlugin, osl_getThreadTextEncoding()); - throw FrameworkException( - JFW_E_CONFIGURATION, - "[Java framework] The file: " + sPlugin + " does not exist."); - } - return sUrl; -} - ::std::vector<OString> BootParams::getVMParameters() { ::std::vector<OString> vecParams; diff --git a/jvmfwk/source/fwkbase.hxx b/jvmfwk/source/fwkbase.hxx index 89e7b570af03..a8efc2a119ea 100644 --- a/jvmfwk/source/fwkbase.hxx +++ b/jvmfwk/source/fwkbase.hxx @@ -34,19 +34,6 @@ class VendorSettings public: VendorSettings(); - /** Gets all plugin library URLs with the corresponding vendor name. - - It uses the /javaSelection/plugins/library element from the javavendors.xml - to locate the library. - Is is verified that the plug-in exist. If a plug-in does not exist then an - exception is thrown containing the error JFW_E_CONFIGURATION - */ - ::std::vector<PluginLibrary> getPluginData(); - - /* returns the file URL to the plugin. - */ - OUString getPluginLibrary(const OUString& sVendor); - VersionInfo getVersionInformation(const OUString & sVendor); ::std::vector< OUString> getSupportedVendors(); |