This is an automated email from the ASF dual-hosted git repository.

mseidel pushed a commit to branch AOO42X
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit ad380fcac82b58c178faaa6975dcf5f2e3303dfa
Author: Damjan Jovanovic <[email protected]>
AuthorDate: Thu Jun 5 19:09:02 2025 +0200

    Port main/linguistic component_getFactory() to the component context API.
    
    Patch by: me
    
    (cherry picked from commit 1890034f73947872dc88f59af6226fed5174e2b5)
---
 main/linguistic/source/convdiclist.cxx |  22 +----
 main/linguistic/source/dlistimp.cxx    |  21 +----
 main/linguistic/source/gciterator.cxx  |  50 +++--------
 main/linguistic/source/gciterator.hxx  |   7 +-
 main/linguistic/source/lngopt.cxx      |  21 +----
 main/linguistic/source/lngreg.cxx      | 152 ++++++++++++++++-----------------
 main/linguistic/source/lngsvcmgr.cxx   |  24 +-----
 7 files changed, 96 insertions(+), 201 deletions(-)

diff --git a/main/linguistic/source/convdiclist.cxx 
b/main/linguistic/source/convdiclist.cxx
index 11181f0fa2..1533c2fb9a 100644
--- a/main/linguistic/source/convdiclist.cxx
+++ b/main/linguistic/source/convdiclist.cxx
@@ -682,30 +682,10 @@ uno::Sequence< OUString > 
ConvDicList::getSupportedServiceNames_Static()
 ///////////////////////////////////////////////////////////////////////////
 
 uno::Reference< uno::XInterface > SAL_CALL ConvDicList_CreateInstance(
-        const uno::Reference< XMultiServiceFactory > & /*rSMgr*/ )
+        const uno::Reference< XComponentContext > & /*rCtx*/ )
     throw(Exception)
 {
     return StaticConvDicList::get();
 }
 
-void * SAL_CALL ConvDicList_getFactory(
-        const sal_Char * pImplName,
-        XMultiServiceFactory * pServiceManager, void *  )
-{
-    void * pRet = 0;
-    if ( !ConvDicList::getImplementationName_Static().compareToAscii( 
pImplName ) )
-    {
-        uno::Reference< XSingleServiceFactory > xFactory =
-            cppu::createOneInstanceFactory(
-                pServiceManager,
-                ConvDicList::getImplementationName_Static(),
-                ConvDicList_CreateInstance,
-                ConvDicList::getSupportedServiceNames_Static());
-        // acquire, because we return an interface pointer instead of a 
reference
-        xFactory->acquire();
-        pRet = xFactory.get();
-    }
-    return pRet;
-}
-
 ///////////////////////////////////////////////////////////////////////////
diff --git a/main/linguistic/source/dlistimp.cxx 
b/main/linguistic/source/dlistimp.cxx
index 9d5284df8f..a7bed3013b 100644
--- a/main/linguistic/source/dlistimp.cxx
+++ b/main/linguistic/source/dlistimp.cxx
@@ -409,7 +409,7 @@ sal_Int32 DicList::GetDicPos(const uno::Reference< 
XDictionary > &xDic)
 
 
 uno::Reference< XInterface > SAL_CALL
