[Libreoffice-commits] core.git: svl/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Tue Jul 14 16:32:06 UTC 2020


 svl/source/passwordcontainer/passwordcontainer.component |    4 -
 svl/source/passwordcontainer/passwordcontainer.cxx       |   58 +--------------
 svl/source/passwordcontainer/passwordcontainer.hxx       |   17 ----
 3 files changed, 11 insertions(+), 68 deletions(-)

New commits:
commit 7256ff08bc46840bb85fa255ace6541dca91329e
Author:     Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Mon Jul 13 22:30:36 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Tue Jul 14 18:31:18 2020 +0200

    svl/passwordcontainer: create instances with uno constructors
    
    See tdf#74608 for motivation.
    
    Change-Id: Ib543223f87e1773645ff6063e7f9f902ff408f33
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98701
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/svl/source/passwordcontainer/passwordcontainer.component b/svl/source/passwordcontainer/passwordcontainer.component
index 165efbe7d1f7..e928461fa96b 100644
--- a/svl/source/passwordcontainer/passwordcontainer.component
+++ b/svl/source/passwordcontainer/passwordcontainer.component
@@ -18,9 +18,9 @@
  -->
 
 <component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
-    prefix="passwordcontainer"
     xmlns="http://openoffice.org/2010/uno-components">
-  <implementation name="stardiv.svl.PasswordContainer">
+  <implementation name="stardiv.svl.PasswordContainer"
+    constructor="svl_PasswordContainer_get_implementation">
     <service name="com.sun.star.task.PasswordContainer"/>
   </implementation>
 </component>
diff --git a/svl/source/passwordcontainer/passwordcontainer.cxx b/svl/source/passwordcontainer/passwordcontainer.cxx
index 506772366e87..fe90321e6398 100644
--- a/svl/source/passwordcontainer/passwordcontainer.cxx
+++ b/svl/source/passwordcontainer/passwordcontainer.cxx
@@ -366,12 +366,12 @@ void StorageItem::ImplCommit()
 }
 
 
