summaryrefslogtreecommitdiff
path: root/embeddedobj
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2020-07-21 16:09:47 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-07-22 08:29:47 +0200
commit00c7afecc319061b70b77a709ca2ae9583df4145 (patch)
treedd8fd6cd708d895d376f68f52ac9a987a6673d84 /embeddedobj
parent188540e37d33debcf1b89eb08e84547c56e19ba2 (diff)
embeddedobj/util: create instances with uno constructors
See tdf#74608 for motivation. Change-Id: I52734cc1420ae7915da3191cf94ac61287a0983a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99162 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'embeddedobj')
-rw-r--r--embeddedobj/Library_embobj.mk1
-rw-r--r--embeddedobj/source/commonembedding/register.cxx76
-rw-r--r--embeddedobj/source/commonembedding/xfactory.cxx49
-rw-r--r--embeddedobj/source/commonembedding/xfactory.hxx17
-rw-r--r--embeddedobj/source/general/xcreator.cxx37
-rw-r--r--embeddedobj/source/inc/xcreator.hxx9
-rw-r--r--embeddedobj/util/embobj.component11
7 files changed, 37 insertions, 163 deletions
diff --git a/embeddedobj/Library_embobj.mk b/embeddedobj/Library_embobj.mk
index 6e9929e95016..000a710ac0f4 100644
--- a/embeddedobj/Library_embobj.mk
+++ b/embeddedobj/Library_embobj.mk
@@ -42,7 +42,6 @@ $(eval $(call gb_Library_add_exception_objects,embobj,\
embeddedobj/source/commonembedding/inplaceobj \
embeddedobj/source/commonembedding/miscobj \
embeddedobj/source/commonembedding/persistence \
- embeddedobj/source/commonembedding/register \
embeddedobj/source/commonembedding/specialobject \
embeddedobj/source/commonembedding/visobj \
embeddedobj/source/commonembedding/xfactory \
diff --git a/embeddedobj/source/commonembedding/register.cxx b/embeddedobj/source/commonembedding/register.cxx
deleted file mode 100644
index 148fd5ad534f..000000000000
--- a/embeddedobj/source/commonembedding/register.cxx
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * 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/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include <cppuhelper/factory.hxx>
-
-#include "xfactory.hxx"
-#include <xcreator.hxx>
-
-using namespace ::com::sun::star;
-
-
-extern "C" {
-
-SAL_DLLPUBLIC_EXPORT void * embobj_component_getFactory(
- const char * pImplName, void * pServiceManager,
- SAL_UNUSED_PARAMETER void * /*pRegistryKey*/ )
-{
- void * pRet = nullptr;
-
- OUString aImplName( OUString::createFromAscii( pImplName ) );
- uno::Reference< lang::XSingleServiceFactory > xFactory;
-
- if ( pServiceManager )
- {
- if ( aImplName == OOoEmbeddedObjectFactory::impl_staticGetImplementationName() )
- {
- xFactory= ::cppu::createOneInstanceFactory( static_cast< lang::XMultiServiceFactory*>( pServiceManager ),
- OOoEmbeddedObjectFactory::impl_staticGetImplementationName(),
- OOoEmbeddedObjectFactory::impl_staticCreateSelfInstance,
- OOoEmbeddedObjectFactory::impl_staticGetSupportedServiceNames() );
- }
- else if ( aImplName == OOoSpecialEmbeddedObjectFactory::impl_staticGetImplementationName() )
- {
- xFactory= ::cppu::createOneInstanceFactory( static_cast< lang::XMultiServiceFactory*>( pServiceManager ),
- OOoSpecialEmbeddedObjectFactory::impl_staticGetImplementationName(),
- OOoSpecialEmbeddedObjectFactory::impl_staticCreateSelfInstance,
- OOoSpecialEmbeddedObjectFactory::impl_staticGetSupportedServiceNames() );
- }
- else if ( aImplName == UNOEmbeddedObjectCreator::impl_staticGetImplementationName() )
- {
- xFactory= ::cppu::createOneInstanceFactory( static_cast< lang::XMultiServiceFactory*>( pServiceManager ),
- UNOEmbeddedObjectCreator::impl_staticGetImplementationName(),
- UNOEmbeddedObjectCreator::impl_staticCreateSelfInstance,
- UNOEmbeddedObjectCreator::impl_staticGetSupportedServiceNames() );
- }
- }
-
- if ( xFactory.is() )
- {
- xFactory->acquire();
- pRet = xFactory.get();
- }
-
- return pRet;
-}
-
-} // extern "C"
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embeddedobj/source/commonembedding/xfactory.cxx b/embeddedobj/source/commonembedding/xfactory.cxx
index bfd7d548358a..d383567f3e47 100644
--- a/embeddedobj/source/commonembedding/xfactory.cxx
+++ b/embeddedobj/source/commonembedding/xfactory.cxx
@@ -35,21 +35,6 @@
using namespace ::com::sun::star;
-uno::Sequence< OUString > OOoEmbeddedObjectFactory::impl_staticGetSupportedServiceNames()
-{
- return { "com.sun.star.embed.OOoEmbeddedObjectFactory", "com.sun.star.comp.embed.OOoEmbeddedObjectFactory" };
-}
-
-OUString OOoEmbeddedObjectFactory::impl_staticGetImplementationName()
-{
- return "com.sun.star.comp.embed.OOoEmbeddedObjectFactory";
-}
-
-uno::Reference< uno::XInterface > OOoEmbeddedObjectFactory::impl_staticCreateSelfInstance(
- const uno::Reference< lang::XMultiServiceFactory >& xServiceManager )
-{
- return uno::Reference< uno::XInterface >( *new OOoEmbeddedObjectFactory( comphelper::getComponentContext(xServiceManager) ) );
-}
uno::Reference< uno::XInterface > SAL_CALL OOoEmbeddedObjectFactory::createInstanceInitFromEntry(
const uno::Reference< embed::XStorage >& xStorage,
@@ -367,7 +352,7 @@ uno::Reference< uno::XInterface > SAL_CALL OOoEmbeddedObjectFactory::createInsta
OUString SAL_CALL OOoEmbeddedObjectFactory::getImplementationName()
{
- return impl_staticGetImplementationName();
+ return "com.sun.star.comp.embed.OOoEmbeddedObjectFactory";
}
sal_Bool SAL_CALL OOoEmbeddedObjectFactory::supportsService( const OUString& ServiceName )
@@ -377,24 +362,18 @@ sal_Bool SAL_CALL OOoEmbeddedObjectFactory::supportsService( const OUString& Ser
uno::Sequence< OUString > SAL_CALL OOoEmbeddedObjectFactory::getSupportedServiceNames()
{
- return impl_staticGetSupportedServiceNames();
-}
-
-uno::Sequence< OUString > OOoSpecialEmbeddedObjectFactory::impl_staticGetSupportedServiceNames()
-{
- return { "com.sun.star.embed.OOoSpecialEmbeddedObjectFactory", "com.sun.star.comp.embed.OOoSpecialEmbeddedObjectFactory" };
+ return { "com.sun.star.embed.OOoEmbeddedObjectFactory", "com.sun.star.comp.embed.OOoEmbeddedObjectFactory" };
}
-OUString OOoSpecialEmbeddedObjectFactory::impl_staticGetImplementationName()
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+embeddedobj_OOoEmbeddedObjectFactory_get_implementation(
+ css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> const&)
{
- return "com.sun.star.comp.embed.OOoSpecialEmbeddedObjectFactory";
+ static rtl::Reference<OOoEmbeddedObjectFactory> g_Instance(new OOoEmbeddedObjectFactory(context));
+ g_Instance->acquire();
+ return static_cast<cppu::OWeakObject*>(g_Instance.get());
}
-uno::Reference< uno::XInterface > OOoSpecialEmbeddedObjectFactory::impl_staticCreateSelfInstance(
- const uno::Reference< lang::XMultiServiceFactory >& xServiceManager )
-{
- return uno::Reference< uno::XInterface >( *new OOoSpecialEmbeddedObjectFactory( comphelper::getComponentContext(xServiceManager) ) );
-}
uno::Reference< uno::XInterface > SAL_CALL OOoSpecialEmbeddedObjectFactory::createInstanceUserInit(
const uno::Sequence< sal_Int8 >& aClassID,
@@ -419,7 +398,7 @@ uno::Reference< uno::XInterface > SAL_CALL OOoSpecialEmbeddedObjectFactory::crea
OUString SAL_CALL OOoSpecialEmbeddedObjectFactory::getImplementationName()
{
- return impl_staticGetImplementationName();
+ return "com.sun.star.comp.embed.OOoSpecialEmbeddedObjectFactory";
}
sal_Bool SAL_CALL OOoSpecialEmbeddedObjectFactory::supportsService( const OUString& ServiceName )
@@ -429,7 +408,15 @@ sal_Bool SAL_CALL OOoSpecialEmbeddedObjectFactory::supportsService( const OUStri
uno::Sequence< OUString > SAL_CALL OOoSpecialEmbeddedObjectFactory::getSupportedServiceNames()
{
- return impl_staticGetSupportedServiceNames();
+ return { "com.sun.star.embed.OOoSpecialEmbeddedObjectFactory", "com.sun.star.comp.embed.OOoSpecialEmbeddedObjectFactory" };
}
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+embeddedobj_OOoSpecialEmbeddedObjectFactory_get_implementation(
+ css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> const&)
+{
+ static rtl::Reference<OOoSpecialEmbeddedObjectFactory> g_Instance(new OOoSpecialEmbeddedObjectFactory(context));
+ g_Instance->acquire();
+ return static_cast<cppu::OWeakObject*>(g_Instance.get());
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embeddedobj/source/commonembedding/xfactory.hxx b/embeddedobj/source/commonembedding/xfactory.hxx
index 48bef30ea79d..87ff4886a20c 100644
--- a/embeddedobj/source/commonembedding/xfactory.hxx
+++ b/embeddedobj/source/commonembedding/xfactory.hxx
@@ -45,15 +45,6 @@ public:
OSL_ENSURE( rxContext.is(), "No service manager is provided!" );
}
- static css::uno::Sequence< OUString > impl_staticGetSupportedServiceNames();
-
- static OUString impl_staticGetImplementationName();
-
- static css::uno::Reference< css::uno::XInterface >
- impl_staticCreateSelfInstance(
- const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceManager );
-
-
// XEmbedObjectCreator
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceInitNew( const css::uno::Sequence< sal_Int8 >& aClassID, const OUString& aClassName, const css::uno::Reference< css::embed::XStorage >& xStorage, const OUString& sEntName, const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs ) override;
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceInitFromEntry( const css::uno::Reference< css::embed::XStorage >& xStorage, const OUString& sEntName, const css::uno::Sequence< css::beans::PropertyValue >& aMediaDescr, const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs ) override;
@@ -92,14 +83,6 @@ public:
OSL_ENSURE( rxContext.is(), "No service manager is provided!" );
}
- static css::uno::Sequence< OUString > impl_staticGetSupportedServiceNames();
-
- static OUString impl_staticGetImplementationName();
-
- static css::uno::Reference< css::uno::XInterface >
- impl_staticCreateSelfInstance(
- const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceManager );
-
// XEmbedObjectFactory
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceUserInit( const css::uno::Sequence< sal_Int8 >& aClassID, const OUString& aClassName, const css::uno::Reference< css::embed::XStorage >& xStorage, const OUString& sEntName, sal_Int32 nEntryConnectionMode, const css::uno::Sequence< css::beans::PropertyValue >& lArguments, const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs ) override;
diff --git a/embeddedobj/source/general/xcreator.cxx b/embeddedobj/source/general/xcreator.cxx
index 0cdc67bebbd7..a186ad20a06f 100644
--- a/embeddedobj/source/general/xcreator.cxx
+++ b/embeddedobj/source/general/xcreator.cxx
@@ -31,6 +31,7 @@
#include <cppuhelper/supportsservice.hxx>
#include <comphelper/documentconstants.hxx>
#include <officecfg/Office/Common.hxx>
+#include <rtl/ref.hxx>
#include <xcreator.hxx>
#include <dummyobject.hxx>
@@ -38,29 +39,6 @@
using namespace ::com::sun::star;
-
-uno::Sequence< OUString > UNOEmbeddedObjectCreator::impl_staticGetSupportedServiceNames()
-{
- uno::Sequence< OUString > aRet(2);
- aRet[0] = "com.sun.star.embed.EmbeddedObjectCreator";
- aRet[1] = "com.sun.star.comp.embed.EmbeddedObjectCreator";
- return aRet;
-}
-
-
-OUString UNOEmbeddedObjectCreator::impl_staticGetImplementationName()
-{
- return "com.sun.star.comp.embed.EmbeddedObjectCreator";
-}
-
-
-uno::Reference< uno::XInterface > UNOEmbeddedObjectCreator::impl_staticCreateSelfInstance(
- const uno::Reference< lang::XMultiServiceFactory >& xServiceManager )
-{
- return uno::Reference< uno::XInterface >( *new UNOEmbeddedObjectCreator( comphelper::getComponentContext(xServiceManager) ) );
-}
-
-
uno::Reference< uno::XInterface > SAL_CALL UNOEmbeddedObjectCreator::createInstanceInitNew(
const uno::Sequence< sal_Int8 >& aClassID,
const OUString& aClassName,
@@ -416,7 +394,7 @@ uno::Reference< uno::XInterface > SAL_CALL UNOEmbeddedObjectCreator::createInsta
OUString SAL_CALL UNOEmbeddedObjectCreator::getImplementationName()
{
- return impl_staticGetImplementationName();
+ return "com.sun.star.comp.embed.EmbeddedObjectCreator";
}
sal_Bool SAL_CALL UNOEmbeddedObjectCreator::supportsService( const OUString& ServiceName )
@@ -426,7 +404,16 @@ sal_Bool SAL_CALL UNOEmbeddedObjectCreator::supportsService( const OUString& Ser
uno::Sequence< OUString > SAL_CALL UNOEmbeddedObjectCreator::getSupportedServiceNames()
{
- return impl_staticGetSupportedServiceNames();
+ return { "com.sun.star.embed.EmbeddedObjectCreator", "com.sun.star.comp.embed.EmbeddedObjectCreator" };
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+embeddedobj_UNOEmbeddedObjectCreator_get_implementation(
+ css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> const&)
+{
+ static rtl::Reference<UNOEmbeddedObjectCreator> g_Instance(new UNOEmbeddedObjectCreator(context));
+ g_Instance->acquire();
+ return static_cast<cppu::OWeakObject*>(g_Instance.get());
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embeddedobj/source/inc/xcreator.hxx b/embeddedobj/source/inc/xcreator.hxx
index 3c0118fde37f..6ed5726a5668 100644
--- a/embeddedobj/source/inc/xcreator.hxx
+++ b/embeddedobj/source/inc/xcreator.hxx
@@ -43,15 +43,6 @@ public:
OSL_ENSURE( rxContext.is(), "No service manager is provided!" );
}
- static css::uno::Sequence< OUString > impl_staticGetSupportedServiceNames();
-
- static OUString impl_staticGetImplementationName();
-
- static css::uno::Reference< css::uno::XInterface >
- impl_staticCreateSelfInstance(
- const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceManager );
-
-
// XEmbedObjectCreator
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceInitNew( const css::uno::Sequence< sal_Int8 >& aClassID, const OUString& aClassName, const css::uno::Reference< css::embed::XStorage >& xStorage, const OUString& sEntName, const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs ) override;
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceInitFromEntry( const css::uno::Reference< css::embed::XStorage >& xStorage, const OUString& sEntName, const css::uno::Sequence< css::beans::PropertyValue >& aMedDescr, const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs ) override;
diff --git a/embeddedobj/util/embobj.component b/embeddedobj/util/embobj.component
index 454dc44ab532..e3cbe3a5fa79 100644
--- a/embeddedobj/util/embobj.component
+++ b/embeddedobj/util/embobj.component
@@ -18,16 +18,19 @@
-->
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
- prefix="embobj" xmlns="http://openoffice.org/2010/uno-components">
- <implementation name="com.sun.star.comp.embed.EmbeddedObjectCreator">
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.embed.EmbeddedObjectCreator"
+ constructor="embeddedobj_UNOEmbeddedObjectCreator_get_implementation">
<service name="com.sun.star.comp.embed.EmbeddedObjectCreator"/>
<service name="com.sun.star.embed.EmbeddedObjectCreator"/>
</implementation>
- <implementation name="com.sun.star.comp.embed.OOoEmbeddedObjectFactory">
+ <implementation name="com.sun.star.comp.embed.OOoEmbeddedObjectFactory"
+ constructor="embeddedobj_OOoEmbeddedObjectFactory_get_implementation">
<service name="com.sun.star.comp.embed.OOoEmbeddedObjectFactory"/>
<service name="com.sun.star.embed.OOoEmbeddedObjectFactory"/>
</implementation>
- <implementation name="com.sun.star.comp.embed.OOoSpecialEmbeddedObjectFactory">
+ <implementation name="com.sun.star.comp.embed.OOoSpecialEmbeddedObjectFactory"
+ constructor="embeddedobj_OOoSpecialEmbeddedObjectFactory_get_implementation">
<service name="com.sun.star.comp.embed.OOoSpecialEmbeddedObjectFactory"/>
<service name="com.sun.star.embed.OOoSpecialEmbeddedObjectFactory"/>
</implementation>