-    DicList_CreateInstance( const uno::Reference< XMultiServiceFactory > & 
/*rSMgr*/ )
+    DicList_CreateInstance( const uno::Reference< XComponentContext > & 
/*rCtx*/ )
                        throw(Exception)
 {
        uno::Reference< XInterface > xService = (cppu::OWeakObject *) new 
DicList;
@@ -792,25 +792,6 @@ uno::Sequence< rtl::OUString > 
DicList::getSupportedServiceNames_Static() throw(
        return aSNS;
 }
 
-void * SAL_CALL DicList_getFactory(    const sal_Char * pImplName,
-               XMultiServiceFactory * pServiceManager, void *  )
-{
-       void * pRet = 0;
-       if ( !DicList::getImplementationName_Static().compareToAscii( pImplName 
) )
-       {
-               uno::Reference< XSingleServiceFactory > xFactory =
-                       cppu::createOneInstanceFactory(
-                               pServiceManager,
-                               DicList::getImplementationName_Static(),
-                               DicList_CreateInstance,
-                               DicList::getSupportedServiceNames_Static());
-               // acquire, because we return an interface pointer instead of a 
reference
-               xFactory->acquire();
-               pRet = xFactory.get();
-       }
-       return pRet;
-}
-
 ///////////////////////////////////////////////////////////////////////////
 
 xub_StrLen lcl_GetToken( String &rToken,
diff --git a/main/linguistic/source/gciterator.cxx 
b/main/linguistic/source/gciterator.cxx
index c0a889a0bb..929f6a50a9 100644
--- a/main/linguistic/source/gciterator.cxx
+++ b/main/linguistic/source/gciterator.cxx
@@ -73,10 +73,6 @@ using ::rtl::OUString;
 using namespace linguistic;
 using namespace ::com::sun::star;
 
-// forward declarations
-static ::rtl::OUString GrammarCheckingIterator_getImplementationName() throw();
-static uno::Sequence< OUString > 
GrammarCheckingIterator_getSupportedServiceNames() throw();
-
 
 //////////////////////////////////////////////////////////////////////
 
@@ -270,8 +266,8 @@ void stopGrammarChecking ()
 }
 */
 
-GrammarCheckingIterator::GrammarCheckingIterator( const uno::Reference< 
lang::XMultiServiceFactory > & rxMgr ) :
-    m_xMSF( rxMgr ),
+GrammarCheckingIterator::GrammarCheckingIterator( const uno::Reference< 
uno::XComponentContext > & rxCtx ) :
+    m_xContext( rxCtx ),
        m_bEnd( sal_False ),
     m_aCurCheckedDocId(),
     m_bGCServicesChecked( sal_False ),
@@ -954,7 +950,7 @@ throw (uno::RuntimeException)
 
         // release all UNO references
         
-        m_xMSF.clear();
+        m_xContext.clear();
         m_xBreakIterator.clear();
 
         // clear containers with UNO references AND have those references 
released
@@ -1152,9 +1148,9 @@ void GrammarCheckingIterator::GetMatchingGCSvcs_Impl()
 void GrammarCheckingIterator::GetAvailableGCSvcs_Impl()
 {
        // internal method; will always be called with locked mutex
-    if (m_xMSF.is())
+    if (m_xContext.is())
        {
-        uno::Reference< container::XContentEnumerationAccess > xEnumAccess( 
m_xMSF, uno::UNO_QUERY );
+        uno::Reference< container::XContentEnumerationAccess > xEnumAccess( 
m_xContext.getServiceManager(), uno::UNO_QUERY );
                uno::Reference< container::XEnumeration > xEnum;
                if (xEnumAccess.is())
             xEnum = xEnumAccess->createContentEnumeration( A2OU( 
SN_GRAMMARCHECKER ) );
@@ -1168,7 +1164,7 @@ void GrammarCheckingIterator::GetAvailableGCSvcs_Impl()
                                uno::Reference< lang::XSingleServiceFactory > 
xFactory;
 
                 uno::Reference< uno::XComponentContext > xContext;
-                uno::Reference< beans::XPropertySet > xProps( m_xMSF, 
uno::UNO_QUERY );
+                uno::Reference< beans::XPropertySet > xProps( 
m_xContext.getServiceManager(), uno::UNO_QUERY );
                 xProps->getPropertyValue( rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))) >>= xContext;
 
                 if ( xContext.is() && 
@@ -1225,13 +1221,13 @@ throw(uno::RuntimeException)
 
 OUString SAL_CALL GrammarCheckingIterator::getImplementationName(  ) throw 
(uno::RuntimeException)
 {
-    return GrammarCheckingIterator_getImplementationName();
+    return getImplementationName_Static();
 }
 
 
 uno::Sequence< OUString > SAL_CALL 
GrammarCheckingIterator::getSupportedServiceNames(  ) throw 
(uno::RuntimeException)
 {
-    return GrammarCheckingIterator_getSupportedServiceNames();
+    return getSupportedServiceNames_Static();
 }
 
     
@@ -1287,13 +1283,13 @@ LinguDispatcher::DspType 
GrammarCheckingIterator::GetDspType() const
 ///////////////////////////////////////////////////////////////////////////
 
 
-static OUString GrammarCheckingIterator_getImplementationName() throw()
+OUString GrammarCheckingIterator::getImplementationName_Static() throw()
 {
     return A2OU( "com.sun.star.lingu2.ProofreadingIterator" );
 }
 
 
-static uno::Sequence< OUString > 
GrammarCheckingIterator_getSupportedServiceNames() throw()
+uno::Sequence< OUString > 
GrammarCheckingIterator::getSupportedServiceNames_Static() throw()
 {
     uno::Sequence< OUString > aSNS( 1 );
     aSNS.getArray()[0] = A2OU( SN_GRAMMARCHECKINGITERATOR );
@@ -1301,31 +1297,11 @@ static uno::Sequence< OUString > 
GrammarCheckingIterator_getSupportedServiceName
 }
 
 
-static uno::Reference< uno::XInterface > SAL_CALL 
GrammarCheckingIterator_createInstance(
-    const uno::Reference< lang::XMultiServiceFactory > & rxSMgr )
+uno::Reference< uno::XInterface > SAL_CALL 
GrammarCheckingIterator_createInstance(
+    const uno::Reference< uno::XComponentContext > & rxCtx )
 throw(uno::Exception)
 {
-    return static_cast< ::cppu::OWeakObject * >(new GrammarCheckingIterator( 
rxSMgr ));
+    return static_cast< ::cppu::OWeakObject * >(new GrammarCheckingIterator( 
rxCtx ));
 }
 
 
-void * SAL_CALL GrammarCheckingIterator_getFactory(
-    const sal_Char *pImplName,
-    lang::XMultiServiceFactory *pServiceManager,
-    void * /*pRegistryKey*/ )
-{
-    void * pRet = 0;
-    if ( !GrammarCheckingIterator_getImplementationName().compareToAscii( 
pImplName ) )
-    {
-        uno::Reference< lang::XSingleServiceFactory > xFactory =
-            cppu::createOneInstanceFactory(
-                pServiceManager,
-                GrammarCheckingIterator_getImplementationName(),
-                GrammarCheckingIterator_createInstance,
-                GrammarCheckingIterator_getSupportedServiceNames());
-        // acquire, because we return an interface pointer instead of a 
reference
-        xFactory->acquire();
-        pRet = xFactory.get();
-    }
-    return pRet;
-}
diff --git a/main/linguistic/source/gciterator.hxx 
b/main/linguistic/source/gciterator.hxx
index 144bf22d67..30ff6b947d 100644
--- a/main/linguistic/source/gciterator.hxx
+++ b/main/linguistic/source/gciterator.hxx
@@ -88,7 +88,7 @@ class GrammarCheckingIterator:
     >,
     public LinguDispatcher
 {
-    com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory 
>    m_xMSF;
+    com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >   
 m_xContext;
 
 
        //the queue is keeping track of all senteces to be checked
@@ -163,7 +163,7 @@ public:
 
     void DequeueAndCheck();
 
-    explicit GrammarCheckingIterator( const com::sun::star::uno::Reference< 
com::sun::star::lang::XMultiServiceFactory > & rxMgr );
+    explicit GrammarCheckingIterator( const com::sun::star::uno::Reference< 
com::sun::star::uno::XComponentContext > & rxCtx );
     virtual ~GrammarCheckingIterator();
 
     // XProofreadingIterator
@@ -196,6 +196,9 @@ public:
     virtual void SetServiceList( const ::com::sun::star::lang::Locale 
&rLocale, const ::com::sun::star::uno::Sequence< rtl::OUString > &rSvcImplNames 
);
     virtual ::com::sun::star::uno::Sequence< rtl::OUString > GetServiceList( 
const ::com::sun::star::lang::Locale &rLocale ) const;
     virtual DspType GetDspType() const;
+
+    static ::rtl::OUString getImplementationName_Static() throw();
+    static com::sun::star::uno::Sequence< ::rtl::OUString > 
getSupportedServiceNames_Static() throw();
 };
 
 
diff --git a/main/linguistic/source/lngopt.cxx 
b/main/linguistic/source/lngopt.cxx
index 6cf21e2416..f7281d024f 100644
--- a/main/linguistic/source/lngopt.cxx
+++ b/main/linguistic/source/lngopt.cxx
@@ -385,7 +385,7 @@ void LinguProps::launchEvent( const PropertyChangeEvent 
&rEvt ) const
 }
 
 Reference< XInterface > SAL_CALL LinguProps_CreateInstance(
-            const Reference< XMultiServiceFactory > & /*rSMgr*/ )
+            const Reference< XComponentContext > & /*rCtx*/ )
                throw(Exception)
 {
        Reference< XInterface > xService = (cppu::OWeakObject*)new LinguProps;
@@ -661,23 +661,4 @@ uno::Sequence< OUString > 
LinguProps::getSupportedServiceNames_Static()
        return aSNS;
 }
 