-PasswordContainer::PasswordContainer( const Reference<XMultiServiceFactory>& xServiceFactory )
+PasswordContainer::PasswordContainer( const Reference<XComponentContext>& rxContext )
 {
     // m_pStorageFile->Notify() can be called
     ::osl::MutexGuard aGuard( mMutex );
 
-    mComponent.set( xServiceFactory, UNO_QUERY );
+    mComponent.set( rxContext->getServiceManager(), UNO_QUERY );
     mComponent->addEventListener( this );
 
     m_pStorageFile.reset( new StorageItem( this, "Office.Common/Passwords" ) );
@@ -1294,7 +1294,7 @@ void PasswordContainer::Notify()
 
 OUString SAL_CALL PasswordContainer::getImplementationName(  )
 {
-    return impl_getStaticImplementationName();
+    return "stardiv.svl.PasswordContainer";
 }
 
 sal_Bool SAL_CALL PasswordContainer::supportsService( const OUString& ServiceName )
@@ -1303,33 +1303,15 @@ sal_Bool SAL_CALL PasswordContainer::supportsService( const OUString& ServiceNam
 }
 
 Sequence< OUString > SAL_CALL PasswordContainer::getSupportedServiceNames(  )
-{
-    return impl_getStaticSupportedServiceNames();
-}
-
-Sequence< OUString > PasswordContainer::impl_getStaticSupportedServiceNames(  )
 {
     return { "com.sun.star.task.PasswordContainer" };
 }
 
-OUString PasswordContainer::impl_getStaticImplementationName()
-{
-    return "stardiv.svl.PasswordContainer";
-}
-
-Reference< XInterface > SAL_CALL PasswordContainer::impl_createInstance( const Reference< XMultiServiceFactory >& xServiceManager )
-{
-    return Reference< XInterface >( *new PasswordContainer( xServiceManager ) );
-}
-
-Reference< XSingleServiceFactory > PasswordContainer::impl_createFactory( const Reference< XMultiServiceFactory >& ServiceManager )
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+svl_PasswordContainer_get_implementation(
+    css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> const&)
 {
-    Reference< XSingleServiceFactory > xReturn( ::cppu::createOneInstanceFactory( ServiceManager,
-                                                        PasswordContainer::impl_getStaticImplementationName(),
-                                                        PasswordContainer::impl_createInstance,
-                                                        PasswordContainer::impl_getStaticSupportedServiceNames()));
-    return xReturn ;
-
+    return cppu::acquire(new PasswordContainer(context));
 }
 
 
@@ -1370,31 +1352,5 @@ MasterPasswordRequest_Impl::MasterPasswordRequest_Impl( PasswordRequestMode Mode
 }
 
 
-extern "C"
-{
-SAL_DLLPUBLIC_EXPORT void * passwordcontainer_component_getFactory (
-    const char * pImplementationName,
-    SAL_UNUSED_PARAMETER void * pServiceManager,
-    SAL_UNUSED_PARAMETER void * /* pRegistryKey */)
-{
-    void * pResult = nullptr;
-    if (pServiceManager)
-    {
-        Reference< XSingleServiceFactory > xFactory;
-        if (PasswordContainer::impl_getStaticImplementationName().equalsAscii(pImplementationName))
-        {
-            xFactory = PasswordContainer::impl_createFactory (
-                static_cast< XMultiServiceFactory* >(pServiceManager));
-        }
-        if (xFactory.is())
-        {
-            xFactory->acquire();
-            pResult = xFactory.get();
-        }
-    }
-    return pResult;
-}
-
-} // extern "C"
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svl/source/passwordcontainer/passwordcontainer.hxx b/svl/source/passwordcontainer/passwordcontainer.hxx
index 09fb7e03629d..65c7bbf4efa8 100644
--- a/svl/source/passwordcontainer/passwordcontainer.hxx
+++ b/svl/source/passwordcontainer/passwordcontainer.hxx
@@ -28,6 +28,7 @@
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/lang/XEventListener.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
 #include <cppuhelper/implbase.hxx>
 
 #include <unotools/configitem.hxx>
@@ -273,7 +274,7 @@ css::task::UrlRecord find(
     static OUString EncodePasswords(const std::vector< OUString >& lines, const OUString& aMasterPassword );
 
 public:
-    PasswordContainer( const css::uno::Reference< css::lang::XMultiServiceFactory >& );
+    PasswordContainer( const css::uno::Reference< css::uno::XComponentContext >& );
     virtual ~PasswordContainer() override;
 
     virtual void SAL_CALL add( const OUString& aUrl,
@@ -306,20 +307,6 @@ public:
     virtual css::uno::Sequence< css::task::UrlRecord > SAL_CALL
                             getAllPersistent( const css::uno::Reference< css::task::XInteractionHandler >& Handler ) override;
 
-
-    // provide factory
-    /// @throws css::uno::RuntimeException
-    static OUString impl_getStaticImplementationName( );
-    /// @throws css::uno::RuntimeException
-    static css::uno::Sequence< OUString >
-                    impl_getStaticSupportedServiceNames(  );
-    /// @throws css::uno::RuntimeException
-    static css::uno::Reference< css::lang::XSingleServiceFactory >
-                    impl_createFactory( const css::uno::Reference< css::lang::XMultiServiceFactory >& ServiceManager );
-    /// @throws css::uno::RuntimeException
-    static css::uno::Reference< css::uno::XInterface > SAL_CALL
-                    impl_createInstance( const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceManager );
-
     // XServiceInfo
     virtual OUString SAL_CALL    getImplementationName(  ) override;
     virtual sal_Bool SAL_CALL            supportsService( const OUString& ServiceName ) override;


More information about the Libreoffice-commits mailing list