cppuhelper/source/servicemanager.cxx | 7 +-- sc/source/ui/miscdlgs/solverutil.cxx | 72 +++++++------------------------ sccomp/source/solver/CoinMPSolver.cxx | 5 ++ sccomp/source/solver/LpsolveSolver.cxx | 5 ++ sccomp/source/solver/SolverComponent.cxx | 5 -- sccomp/source/solver/SolverComponent.hxx | 2 6 files changed, 32 insertions(+), 64 deletions(-)
New commits: commit 5f0321b3d0666e2f9011a76e6e0a5e4efaf91c5f Author: Matúš Kukan <[email protected]> Date: Fri Apr 4 09:27:38 2014 +0200 fix creating com.sun.star.sheet.Solver instance Change-Id: I100d45b8f749ece5496d8e5a0e3343dee96f7138 diff --git a/cppuhelper/source/servicemanager.cxx b/cppuhelper/source/servicemanager.cxx index 6a0543c..94d2ec5 100644 --- a/cppuhelper/source/servicemanager.cxx +++ b/cppuhelper/source/servicemanager.cxx @@ -1246,10 +1246,9 @@ cppuhelper::ServiceManager::createContentEnumeration( } else if (impl->factory2.is()) { factories.push_back(css::uno::makeAny(impl->factory2)); } else { - throw css::uno::DeploymentException( - ("Implementation " + impl->info->name - + " does not provide a factory"), - static_cast< cppu::OWeakObject * >(this)); + css::uno::Reference< css::lang::XSingleComponentFactory > factory( + new ImplementationWrapper(this, *i)); + factories.push_back(css::uno::makeAny(factory)); } } return new ContentEnumeration(factories); diff --git a/sc/source/ui/miscdlgs/solverutil.cxx b/sc/source/ui/miscdlgs/solverutil.cxx index a8f401d..bf98592 100644 --- a/sc/source/ui/miscdlgs/solverutil.cxx +++ b/sc/source/ui/miscdlgs/solverutil.cxx @@ -20,10 +20,8 @@ #include "solverutil.hxx" #include <com/sun/star/container/XContentEnumerationAccess.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/lang/XSingleComponentFactory.hpp> -#include <com/sun/star/lang/XSingleServiceFactory.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/sheet/XSolver.hpp> @@ -37,39 +35,6 @@ using namespace com::sun::star; #define SCSOLVER_SERVICE "com.sun.star.sheet.Solver" -static uno::Reference<sheet::XSolver> lcl_CreateSolver( const uno::Reference<uno::XInterface>& xIntFac, - const uno::Reference<uno::XComponentContext>& xCtx ) -{ - uno::Reference<sheet::XSolver> xSolver; - - uno::Reference<lang::XSingleComponentFactory> xCFac( xIntFac, uno::UNO_QUERY ); - uno::Reference<lang::XSingleServiceFactory> xFac( xIntFac, uno::UNO_QUERY ); - if ( xCFac.is() ) - { - try - { - uno::Reference<uno::XInterface> xInterface = xCFac->createInstanceWithContext(xCtx); - xSolver = uno::Reference<sheet::XSolver>( xInterface, uno::UNO_QUERY ); - } - catch(uno::Exception&) - { - } - } - if ( !xSolver.is() && xFac.is() ) - { - try - { - uno::Reference<uno::XInterface> xInterface = xFac->createInstance(); - xSolver = uno::Reference<sheet::XSolver>( xInterface, uno::UNO_QUERY ); - } - catch(uno::Exception&) - { - } - } - - return xSolver; -} - void ScSolverUtil::GetImplementations( uno::Sequence<OUString>& rImplNames, uno::Sequence<OUString>& rDescriptions ) { @@ -78,10 +43,9 @@ void ScSolverUtil::GetImplementations( uno::Sequence<OUString>& rImplNames, uno::Reference<uno::XComponentContext> xCtx( comphelper::getProcessComponentContext() ); - uno::Reference<lang::XMultiServiceFactory> xMSF( - xCtx->getServiceManager(), uno::UNO_QUERY_THROW ); - uno::Reference<container::XContentEnumerationAccess> xEnAc( xMSF, uno::UNO_QUERY ); + uno::Reference<container::XContentEnumerationAccess> xEnAc( + xCtx->getServiceManager(), uno::UNO_QUERY ); if ( xEnAc.is() ) { uno::Reference<container::XEnumeration> xEnum = @@ -92,17 +56,18 @@ void ScSolverUtil::GetImplementations( uno::Sequence<OUString>& rImplNames, while ( xEnum->hasMoreElements() ) { uno::Any aAny = xEnum->nextElement(); - uno::Reference<uno::XInterface> xIntFac; - aAny >>= xIntFac; - if ( xIntFac.is() ) + uno::Reference<lang::XServiceInfo> xInfo; + aAny >>= xInfo; + if ( xInfo.is() ) { - uno::Reference<lang::XServiceInfo> xInfo( xIntFac, uno::UNO_QUERY ); - if ( xInfo.is() ) + uno::Reference<lang::XSingleComponentFactory> xCFac( xInfo, uno::UNO_QUERY ); + if ( xCFac.is() ) { OUString sName = xInfo->getImplementationName(); OUString sDescription; - uno::Reference<sheet::XSolver> xSolver = lcl_CreateSolver( xIntFac, xCtx ); + uno::Reference<sheet::XSolver> xSolver( + xCFac->createInstanceWithContext(xCtx), uno::UNO_QUERY ); uno::Reference<sheet::XSolverDescription> xDesc( xSolver, uno::UNO_QUERY ); if ( xDesc.is() ) sDescription = xDesc->getComponentDescription(); @@ -128,10 +93,9 @@ uno::Reference<sheet::XSolver> ScSolverUtil::GetSolver( const OUString& rImplNam uno::Reference<uno::XComponentContext> xCtx( comphelper::getProcessComponentContext() ); - uno::Reference<lang::XMultiServiceFactory> xMSF( - xCtx->getServiceManager(), uno::UNO_QUERY_THROW ); - uno::Reference<container::XContentEnumerationAccess> xEnAc( xMSF, uno::UNO_QUERY ); + uno::Reference<container::XContentEnumerationAccess> xEnAc( + xCtx->getServiceManager(), uno::UNO_QUERY ); if ( xEnAc.is() ) { uno::Reference<container::XEnumeration> xEnum = @@ -141,23 +105,23 @@ uno::Reference<sheet::XSolver> ScSolverUtil::GetSolver( const OUString& rImplNam while ( xEnum->hasMoreElements() && !xSolver.is() ) { uno::Any aAny = xEnum->nextElement(); - uno::Reference<uno::XInterface> xIntFac; - aAny >>= xIntFac; - if ( xIntFac.is() ) + uno::Reference<lang::XServiceInfo> xInfo; + aAny >>= xInfo; + if ( xInfo.is() ) { - uno::Reference<lang::XServiceInfo> xInfo( xIntFac, uno::UNO_QUERY ); - if ( xInfo.is() ) + uno::Reference<lang::XSingleComponentFactory> xCFac( xInfo, uno::UNO_QUERY ); + if ( xCFac.is() ) { OUString sName = xInfo->getImplementationName(); if ( sName == rImplName ) - xSolver = lcl_CreateSolver( xIntFac, xCtx ); + xSolver.set( xCFac->createInstanceWithContext(xCtx), uno::UNO_QUERY ); } } } } } - OSL_ENSURE( xSolver.is(), "can't get solver" ); + SAL_WARN_IF( !xSolver.is(), "sc.ui", "can't get solver" ); return xSolver; } commit 527f5da2f051e32372d9d4d5e808bdf022d18840 Author: Matúš Kukan <[email protected]> Date: Fri Apr 4 14:10:42 2014 +0200 sccomp: Fix description of com.sun.star.comp.Calc.CoinMPSolver. Forgotten in 077bdc73f2bcd625be1030fa8ff630c3dbd83657 Change-Id: Iddf90f1107f05351754830b49344cb24db1e1089 diff --git a/sccomp/source/solver/CoinMPSolver.cxx b/sccomp/source/solver/CoinMPSolver.cxx index a7127e3..f1ee10b 100644 --- a/sccomp/source/solver/CoinMPSolver.cxx +++ b/sccomp/source/solver/CoinMPSolver.cxx @@ -44,6 +44,11 @@ private: { return OUString("com.sun.star.comp.Calc.CoinMPSolver"); } + virtual OUString SAL_CALL getComponentDescription() + throw (uno::RuntimeException, std::exception) SAL_OVERRIDE + { + return SolverComponent::GetResourceString( RID_COINMP_SOLVER_COMPONENT ); + } }; void SAL_CALL CoinMPSolver::solve() throw(uno::RuntimeException, std::exception) diff --git a/sccomp/source/solver/LpsolveSolver.cxx b/sccomp/source/solver/LpsolveSolver.cxx index a977f91..817152f 100644 --- a/sccomp/source/solver/LpsolveSolver.cxx +++ b/sccomp/source/solver/LpsolveSolver.cxx @@ -77,6 +77,11 @@ private: { return OUString("com.sun.star.comp.Calc.LpsolveSolver"); } + virtual OUString SAL_CALL getComponentDescription() + throw (uno::RuntimeException, std::exception) SAL_OVERRIDE + { + return SolverComponent::GetResourceString( RID_SOLVER_COMPONENT ); + } }; void SAL_CALL LpsolveSolver::solve() throw(uno::RuntimeException, std::exception) diff --git a/sccomp/source/solver/SolverComponent.cxx b/sccomp/source/solver/SolverComponent.cxx index bb20cfe..d84fbd4 100644 --- a/sccomp/source/solver/SolverComponent.cxx +++ b/sccomp/source/solver/SolverComponent.cxx @@ -139,11 +139,6 @@ uno::Reference<beans::XPropertySetInfo> SAL_CALL SolverComponent::getPropertySet // XSolverDescription -OUString SAL_CALL SolverComponent::getComponentDescription() throw (uno::RuntimeException, std::exception) -{ - return SolverComponent::GetResourceString( RID_SOLVER_COMPONENT ); -} - OUString SAL_CALL SolverComponent::getStatusDescription() throw (uno::RuntimeException, std::exception) { return maStatus; diff --git a/sccomp/source/solver/SolverComponent.hxx b/sccomp/source/solver/SolverComponent.hxx index 1d2ceed..b0f9a24 100644 --- a/sccomp/source/solver/SolverComponent.hxx +++ b/sccomp/source/solver/SolverComponent.hxx @@ -139,7 +139,7 @@ public: virtual void SAL_CALL solve() throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE = 0; // XSolverDescription - virtual OUString SAL_CALL getComponentDescription() throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + virtual OUString SAL_CALL getComponentDescription() throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE = 0; virtual OUString SAL_CALL getStatusDescription() throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; virtual OUString SAL_CALL getPropertyDescription( const OUString& aPropertyName ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
