summaryrefslogtreecommitdiff
path: root/stoc
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2020-07-13 22:15:36 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-07-15 08:47:22 +0200
commit37f5ad41ed9928a4394b80050cdc00fd6d830a07 (patch)
treeecb92ded9ff8ef906b5629526d513687505def58 /stoc
parent82c64c311973a62c0e9bd2fee47c69921182b86e (diff)
stoc/javaloader: create instances with uno constructors
See tdf#74608 for motivation. Change-Id: Ic1ce8431bfb116c1e64116e2019fa0d3bcf8344c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98698 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'stoc')
-rw-r--r--stoc/source/javaloader/javaloader.component5
-rw-r--r--stoc/source/javaloader/javaloader.cxx53
2 files changed, 11 insertions, 47 deletions
diff --git a/stoc/source/javaloader/javaloader.component b/stoc/source/javaloader/javaloader.component
index 9299097c4fd0..cc4ae610bdb2 100644
--- a/stoc/source/javaloader/javaloader.component
+++ b/stoc/source/javaloader/javaloader.component
@@ -18,8 +18,9 @@
-->
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
- prefix="javaloader" xmlns="http://openoffice.org/2010/uno-components">
- <implementation name="com.sun.star.comp.stoc.JavaComponentLoader">
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.stoc.JavaComponentLoader"
+ constructor="stoc_JavaComponentLoader_get_implementation">
<service name="com.sun.star.loader.Java"/>
<service name="com.sun.star.loader.Java2"/>
</implementation>
diff --git a/stoc/source/javaloader/javaloader.cxx b/stoc/source/javaloader/javaloader.cxx
index 191703b103c0..2b40cdd219db 100644
--- a/stoc/source/javaloader/javaloader.cxx
+++ b/stoc/source/javaloader/javaloader.cxx
@@ -64,18 +64,6 @@ using namespace ::osl;
namespace stoc_javaloader {
-static Mutex & getInitMutex();
-
-static Sequence< OUString > loader_getSupportedServiceNames()
-{
- return { "com.sun.star.loader.Java", "com.sun.star.loader.Java2" };
-}
-
-static OUString loader_getImplementationName()
-{
- return "com.sun.star.comp.stoc.JavaComponentLoader";
-}
-
namespace {
class JavaComponentLoader : public WeakImplHelper<XImplementationLoader, XServiceInfo>
@@ -117,7 +105,8 @@ public:
const css::uno::Reference<XImplementationLoader> & JavaComponentLoader::getJavaLoader()
{
- MutexGuard aGuard(getInitMutex());
+ static Mutex ourMutex;
+ MutexGuard aGuard(ourMutex);
if (m_javaLoader.is())
return m_javaLoader;
@@ -290,7 +279,7 @@ JavaComponentLoader::JavaComponentLoader(const css::uno::Reference<XComponentCon
// XServiceInfo
OUString SAL_CALL JavaComponentLoader::getImplementationName()
{
- return loader_getImplementationName();
+ return "com.sun.star.comp.stoc.JavaComponentLoader";
}
sal_Bool SAL_CALL JavaComponentLoader::supportsService(const OUString & ServiceName)
@@ -300,7 +289,7 @@ sal_Bool SAL_CALL JavaComponentLoader::supportsService(const OUString & ServiceN
Sequence<OUString> SAL_CALL JavaComponentLoader::getSupportedServiceNames()
{
- return loader_getSupportedServiceNames();
+ return { "com.sun.star.loader.Java", "com.sun.star.loader.Java2" };
}
@@ -326,18 +315,12 @@ css::uno::Reference<XInterface> SAL_CALL JavaComponentLoader::activate(
return loader->activate(rImplName, blabla, rLibName, xKey);
}
-static Mutex & getInitMutex()
-{
- static Mutex ourMutex;
-
- return ourMutex;
-}
-
-/// @throws Exception
-static css::uno::Reference<XInterface> JavaComponentLoader_CreateInstance(const css::uno::Reference<XComponentContext> & xCtx)
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+stoc_JavaComponentLoader_get_implementation(
+ css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> const&)
{
try {
- return *new JavaComponentLoader(xCtx);
+ return cppu::acquire(new JavaComponentLoader(context));
}
catch(const RuntimeException &) {
TOOLS_INFO_EXCEPTION("stoc", "could not init javaloader");
@@ -348,25 +331,5 @@ static css::uno::Reference<XInterface> JavaComponentLoader_CreateInstance(const
} //end namespace
-using namespace stoc_javaloader;
-
-const struct ImplementationEntry g_entries[] =
-{
- {
- JavaComponentLoader_CreateInstance, loader_getImplementationName,
- loader_getSupportedServiceNames, createOneInstanceComponentFactory,
- nullptr , 0
- },
- { nullptr, nullptr, nullptr, nullptr, nullptr, 0 }
-};
-
-extern "C"
-{
-SAL_DLLPUBLIC_EXPORT void * javaloader_component_getFactory(
- const char * pImplName, void * pServiceManager, void * pRegistryKey )
-{
- return component_getFactoryHelper( pImplName, pServiceManager, pRegistryKey , g_entries );
-}
-}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */