summaryrefslogtreecommitdiff
path: root/ucb
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2020-09-30 22:21:49 +0200
committerStephan Bergmann <sbergman@redhat.com>2020-10-01 09:47:05 +0200
commit5204be412e0e0fc138b82f886b83d5b8e0e77dd2 (patch)
tree9dce258e2e0be50a03e6d81811a76beb08347c69 /ucb
parent8e126adb49f47e4b94841c1dcb4628a8c64d597b (diff)
Use the new single-instance="true" attribute in ucb
It looks like 3d44c6a49b20415616dab7a2de2820da5efab309 "ucb/core: create instances with uno constructors" mixed up com.sun.star.comp.ucb.UcbPropertiesManager (which had originally been implemented with the single-instance cppu::createOneInstanceFactory) and com.sun.star.comp.ucb.SimpleFileAccess (which had originally been implemented with the multi-instance cppu::createSingleFactory), using a static g_Instance in the C++ constructor function of the former but adding a fake <singleton> to the *.component <implementation> of the latter. Change-Id: Ida7cb242a73fbe7689094e239ffe0c0291cf1d3c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103738 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'ucb')
-rw-r--r--ucb/source/core/cmdenv.cxx21
-rw-r--r--ucb/source/core/cmdenv.hxx3
-rw-r--r--ucb/source/core/provprox.cxx20
-rw-r--r--ucb/source/core/provprox.hxx3
-rw-r--r--ucb/source/core/ucb.cxx14
-rw-r--r--ucb/source/core/ucb1.component20
-rw-r--r--ucb/source/core/ucbprops.cxx6
-rw-r--r--ucb/source/core/ucbstore.cxx18
-rw-r--r--ucb/source/core/ucbstore.hxx3
9 files changed, 16 insertions, 92 deletions
diff --git a/ucb/source/core/cmdenv.cxx b/ucb/source/core/cmdenv.cxx
index 66216895bfe5..a768032f228d 100644
--- a/ucb/source/core/cmdenv.cxx
+++ b/ucb/source/core/cmdenv.cxx
@@ -20,8 +20,8 @@
#include <cppuhelper/factory.hxx>
#include <cppuhelper/supportsservice.hxx>
+#include <cppuhelper/weak.hxx>
#include <com/sun/star/lang/IllegalArgumentException.hpp>
-#include <rtl/ref.hxx>
#include "cmdenv.hxx"
@@ -33,10 +33,6 @@
using namespace com::sun::star;
using namespace ucb_cmdenv;
-static osl::Mutex g_InstanceGuard;
-static rtl::Reference<UcbCommandEnvironment> g_Instance;
-
-
// UcbCommandEnvironment Implementation.
@@ -50,15 +46,6 @@ UcbCommandEnvironment::~UcbCommandEnvironment()
{
}
-// XComponent
-void SAL_CALL UcbCommandEnvironment::dispose()
-{
- UcbCommandEnvironment_Base::dispose();
- osl::MutexGuard aGuard(g_InstanceGuard);
- g_Instance.clear();
-}
-
-
// XInitialization methods.
@@ -124,11 +111,7 @@ extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
ucb_UcbCommandEnvironment_get_implementation(
css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any> const&)
{
- osl::MutexGuard aGuard(g_InstanceGuard);
- if (!g_Instance)
- g_Instance.set(new UcbCommandEnvironment());
- g_Instance->acquire();
- return static_cast<cppu::OWeakObject*>(g_Instance.get());
+ return cppu::acquire(static_cast<cppu::OWeakObject*>(new UcbCommandEnvironment()));
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/ucb/source/core/cmdenv.hxx b/ucb/source/core/cmdenv.hxx
index c11401039f0a..7ed048ff304b 100644
--- a/ucb/source/core/cmdenv.hxx
+++ b/ucb/source/core/cmdenv.hxx
@@ -44,9 +44,6 @@ public:
explicit UcbCommandEnvironment();
virtual ~UcbCommandEnvironment() override;
- // XComponent
- virtual void SAL_CALL dispose() override;
-
// XInitialization
virtual void SAL_CALL
initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
diff --git a/ucb/source/core/provprox.cxx b/ucb/source/core/provprox.cxx
index d0d9cccbe1ef..2352aebf8e9a 100644
--- a/ucb/source/core/provprox.cxx
+++ b/ucb/source/core/provprox.cxx
@@ -25,16 +25,13 @@
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/ucb/IllegalIdentifierException.hpp>
#include <cppuhelper/queryinterface.hxx>
+#include <cppuhelper/weak.hxx>
#include <ucbhelper/macros.hxx>
-#include <rtl/ref.hxx>
using namespace com::sun::star::lang;
using namespace com::sun::star::ucb;
using namespace com::sun::star::uno;
-static osl::Mutex g_InstanceGuard;
-static rtl::Reference<UcbContentProviderProxyFactory> g_Instance;
-
// UcbContentProviderProxyFactory Implementation.
@@ -50,14 +47,6 @@ UcbContentProviderProxyFactory::~UcbContentProviderProxyFactory()
{
}
-// XComponent
-void SAL_CALL UcbContentProviderProxyFactory::dispose()
-{
- UcbContentProviderProxyFactory_Base::dispose();
- osl::MutexGuard aGuard(g_InstanceGuard);
- g_Instance.clear();
-}
-
// XServiceInfo methods.
OUString SAL_CALL UcbContentProviderProxyFactory::getImplementationName()
@@ -80,11 +69,8 @@ extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
ucb_UcbContentProviderProxyFactory_get_implementation(
css::uno::XComponentContext* context , css::uno::Sequence<css::uno::Any> const&)
{
- osl::MutexGuard aGuard(g_InstanceGuard);
- if (!g_Instance)
- g_Instance.set(new UcbContentProviderProxyFactory(context));
- g_Instance->acquire();
- return static_cast<cppu::OWeakObject*>(g_Instance.get());
+ return cppu::acquire(
+ static_cast<cppu::OWeakObject*>(new UcbContentProviderProxyFactory(context)));
}
diff --git a/ucb/source/core/provprox.hxx b/ucb/source/core/provprox.hxx
index 0e607abafe94..ef08fefebac5 100644
--- a/ucb/source/core/provprox.hxx
+++ b/ucb/source/core/provprox.hxx
@@ -48,9 +48,6 @@ public:
const css::uno::Reference< css::uno::XComponentContext >& rxContext );
virtual ~UcbContentProviderProxyFactory() override;
- // XComponent
- virtual void SAL_CALL dispose() override;
-
// XServiceInfo
virtual OUString SAL_CALL getImplementationName() override;
virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
diff --git a/ucb/source/core/ucb.cxx b/ucb/source/core/ucb.cxx
index 304e37c37728..64f74ec26d00 100644
--- a/ucb/source/core/ucb.cxx
+++ b/ucb/source/core/ucb.cxx
@@ -39,9 +39,9 @@
#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/uno/Any.hxx>
+#include <cppuhelper/weak.hxx>
#include <ucbhelper/cancelcommandexecution.hxx>
#include <ucbhelper/macros.hxx>
-#include <rtl/ref.hxx>
#include "identify.hxx"
#include "ucbcmds.hxx"
@@ -55,9 +55,6 @@ using namespace ucb_impl;
using namespace com::sun::star;
using namespace ucbhelper;
-static osl::Mutex g_InstanceGuard;
-static rtl::Reference<UniversalContentBroker> g_Instance;
-
namespace {
bool fillPlaceholders(OUString const & rInput,
@@ -254,9 +251,6 @@ void SAL_CALL UniversalContentBroker::dispose()
if ( m_xNotifier.is() )
m_xNotifier->removeChangesListener( this );
-
- osl::MutexGuard aGuard(g_InstanceGuard);
- g_Instance.clear();
}
@@ -302,11 +296,7 @@ extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
ucb_UniversalContentBroker_get_implementation(
css::uno::XComponentContext* context , css::uno::Sequence<css::uno::Any> const&)
{
- osl::MutexGuard aGuard(g_InstanceGuard);
- if (!g_Instance)
- g_Instance.set(new UniversalContentBroker(context));
- g_Instance->acquire();
- return static_cast<cppu::OWeakObject*>(g_Instance.get());
+ return cppu::acquire(static_cast<cppu::OWeakObject*>(new UniversalContentBroker(context)));
}
diff --git a/ucb/source/core/ucb1.component b/ucb/source/core/ucb1.component
index 7cfb35264e11..952d37406be7 100644
--- a/ucb/source/core/ucb1.component
+++ b/ucb/source/core/ucb1.component
@@ -20,37 +20,27 @@
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
xmlns="http://openoffice.org/2010/uno-components">
<implementation name="com.sun.star.comp.ucb.CommandEnvironment"
- constructor="ucb_UcbCommandEnvironment_get_implementation">
- <!-- fake singleton so the servicemanager shuts us down and we can clean up our global instance var -->
- <singleton name="com.sun.star.comp.ucb.theCommandEnvironment"/>
+ constructor="ucb_UcbCommandEnvironment_get_implementation" single-instance="true">
<service name="com.sun.star.ucb.CommandEnvironment"/>
</implementation>
<implementation name="com.sun.star.comp.ucb.UcbContentProviderProxyFactory"
- constructor="ucb_UcbContentProviderProxyFactory_get_implementation">
- <!-- fake singleton so the servicemanager shuts us down and we can clean up our global instance var -->
- <singleton name="com.sun.star.comp.ucb.theUcbContentProviderProxyFactory"/>
+ constructor="ucb_UcbContentProviderProxyFactory_get_implementation" single-instance="true">
<service name="com.sun.star.ucb.ContentProviderProxyFactory"/>
</implementation>
<implementation name="com.sun.star.comp.ucb.UcbPropertiesManager"
- constructor="ucb_UcbPropertiesManager_get_implementation">
+ constructor="ucb_UcbPropertiesManager_get_implementation" single-instance="true">
<service name="com.sun.star.ucb.PropertiesManager"/>
</implementation>
<implementation name="com.sun.star.comp.ucb.UcbStore"
- constructor="ucb_UcbStore_get_implementation">
- <!-- fake singleton so the servicemanager shuts us down and we can clean up our global instance var -->
- <singleton name="com.sun.star.comp.ucb.theUcbStore"/>
+ constructor="ucb_UcbStore_get_implementation" single-instance="true">
<service name="com.sun.star.ucb.Store"/>
</implementation>
<implementation name="com.sun.star.comp.ucb.UniversalContentBroker"
- constructor="ucb_UniversalContentBroker_get_implementation">
- <!-- fake singleton so the servicemanager shuts us down and we can clean up our global instance var -->
- <singleton name="com.sun.star.comp.ucb.theUniversalContentBroker"/>
+ constructor="ucb_UniversalContentBroker_get_implementation" single-instance="true">
<service name="com.sun.star.ucb.UniversalContentBroker"/>
</implementation>
<implementation name="com.sun.star.comp.ucb.SimpleFileAccess"
constructor="ucb_OFileAccess_get_implementation">
- <!-- fake singleton so the servicemanager shuts us down and we can clean up our global instance var -->
- <singleton name="com.sun.star.comp.ucb.theSimpleFileAccess"/>
<service name="com.sun.star.ucb.SimpleFileAccess"/>
</implementation>
</component>
diff --git a/ucb/source/core/ucbprops.cxx b/ucb/source/core/ucbprops.cxx
index fe64bfad6cfe..95d9d90e6c36 100644
--- a/ucb/source/core/ucbprops.cxx
+++ b/ucb/source/core/ucbprops.cxx
@@ -34,8 +34,8 @@
#include <com/sun/star/ucb/SynchronizePolicy.hpp>
#include <com/sun/star/ucb/VerificationMode.hpp>
#include <com/sun/star/ucb/XDataContainer.hpp>
+#include <cppuhelper/weak.hxx>
#include <ucbhelper/macros.hxx>
-#include <rtl/ref.hxx>
#include "ucbprops.hxx"
@@ -216,9 +216,7 @@ extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
ucb_UcbPropertiesManager_get_implementation(
css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any> const&)
{
- static rtl::Reference<UcbPropertiesManager> g_Instance(new UcbPropertiesManager());
- g_Instance->acquire();
- return static_cast<cppu::OWeakObject*>(g_Instance.get());
+ return cppu::acquire(static_cast<cppu::OWeakObject*>(new UcbPropertiesManager()));
}
// XPropertySetInfo methods.
diff --git a/ucb/source/core/ucbstore.cxx b/ucb/source/core/ucbstore.cxx
index 617207efd31b..3274c777fdc5 100644
--- a/ucb/source/core/ucbstore.cxx
+++ b/ucb/source/core/ucbstore.cxx
@@ -45,6 +45,7 @@
#include <com/sun/star/util/XChangesBatch.hpp>
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#include <cppuhelper/implbase.hxx>
+#include <cppuhelper/weak.hxx>
#include <ucbhelper/macros.hxx>
#include <tools/diagnose_ex.h>
#include "ucbstore.hxx"
@@ -59,9 +60,6 @@ using namespace com::sun::star::util;
using namespace comphelper;
using namespace cppu;
-static osl::Mutex g_InstanceGuard;
-static rtl::Reference<UcbStore> g_Instance;
-
static OUString makeHierarchalNameSegment( const OUString & rIn )
{
OUStringBuffer aBuffer;
@@ -160,14 +158,6 @@ UcbStore::~UcbStore()
{
}
-// XComponent
-void SAL_CALL UcbStore::dispose()
-{
- UcbStore_Base::dispose();
- osl::MutexGuard aGuard(g_InstanceGuard);
- g_Instance.clear();
-}
-
OUString SAL_CALL UcbStore::getImplementationName()
{
return "com.sun.star.comp.ucb.UcbStore";
@@ -187,11 +177,7 @@ extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
ucb_UcbStore_get_implementation(
css::uno::XComponentContext* context , css::uno::Sequence<css::uno::Any> const&)
{
- osl::MutexGuard aGuard(g_InstanceGuard);
- if (!g_Instance)
- g_Instance.set(new UcbStore(context));
- g_Instance->acquire();
- return static_cast<cppu::OWeakObject*>(g_Instance.get());
+ return cppu::acquire(static_cast<cppu::OWeakObject*>(new UcbStore(context)));
}
diff --git a/ucb/source/core/ucbstore.hxx b/ucb/source/core/ucbstore.hxx
index 3c0cdef87649..310f8bc97337 100644
--- a/ucb/source/core/ucbstore.hxx
+++ b/ucb/source/core/ucbstore.hxx
@@ -55,9 +55,6 @@ public:
explicit UcbStore( const css::uno::Reference< css::uno::XComponentContext >& xContext );
virtual ~UcbStore() override;
- // XComponent
- virtual void SAL_CALL dispose() override;
-
// XServiceInfo
virtual OUString SAL_CALL getImplementationName() override;
virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;