-void * SAL_CALL LinguProps_getFactory( const sal_Char * pImplName,
-                       XMultiServiceFactory *pServiceManager, void * )
-{
-       void * pRet = 0;
-       if ( !LinguProps::getImplementationName_Static().compareToAscii( 
pImplName ) )
-       {
-               Reference< XSingleServiceFactory > xFactory =
-                       cppu::createOneInstanceFactory(
-                               pServiceManager,
-                               LinguProps::getImplementationName_Static(),
-                               LinguProps_CreateInstance,
-                               LinguProps::getSupportedServiceNames_Static());
-               // acquire, because we return an interface pointer instead of a 
reference
-               xFactory->acquire();
-               pRet = xFactory.get();
-       }
-       return pRet;
-}
-
 ///////////////////////////////////////////////////////////////////////////
diff --git a/main/linguistic/source/lngreg.cxx 
b/main/linguistic/source/lngreg.cxx
index 50f0d87fbf..27079044c5 100644
--- a/main/linguistic/source/lngreg.cxx
+++ b/main/linguistic/source/lngreg.cxx
@@ -26,60 +26,92 @@
 
 
 #include <cppuhelper/factory.hxx>      // helper for factories
+#include <cppuhelper/implementationentry.hxx>
 #include <rtl/string.hxx>
 
