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; -} - ///////////////////////////////////////////////////////////////////////////
