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


The following commit(s) were added to refs/heads/AOO42X by this push:
     new 55bca0e725 Revert "Port main/linguistic component_getFactory() to the 
component context API."
55bca0e725 is described below

commit 55bca0e725dc4019c2c66eefa2872bc2046af257
Author: mseidel <[email protected]>
AuthorDate: Sun Jun 8 11:32:46 2025 +0200

    Revert "Port main/linguistic component_getFactory() to the component 
context API."
    
    This reverts commit ad380fcac82b58c178faaa6975dcf5f2e3303dfa.
---
 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, 201 insertions(+), 96 deletions(-)

diff --git a/main/linguistic/source/convdiclist.cxx 
b/main/linguistic/source/convdiclist.cxx
index 1533c2fb9a..11181f0fa2 100644
--- a/main/linguistic/source/convdiclist.cxx
+++ b/main/linguistic/source/convdiclist.cxx
@@ -682,10 +682,30 @@ uno::Sequence< OUString > 
ConvDicList::getSupportedServiceNames_Static()
 ///////////////////////////////////////////////////////////////////////////
 
 uno::Reference< uno::XInterface > SAL_CALL ConvDicList_CreateInstance(
-        const uno::Reference< XComponentContext > & /*rCtx*/ )
+        const uno::Reference< XMultiServiceFactory > & /*rSMgr*/ )
     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 a7bed3013b..9d5284df8f 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< XComponentContext > & 
/*rCtx*/ )
+    DicList_CreateInstance( const uno::Reference< XMultiServiceFactory > & 
/*rSMgr*/ )
                        throw(Exception)
 {
        uno::Reference< XInterface > xService = (cppu::OWeakObject *) new 
DicList;
@@ -792,6 +792,25 @@ 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 929f6a50a9..c0a889a0bb 100644
--- a/main/linguistic/source/gciterator.cxx
+++ b/main/linguistic/source/gciterator.cxx
@@ -73,6 +73,10 @@ 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();
+
 
 //////////////////////////////////////////////////////////////////////
 
@@ -266,8 +270,8 @@ void stopGrammarChecking ()
 }
 */
 
-GrammarCheckingIterator::GrammarCheckingIterator( const uno::Reference< 
uno::XComponentContext > & rxCtx ) :
-    m_xContext( rxCtx ),
+GrammarCheckingIterator::GrammarCheckingIterator( const uno::Reference< 
lang::XMultiServiceFactory > & rxMgr ) :
+    m_xMSF( rxMgr ),
        m_bEnd( sal_False ),
     m_aCurCheckedDocId(),
     m_bGCServicesChecked( sal_False ),
@@ -950,7 +954,7 @@ throw (uno::RuntimeException)
 
         // release all UNO references
         
-        m_xContext.clear();
+        m_xMSF.clear();
         m_xBreakIterator.clear();
 
         // clear containers with UNO references AND have those references 