+#include "lngsvcmgr.hxx"
+#include "lngopt.hxx"
+#include "dlistimp.hxx"
+#include "convdiclist.hxx"
+#include "gciterator.hxx"
+
 #include <com/sun/star/registry/XRegistryKey.hpp>
 
 using namespace com::sun::star::lang;
 
 using namespace com::sun::star::registry;
 
-extern void * SAL_CALL LngSvcMgr_getFactory
-(
-       const sal_Char * pImplName,
-       XMultiServiceFactory * pServiceManager,
-       void * /*pRegistryKey*/
-);
-
-extern void * SAL_CALL DicList_getFactory
-(
-       const sal_Char * pImplName,
-       XMultiServiceFactory * pServiceManager,
-       void *
-);
-
-void * SAL_CALL LinguProps_getFactory
-(
-       const sal_Char * pImplName,
-       XMultiServiceFactory * pServiceManager,
-       void *
-);
-
-extern void * SAL_CALL ConvDicList_getFactory
-(
-    const sal_Char * pImplName,
-    XMultiServiceFactory * pServiceManager,
-    void *
-);
-
-extern void * SAL_CALL GrammarCheckingIterator_getFactory
-(
-    const sal_Char * pImplName,
-    XMultiServiceFactory * pServiceManager,
-    void *
-);
-
-//extern void * SAL_CALL GrammarChecker_getFactory
-//(
-//    const sal_Char * pImplName,
-//    XMultiServiceFactory * pServiceManager,
-//    void *
-//);
+using namespace com::sun::star;
+
+extern uno::Reference< uno::XInterface > SAL_CALL LngSvcMgr_CreateInstance(
+        const uno::Reference< uno::XComponentContext  > & /*rCtx*/ )
+    throw(uno::Exception);
+
+extern uno::Reference< uno::XInterface > SAL_CALL LinguProps_CreateInstance(
+        const uno::Reference< uno::XComponentContext > & /*rCtx*/ )
+    throw(uno::Exception);
+
+extern uno::Reference< uno::XInterface > SAL_CALL DicList_CreateInstance(
+        const uno::Reference< uno::XComponentContext > & /*rCtx*/ )
+    throw(uno::Exception);
+
+extern uno::Reference< uno::XInterface > SAL_CALL ConvDicList_CreateInstance(
+        const uno::Reference< uno::XComponentContext > & /*rCtx*/ )
+    throw(uno::Exception);
+
+extern uno::Reference< uno::XInterface > SAL_CALL 
GrammarCheckingIterator_createInstance(
+        const uno::Reference< uno::XComponentContext > & rxCtx )
+    throw(uno::Exception);
 
 ////////////////////////////////////////
 // definition of the two functions that are used to provide the services
 //
 
