summaryrefslogtreecommitdiff
path: root/ucb
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2020-07-16 10:10:03 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-07-16 13:15:25 +0200
commita48ab89fe259d385f20a14f62c9cd9bc7b5b36e9 (patch)
tree06128b0a3deb5ff72cde081dc230eeb5b427201c /ucb
parent837879ec7b1f3cdfee2b7af4ec44885db0d115e6 (diff)
ucb/hierarchy: create instances with uno constructors
See tdf#74608 for motivation. Change-Id: I6c57cf814af386bfb2c2c035d32175c4ff9ef7a4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98874 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'ucb')
-rw-r--r--ucb/Library_ucphier1.mk1
-rw-r--r--ucb/source/ucp/hierarchy/hierarchydatasource.cxx33
-rw-r--r--ucb/source/ucp/hierarchy/hierarchydatasource.hxx6
-rw-r--r--ucb/source/ucp/hierarchy/hierarchyprovider.cxx36
-rw-r--r--ucb/source/ucp/hierarchy/hierarchyprovider.hxx7
-rw-r--r--ucb/source/ucp/hierarchy/hierarchyservices.cxx69
-rw-r--r--ucb/source/ucp/hierarchy/ucphier1.component8
7 files changed, 33 insertions, 127 deletions
diff --git a/ucb/Library_ucphier1.mk b/ucb/Library_ucphier1.mk
index 5e4c6d68c52b..27406f7a9b3c 100644
--- a/ucb/Library_ucphier1.mk
+++ b/ucb/Library_ucphier1.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Library_add_exception_objects,ucphier1,\
ucb/source/ucp/hierarchy/hierarchydatasource \
ucb/source/ucp/hierarchy/hierarchydatasupplier \
ucb/source/ucp/hierarchy/hierarchyprovider \
- ucb/source/ucp/hierarchy/hierarchyservices \
ucb/source/ucp/hierarchy/hierarchyuri \
))
diff --git a/ucb/source/ucp/hierarchy/hierarchydatasource.cxx b/ucb/source/ucp/hierarchy/hierarchydatasource.cxx
index c3e9340b57ac..e082994b0105 100644
--- a/ucb/source/ucp/hierarchy/hierarchydatasource.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchydatasource.cxx
@@ -40,6 +40,7 @@
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#include <ucbhelper/getcomponentcontext.hxx>
#include <ucbhelper/macros.hxx>
+#include <rtl/ref.hxx>
using namespace com::sun::star;
using namespace hierarchy_ucp;
@@ -195,35 +196,29 @@ HierarchyDataSource::~HierarchyDataSource()
}
// XServiceInfo methods.
-
-XSERVICEINFO_COMMOM_IMPL( HierarchyDataSource,
- "com.sun.star.comp.ucb.HierarchyDataSource" )
-/// @throws css::uno::Exception
-static css::uno::Reference< css::uno::XInterface >
-HierarchyDataSource_CreateInstance( const css::uno::Reference< css::lang::XMultiServiceFactory> & rSMgr )
+OUString SAL_CALL HierarchyDataSource::getImplementationName() \
{
- css::lang::XServiceInfo* pX = new HierarchyDataSource( ucbhelper::getComponentContext(rSMgr) );
- return css::uno::Reference< css::uno::XInterface >::query( pX );
+ return "com.sun.star.comp.ucb.HierarchyDataSource";
}
-
-css::uno::Sequence< OUString >
-HierarchyDataSource::getSupportedServiceNames_Static()
+sal_Bool SAL_CALL HierarchyDataSource::supportsService( const OUString& ServiceName )
+{
+ return cppu::supportsService( this, ServiceName );
+}
+css::uno::Sequence< OUString > HierarchyDataSource::getSupportedServiceNames()
{
return { "com.sun.star.ucb.DefaultHierarchyDataSource", "com.sun.star.ucb.HierarchyDataSource" };
}
-css::uno::Reference< css::lang::XSingleServiceFactory >
-HierarchyDataSource::createServiceFactory( const css::uno::Reference< css::lang::XMultiServiceFactory >& rxServiceMgr )
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+ucb_HierarchyDataSource_get_implementation(
+ css::uno::XComponentContext* context , css::uno::Sequence<css::uno::Any> const&)
{
- return cppu::createOneInstanceFactory(
- rxServiceMgr,
- HierarchyDataSource::getImplementationName_Static(),
- HierarchyDataSource_CreateInstance,
- HierarchyDataSource::getSupportedServiceNames_Static() );
+ static rtl::Reference<HierarchyDataSource> g_Instance(new HierarchyDataSource(context));
+ g_Instance->acquire();
+ return static_cast<cppu::OWeakObject*>(g_Instance.get());
}
-
// XComponent methods.
diff --git a/ucb/source/ucp/hierarchy/hierarchydatasource.hxx b/ucb/source/ucp/hierarchy/hierarchydatasource.hxx
index 3c2eb82ba64d..e21d7acda551 100644
--- a/ucb/source/ucp/hierarchy/hierarchydatasource.hxx
+++ b/ucb/source/ucp/hierarchy/hierarchydatasource.hxx
@@ -53,12 +53,6 @@ public:
virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
- static OUString getImplementationName_Static();
- static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
-
- static css::uno::Reference< css::lang::XSingleServiceFactory > createServiceFactory( const css::uno::Reference<
- css::lang::XMultiServiceFactory >& rxServiceMgr );
-
// XComponent
virtual void SAL_CALL dispose() override;
virtual void SAL_CALL addEventListener( const css::uno::Reference< css::lang::XEventListener > & xListener ) override;
diff --git a/ucb/source/ucp/hierarchy/hierarchyprovider.cxx b/ucb/source/ucp/hierarchy/hierarchyprovider.cxx
index 605c0b9d9b32..342b686f2286 100644
--- a/ucb/source/ucp/hierarchy/hierarchyprovider.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchyprovider.cxx
@@ -97,38 +97,30 @@ XTYPEPROVIDER_IMPL_4( HierarchyContentProvider,
// XServiceInfo methods.
-XSERVICEINFO_COMMOM_IMPL( HierarchyContentProvider,
- "com.sun.star.comp.ucb.HierarchyContentProvider" )
-/// @throws css::uno::Exception
-static css::uno::Reference< css::uno::XInterface >
-HierarchyContentProvider_CreateInstance( const css::uno::Reference< css::lang::XMultiServiceFactory> & rSMgr )
+OUString SAL_CALL HierarchyContentProvider::getImplementationName() \
{
- css::lang::XServiceInfo* pX = new HierarchyContentProvider( ucbhelper::getComponentContext(rSMgr) );
- return css::uno::Reference< css::uno::XInterface >::query( pX );
+ return "com.sun.star.comp.ucb.HierarchyContentProvider";
}
-
-css::uno::Sequence< OUString >
-HierarchyContentProvider::getSupportedServiceNames_Static()
+sal_Bool SAL_CALL HierarchyContentProvider::supportsService( const OUString& ServiceName )
+{
+ return cppu::supportsService( this, ServiceName );
+}
+css::uno::Sequence< OUString > HierarchyContentProvider::getSupportedServiceNames()
{
- css::uno::Sequence< OUString > aSNS { "com.sun.star.ucb.HierarchyContentProvider" };
- return aSNS;
+ return { "com.sun.star.ucb.HierarchyContentProvider" };
}
// Service factory implementation.
-
-css::uno::Reference< css::lang::XSingleServiceFactory >
-HierarchyContentProvider::createServiceFactory( const css::uno::Reference< css::lang::XMultiServiceFactory >& rxServiceMgr )
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+ucb_HierarchyContentProvider_get_implementation(
+ css::uno::XComponentContext* context , css::uno::Sequence<css::uno::Any> const&)
{
- return cppu::createOneInstanceFactory(
- rxServiceMgr,
- HierarchyContentProvider::getImplementationName_Static(),
- HierarchyContentProvider_CreateInstance,
- HierarchyContentProvider::getSupportedServiceNames_Static() );
+ static rtl::Reference<HierarchyContentProvider> g_Instance(new HierarchyContentProvider(context));
+ g_Instance->acquire();
+ return static_cast<cppu::OWeakObject*>(g_Instance.get());
}
-
-
// XContentProvider methods.
diff --git a/ucb/source/ucp/hierarchy/hierarchyprovider.hxx b/ucb/source/ucp/hierarchy/hierarchyprovider.hxx
index 1bc72e034dc0..4c82a262dfe4 100644
--- a/ucb/source/ucp/hierarchy/hierarchyprovider.hxx
+++ b/ucb/source/ucp/hierarchy/hierarchyprovider.hxx
@@ -90,13 +90,6 @@ public:
virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
- static OUString getImplementationName_Static();
- static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
-
- static css::uno::Reference< css::lang::XSingleServiceFactory >
- createServiceFactory( const css::uno::Reference<
- css::lang::XMultiServiceFactory >& rxServiceMgr );
-
// XContentProvider
virtual css::uno::Reference< css::ucb::XContent > SAL_CALL
queryContent( const css::uno::Reference< css::ucb::XContentIdentifier >& Identifier ) override;
diff --git a/ucb/source/ucp/hierarchy/hierarchyservices.cxx b/ucb/source/ucp/hierarchy/hierarchyservices.cxx
deleted file mode 100644
index a8161341da8c..000000000000
--- a/ucb/source/ucp/hierarchy/hierarchyservices.cxx
+++ /dev/null
@@ -1,69 +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/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include "hierarchyprovider.hxx"
-#include "hierarchydatasource.hxx"
-
-using namespace com::sun::star;
-using namespace hierarchy_ucp;
-
-
-extern "C" SAL_DLLPUBLIC_EXPORT void * ucphier1_component_getFactory(
- const char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ )
-{
- void * pRet = nullptr;
-
- uno::Reference< lang::XMultiServiceFactory > xSMgr(
- static_cast< lang::XMultiServiceFactory * >(
- pServiceManager ) );
- uno::Reference< lang::XSingleServiceFactory > xFactory;
-
-
- // Hierarchy Content Provider.
-
-
- if ( HierarchyContentProvider::getImplementationName_Static().
- equalsAscii( pImplName ) )
- {
- xFactory = HierarchyContentProvider::createServiceFactory( xSMgr );
- }
-
-
- // Hierarchy Data Source.
-
-
- else if ( HierarchyDataSource::getImplementationName_Static().
- equalsAscii( pImplName ) )
- {
- xFactory = HierarchyDataSource::createServiceFactory( xSMgr );
- }
-
-
- if ( xFactory.is() )
- {
- xFactory->acquire();
- pRet = xFactory.get();
- }
-
- return pRet;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/ucb/source/ucp/hierarchy/ucphier1.component b/ucb/source/ucp/hierarchy/ucphier1.component
index 6d880b46cf7c..5122c5a63787 100644
--- a/ucb/source/ucp/hierarchy/ucphier1.component
+++ b/ucb/source/ucp/hierarchy/ucphier1.component
@@ -18,11 +18,13 @@
-->
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
- prefix="ucphier1" xmlns="http://openoffice.org/2010/uno-components">
- <implementation name="com.sun.star.comp.ucb.HierarchyContentProvider">
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.ucb.HierarchyContentProvider"
+ constructor="ucb_HierarchyContentProvider_get_implementation">
<service name="com.sun.star.ucb.HierarchyContentProvider"/>
</implementation>
- <implementation name="com.sun.star.comp.ucb.HierarchyDataSource">
+ <implementation name="com.sun.star.comp.ucb.HierarchyDataSource"
+ constructor="ucb_HierarchyDataSource_get_implementation">
<service name="com.sun.star.ucb.DefaultHierarchyDataSource"/>
<service name="com.sun.star.ucb.HierarchyDataSource"/>
</implementation>