released
@@ -1148,9 +1152,9 @@ void GrammarCheckingIterator::GetMatchingGCSvcs_Impl()
 void GrammarCheckingIterator::GetAvailableGCSvcs_Impl()
 {
        // internal method; will always be called with locked mutex
-    if (m_xContext.is())
+    if (m_xMSF.is())
        {
-        uno::Reference< container::XContentEnumerationAccess > xEnumAccess( 
m_xContext.getServiceManager(), uno::UNO_QUERY );
+        uno::Reference< container::XContentEnumerationAccess > xEnumAccess( 
m_xMSF, uno::UNO_QUERY );
                uno::Reference< container::XEnumeration > xEnum;
                if (xEnumAccess.is())
             xEnum = xEnumAccess->createContentEnumeration( A2OU( 
SN_GRAMMARCHECKER ) );
@@ -1164,7 +1168,7 @@ void GrammarCheckingIterator::GetAvailableGCSvcs_Impl()
                                uno::Reference< lang::XSingleServiceFactory > 
xFactory;
 
                 uno::Reference< uno::XComponentContext > xContext;
-                uno::Reference< beans::XPropertySet > xProps( 
m_xContext.getServiceManager(), uno::UNO_QUERY );
+                uno::Reference< beans::XPropertySet > xProps( m_xMSF, 
uno::UNO_QUERY );
                 xProps->getPropertyValue( rtl::OUString( 
RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))) >>= xContext;
 
                 if ( xContext.is() && 
@@ -1221,13 +1225,13 @@ throw(uno::RuntimeException)
 
 OUString SAL_CALL GrammarCheckingIterator::getImplementationName(  ) throw 
(uno::RuntimeException)
 {
-    return getImplementationName_Static();
+    return GrammarCheckingIterator_getImplementationName();
 }
 
 
 uno::Sequence< OUString > SAL_CALL 
GrammarCheckingIterator::getSupportedServiceNames(  ) throw 
(uno::RuntimeException)
 {
-    return getSupportedServiceNames_Static();
+    return GrammarCheckingIterator_getSupportedServiceNames();
 }
 
     
@@ -1283,13 +1287,13 @@ LinguDispatcher::DspType 
GrammarCheckingIterator::GetDspType() const
 ///////////////////////////////////////////////////////////////////////////
 
 
-OUString GrammarCheckingIterator::getImplementationName_Static() throw()
+static OUString GrammarCheckingIterator_getImplementationName() throw()
 {
     return A2OU( "com.sun.star.lingu2.ProofreadingIterator" );
 }
 
 
-uno::Sequence< OUString > 
GrammarCheckingIterator::getSupportedServiceNames_Static() throw()
+static uno::Sequence< OUString > 
GrammarCheckingIterator_getSupportedServiceNames() throw()
 {
     uno::Sequence< OUString > aSNS( 1 );
     aSNS.getArray()[0] = A2OU( SN_GRAMMARCHECKINGITERATOR );
@@ -1297,11 +1301,31 @@ uno::Sequence< OUString > 
GrammarCheckingIterator::getSupportedServiceNames_Stat
 }
 
 
-uno::Reference< uno::XInterface > SAL_CALL 
GrammarCheckingIterator_createInstance(
-    const uno::Reference< uno::XComponentContext > & rxCtx )
+static uno::Reference< uno::XInterface > SAL_CALL 
GrammarCheckingIterator_createInstance(
+    const uno::Reference< lang::XMultiServiceFactory > & rxSMgr )
 throw(uno::Exception)
 {
-    return static_cast< ::cppu::OWeakObject * >(new GrammarCheckingIterator( 
rxCtx ));
+    return static_cast< ::cppu::OWeakObject * >(new GrammarCheckingIterator( 
rxSMgr ));
 }
 
 
+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 30ff6b947d..144bf22d67 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::uno::XComponentContext >   
 m_xContext;
+    com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory 
>    m_xMSF;
 
 
        //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::uno::XComponentContext > & rxCtx );
+    explicit GrammarCheckingIterator( const com::sun::star::uno::Reference< 
com::sun::star::lang::XMultiServiceFactory > & rxMgr );
     virtual ~GrammarCheckingIterator();
 
     // XProofreadingIterator
@@ -196,9 +196,6 @@ 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 f7281d024f..6cf21e2416 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< XComponentContext > & /*rCtx*/ )
+            const Reference< XMultiServiceFactory > & /*rSMgr*/ )
                throw(Exception)
 {
        Reference< XInterface > xService = (cppu::OWeakObject*)new LinguProps;
@@ -661,4 +661,23 @@ 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 27079044c5..50f0d87fbf 100644
--- a/main/linguistic/source/lngreg.cxx
+++ b/main/linguistic/source/lngreg.cxx
@@ -26,92 +26,60 @@
 
 
 #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;
 
-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);
+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 *
+//);
 
 ////////////////////////////////////////
 // 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"
 {
 
@@ -124,7 +92,43 @@ SAL_DLLPUBLIC_EXPORT void SAL_CALL 
component_getImplementationEnvironment(
 SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
        const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey 
)
 {
-    return ::cppu::component_getFactoryHelper( pImplName, pServiceManager, 
pRegistryKey, g_component_entries );
+       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;
 }
 }
 
diff --git a/main/linguistic/source/lngsvcmgr.cxx 
b/main/linguistic/source/lngsvcmgr.cxx
index e7eb0440f9..be59d438cd 100644
--- a/main/linguistic/source/lngsvcmgr.cxx
+++ b/main/linguistic/source/lngsvcmgr.cxx
@@ -1990,12 +1990,34 @@ uno::Sequence< OUString > 
LngSvcMgr::getSupportedServiceNames_Static()
 
 
 uno::Reference< uno::XInterface > SAL_CALL LngSvcMgr_CreateInstance(
-            const uno::Reference< uno::XComponentContext > & /*rCtx*/ )
+            const uno::Reference< lang::XMultiServiceFactory > & /*rSMgr*/ )
         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