+struct ::cppu::ImplementationEntry g_component_entries [] =
+{
+    {
+        LngSvcMgr_CreateInstance,
+        LngSvcMgr::getImplementationName_Static,
+        LngSvcMgr::getSupportedServiceNames_Static,
+        ::cppu::createSingleComponentFactory,
+        0,
+        0
+    },
+    {
+        LinguProps_CreateInstance,
+        LinguProps::getImplementationName_Static,
+        LinguProps::getSupportedServiceNames_Static,
+        ::cppu::createSingleComponentFactory,
+        0,
+        0
+    },
+    {
+        DicList_CreateInstance,
+        DicList::getImplementationName_Static,
+        DicList::getSupportedServiceNames_Static,
+        ::cppu::createSingleComponentFactory,
+        0,
+        0
+    },
+    {
+        ConvDicList_CreateInstance,
+        ConvDicList::getImplementationName_Static,
+        ConvDicList::getSupportedServiceNames_Static,
+        ::cppu::createSingleComponentFactory,
+        0,
+        0
+    },
+    {
+        GrammarCheckingIterator_createInstance,
+        GrammarCheckingIterator::getImplementationName_Static,
+        GrammarCheckingIterator::getSupportedServiceNames_Static,
+        ::cppu::createSingleComponentFactory,
+        0,
+        0
+    },
+    { 0, 0, 0, 0, 0, 0 }
+};
+
 extern "C"
 {
 
@@ -92,43 +124,7 @@ SAL_DLLPUBLIC_EXPORT void SAL_CALL 
component_getImplementationEnvironment(
 SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
        const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey 
)
 {
-       void * pRet =
-               LngSvcMgr_getFactory(
-                       pImplName,
-                       reinterpret_cast< XMultiServiceFactory * >( 
pServiceManager ),
-                       pRegistryKey );
-       
-       if(!pRet)
-               pRet = LinguProps_getFactory(
-                       pImplName,
-                       reinterpret_cast< XMultiServiceFactory * >( 
pServiceManager ),
-                       pRegistryKey );
-
-       if(!pRet)
-               pRet =  DicList_getFactory(
-                       pImplName,
-                       reinterpret_cast< XMultiServiceFactory * >( 
pServiceManager ),
-                       pRegistryKey );
-
-    if(!pRet)
-        pRet =  ConvDicList_getFactory(
-            pImplName,
-            reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
-            pRegistryKey );
-
-       if(!pRet)
-        pRet =  GrammarCheckingIterator_getFactory(
-            pImplName,
-            reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
-            pRegistryKey );
-/*
-       if(!pRet)
-        pRet =  GrammarChecker_getFactory(
-            pImplName,
-            reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
-            pRegistryKey );
-*/
-       return pRet;
+    return ::cppu::component_getFactoryHelper( pImplName, pServiceManager, 
pRegistryKey, g_component_entries );
 }
 }
 
diff --git a/main/linguistic/source/lngsvcmgr.cxx 
b/main/linguistic/source/lngsvcmgr.cxx
index be59d438cd..e7eb0440f9 100644
--- a/main/linguistic/source/lngsvcmgr.cxx
+++ b/main/linguistic/source/lngsvcmgr.cxx
@@ -1990,34 +1990,12 @@ uno::Sequence< OUString > 
LngSvcMgr::getSupportedServiceNames_Static()
 
 
 uno::Reference< uno::XInterface > SAL_CALL LngSvcMgr_CreateInstance(
-            const uno::Reference< lang::XMultiServiceFactory > & /*rSMgr*/ )
+            const uno::Reference< uno::XComponentContext > & /*rCtx*/ )
         throw(uno::Exception)
 {
     uno::Reference< uno::XInterface > xService = (cppu::OWeakObject*) new 
LngSvcMgr;
        return xService;
 }
 
-void * SAL_CALL LngSvcMgr_getFactory(
-                       const sal_Char * pImplName,
-            lang::XMultiServiceFactory * pServiceManager,
-                       void * /*pRegistryKey*/ )
-{
-
-       void * pRet = 0;
-       if ( !LngSvcMgr::getImplementationName_Static().compareToAscii( 
pImplName ) )
-       {
-        uno::Reference< lang::XSingleServiceFactory > xFactory =
-                       cppu::createOneInstanceFactory(
-                               pServiceManager,
-                               LngSvcMgr::getImplementationName_Static(),
-                               LngSvcMgr_CreateInstance,
-                               LngSvcMgr::getSupportedServiceNames_Static());
-               // acquire, because we return an interface pointer instead of a 
reference
-               xFactory->acquire();
-               pRet = xFactory.get();
-       }
-       return pRet;
-}
-
 
 ///////////////////////////////////////////////////////////////////////////

Reply via email to