diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2012-09-18 12:47:55 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2012-09-18 15:08:56 +0200 |
commit | 2a32bf29b98403872235f880e91b1c08cd3d7f68 (patch) | |
tree | 4c982e92c3220c2e0d918d1d4c7661006b920150 | |
parent | cccc6bcfa095121c91e8bbc396f5bcf7e95424b9 (diff) |
Make getProcessComponentContext/ServiceFactory throw instead of returning null
...with the same rationale as recent 543158edba6678d3d76eee983a9d4edd2a422fee
"Require XComponentContext.getServiceManager to throw instead of returning null"
(this helps find problems like 065a758d0c2b66c6683d648347b7a6cdef4a80f7 "Enable
experimental gtk3 plugin only via SAL_USE_VCLPLUGIN").
Removed comphelper::createProcessComponent[WithAguments] and replaced its few
uses with direct calls to createInstance[WithArguments].
Change-Id: Ia44b8656f74de88ef6eab3eb6bd597729b08e1c8
-rw-r--r-- | comphelper/inc/comphelper/processfactory.hxx | 30 | ||||
-rw-r--r-- | comphelper/source/processfactory/processfactory.cxx | 41 | ||||
-rw-r--r-- | editeng/source/misc/svxacorr.cxx | 2 | ||||
-rw-r--r-- | svx/source/accessibility/AccessibleControlShape.cxx | 2 | ||||
-rw-r--r-- | toolkit/source/controls/formattedcontrol.cxx | 2 | ||||
-rw-r--r-- | vcl/source/app/svmain.cxx | 2 | ||||
-rw-r--r-- | vcl/source/gdi/impimagetree.cxx | 3 |
7 files changed, 29 insertions, 53 deletions
diff --git a/comphelper/inc/comphelper/processfactory.hxx b/comphelper/inc/comphelper/processfactory.hxx index dbcd647ee54e..e6833fc49327 100644 --- a/comphelper/inc/comphelper/processfactory.hxx +++ b/comphelper/inc/comphelper/processfactory.hxx @@ -39,34 +39,17 @@ namespace comphelper COMPHELPER_DLLPUBLIC void setProcessServiceFactory(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xSMgr); /** - * This function get the process service factory. If no service factory is set the function returns - * a null interface. + * This function gets the process service factory. + * + * If no service factory is set the function throws a RuntimeException. * * @author Juergen Schmidt */ COMPHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > getProcessServiceFactory(); -/** creates a component, using the process factory if set - @see getProcessServiceFactory - @see setProcessServiceFactory -*/ -COMPHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > - createProcessComponent( - const ::rtl::OUString& _rServiceSpecifier - ) SAL_THROW( ( ::com::sun::star::uno::RuntimeException ) ); - -/** creates a component with arguments, using the process factory if set +/** Obtains a component context from a service factory. - @see getProcessServiceFactory - @see setProcessServiceFactory -*/ -COMPHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > - createProcessComponentWithArguments( - const ::rtl::OUString& _rServiceSpecifier, - const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& _rArgs - ) SAL_THROW( ( ::com::sun::star::uno::RuntimeException ) ); - -/** Tries to obtain a component context from a service factory. + Throws a RuntimeException if no component context can be obtained. @param factory may be null @return may be null @@ -79,7 +62,8 @@ getComponentContext( /** * This function gets the process service factory's default component context. - * If no service factory is set the function returns a null interface. + * + * Throws a RuntimeException if no component context can be obtained. */ COMPHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > diff --git a/comphelper/source/processfactory/processfactory.cxx b/comphelper/source/processfactory/processfactory.cxx index c44d57991934..deb9b4f80260 100644 --- a/comphelper/source/processfactory/processfactory.cxx +++ b/comphelper/source/processfactory/processfactory.cxx @@ -22,7 +22,7 @@ #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include "com/sun/star/beans/XPropertySet.hpp" - +#include "com/sun/star/uno/DeploymentException.hpp" using namespace ::com::sun::star; using namespace com::sun::star::uno; @@ -59,32 +59,14 @@ Reference< XMultiServiceFactory > getProcessServiceFactory() { Reference< XMultiServiceFactory> xReturn; xReturn = localProcessFactory( xReturn, sal_False ); + if ( !xReturn.is() ) + { + throw DeploymentException( + "null process service factory", Reference< XInterface >() ); + } return xReturn; } -Reference< XInterface > createProcessComponent( const ::rtl::OUString& _rServiceSpecifier ) SAL_THROW( ( RuntimeException ) ) -{ - Reference< XInterface > xComponent; - - Reference< XMultiServiceFactory > xFactory( getProcessServiceFactory() ); - if ( xFactory.is() ) - xComponent = xFactory->createInstance( _rServiceSpecifier ); - - return xComponent; -} - -Reference< XInterface > createProcessComponentWithArguments( const ::rtl::OUString& _rServiceSpecifier, - const Sequence< Any >& _rArgs ) SAL_THROW( ( RuntimeException ) ) -{ - Reference< XInterface > xComponent; - - Reference< XMultiServiceFactory > xFactory( getProcessServiceFactory() ); - if ( xFactory.is() ) - xComponent = xFactory->createInstanceWithArguments( _rServiceSpecifier, _rArgs ); - - return xComponent; -} - Reference< XComponentContext > getComponentContext( Reference< XMultiServiceFactory > const & factory) { @@ -96,9 +78,18 @@ Reference< XComponentContext > getComponentContext( RTL_CONSTASCII_USTRINGPARAM("DefaultContext") ) ), uno::UNO_QUERY ); } - catch (beans::UnknownPropertyException const&) { + catch (beans::UnknownPropertyException & e) { + throw DeploymentException( + "unknown service factory DefaultContext property: " + e.Message, + Reference< XInterface >( factory, UNO_QUERY ) ); } } + if ( !xRet.is() ) + { + throw DeploymentException( + "no service factory DefaultContext", + Reference< XInterface >( factory, UNO_QUERY ) ); + } return xRet; } diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx index ed83e4d592aa..68c0d29547d3 100644 --- a/editeng/source/misc/svxacorr.cxx +++ b/editeng/source/misc/svxacorr.cxx @@ -443,7 +443,7 @@ sal_Bool SvxAutoCorrect::FnChgOrdinalNumber( // Check if the characters after that number correspond to the ordinal suffix rtl::OUString sServiceName("com.sun.star.i18n.OrdinalSuffix"); uno::Reference< i18n::XOrdinalSuffix > xOrdSuffix( - comphelper::createProcessComponent( sServiceName ), + comphelper::getProcessServiceFactory()->createInstance( sServiceName ), uno::UNO_QUERY ); if ( xOrdSuffix.is( ) ) diff --git a/svx/source/accessibility/AccessibleControlShape.cxx b/svx/source/accessibility/AccessibleControlShape.cxx index 9f9734be4859..0ddd918e84fa 100644 --- a/svx/source/accessibility/AccessibleControlShape.cxx +++ b/svx/source/accessibility/AccessibleControlShape.cxx @@ -270,7 +270,7 @@ void AccessibleControlShape::Init() // finally, aggregate a proxy for the control context // first a factory for the proxy Reference< XProxyFactory > xFactory; - xFactory = xFactory.query( createProcessComponent( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.reflection.ProxyFactory" ) ) ) ); + xFactory = xFactory.query( getProcessServiceFactory()->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.reflection.ProxyFactory" ) ) ) ); OSL_ENSURE( xFactory.is(), "AccessibleControlShape::Init: could not create a proxy factory!" ); // then the proxy itself if ( xFactory.is() && xNativeControlContext.is() ) diff --git a/toolkit/source/controls/formattedcontrol.cxx b/toolkit/source/controls/formattedcontrol.cxx index 230f966fdf48..93c8f1768821 100644 --- a/toolkit/source/controls/formattedcontrol.cxx +++ b/toolkit/source/controls/formattedcontrol.cxx @@ -84,7 +84,7 @@ namespace toolkit { rbTriedCreation = true; rDefaultFormats = Reference< XNumberFormatsSupplier >( - ::comphelper::createProcessComponent( + ::comphelper::getProcessServiceFactory()->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.NumberFormatsSupplier" ) ) ), UNO_QUERY_THROW ); diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx index fe895a54da0e..285f7137ccd4 100644 --- a/vcl/source/app/svmain.cxx +++ b/vcl/source/app/svmain.cxx @@ -487,7 +487,7 @@ void DeInitVCL() try { uno::Reference<lang::XComponent> const xDesktop( - comphelper::createProcessComponent( + comphelper::getProcessServiceFactory()->createInstance( OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop"))), uno::UNO_QUERY_THROW) ; diff --git a/vcl/source/gdi/impimagetree.cxx b/vcl/source/gdi/impimagetree.cxx index 374ce851eae8..1e34be389a31 100644 --- a/vcl/source/gdi/impimagetree.cxx +++ b/vcl/source/gdi/impimagetree.cxx @@ -39,6 +39,7 @@ #include "com/sun/star/container/XNameAccess.hpp" #include "com/sun/star/io/XInputStream.hpp" #include "com/sun/star/lang/Locale.hpp" +#include "com/sun/star/lang/XMultiServiceFactory.hpp" #include "com/sun/star/uno/Any.hxx" #include "com/sun/star/uno/Exception.hpp" #include "com/sun/star/uno/Reference.hxx" @@ -409,7 +410,7 @@ bool ImplImageTree::find( args[0] <<= i->first + ".zip"; try { i->second.set( - comphelper::createProcessComponentWithArguments( + comphelper::getProcessServiceFactory()->createInstanceWithArguments( rtl::OUString( "com.sun.star.packages.zip.ZipFileAccess"), args), css::uno::UNO_QUERY_THROW); |