diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-07-23 16:02:52 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-07-23 19:58:17 +0200 |
commit | dc1ba0e22be772724e8a1922fbdcdc58f4fc3472 (patch) | |
tree | def73fd2b18679f310004a69b1c2d4cb7e463d08 /extensions/source | |
parent | 37587df6242e232f27b31e3dd6ade29aa6cf2555 (diff) |
extensions/updatefeed: create instances with uno constructors
See tdf#74608 for motivation.
Change-Id: I1e0303f3fa6295de1f1970bcf8da1edbabb330d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99323
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'extensions/source')
-rw-r--r-- | extensions/source/update/feed/updatefeed.component | 5 | ||||
-rw-r--r-- | extensions/source/update/feed/updatefeed.cxx | 89 |
2 files changed, 24 insertions, 70 deletions
diff --git a/extensions/source/update/feed/updatefeed.component b/extensions/source/update/feed/updatefeed.component index f53977ac5330..83e30a8c2455 100644 --- a/extensions/source/update/feed/updatefeed.component +++ b/extensions/source/update/feed/updatefeed.component @@ -18,8 +18,9 @@ --> <component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@" - prefix="updatefeed" xmlns="http://openoffice.org/2010/uno-components"> - <implementation name="vnd.sun.UpdateInformationProvider"> + xmlns="http://openoffice.org/2010/uno-components"> + <implementation name="vnd.sun.UpdateInformationProvider" + constructor="extensions_update_UpdateInformationProvider_get_implementation"> <service name="com.sun.star.deployment.UpdateInformationProvider"/> </implementation> </component> diff --git a/extensions/source/update/feed/updatefeed.cxx b/extensions/source/update/feed/updatefeed.cxx index 182c3ffa5483..08ca0429203b 100644 --- a/extensions/source/update/feed/updatefeed.cxx +++ b/extensions/source/update/feed/updatefeed.cxx @@ -120,11 +120,6 @@ class UpdateInformationProvider : OUString getUserAgent(bool bExtended); bool isUserAgentExtended() const; public: - static uno::Reference< uno::XInterface > createInstance(const uno::Reference<uno::XComponentContext>& xContext); - - static uno::Sequence< OUString > getServiceNames(); - static OUString getImplName(); - uno::Reference< xml::dom::XElement > getDocumentRoot(const uno::Reference< xml::dom::XNode >& rxNode); uno::Reference< xml::dom::XNode > getChildNode(const uno::Reference< xml::dom::XNode >& rxNode, const OUString& rName); @@ -161,6 +156,11 @@ public: virtual sal_Bool SAL_CALL supportsService(OUString const & serviceName) override; virtual uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; + UpdateInformationProvider(const uno::Reference<uno::XComponentContext>& xContext, + const uno::Reference< ucb::XUniversalContentBroker >& xUniversalContentBroker, + const uno::Reference< xml::dom::XDocumentBuilder >& xDocumentBuilder, + const uno::Reference< xml::xpath::XXPathAPI >& xXPathAPI); + protected: virtual ~UpdateInformationProvider() override; @@ -173,11 +173,6 @@ private: void storeCommandInfo( sal_Int32 nCommandId, uno::Reference< ucb::XCommandProcessor > const & rxCommandProcessor); - UpdateInformationProvider(const uno::Reference<uno::XComponentContext>& xContext, - const uno::Reference< ucb::XUniversalContentBroker >& xUniversalContentBroker, - const uno::Reference< xml::dom::XDocumentBuilder >& xDocumentBuilder, - const uno::Reference< xml::xpath::XXPathAPI >& xXPathAPI); - const uno::Reference< uno::XComponentContext> m_xContext; const uno::Reference< ucb::XUniversalContentBroker > m_xUniversalContentBroker; @@ -394,22 +389,6 @@ uno::Sequence< beans::StringPair > SAL_CALL UpdateInformationProvider::getUserRe return aPair; }; -uno::Reference< uno::XInterface > -UpdateInformationProvider::createInstance(const uno::Reference<uno::XComponentContext>& xContext) -{ - uno::Reference< ucb::XUniversalContentBroker > xUniversalContentBroker = - ucb::UniversalContentBroker::create(xContext); - - uno::Reference< xml::dom::XDocumentBuilder > xDocumentBuilder( - xml::dom::DocumentBuilder::create(xContext)); - - uno::Reference< xml::xpath::XXPathAPI > xXPath = xml::xpath::XPathAPI::create( xContext ); - - xXPath->registerNS( "atom", "http://www.w3.org/2005/Atom" ); - - return *new UpdateInformationProvider(xContext, xUniversalContentBroker, xDocumentBuilder, xXPath); -} - UpdateInformationProvider::~UpdateInformationProvider() { } @@ -729,32 +708,18 @@ UpdateInformationProvider::getInteractionHandler() } -uno::Sequence< OUString > -UpdateInformationProvider::getServiceNames() -{ - uno::Sequence< OUString > aServiceList { "com.sun.star.deployment.UpdateInformationProvider" }; - return aServiceList; -}; - - -OUString -UpdateInformationProvider::getImplName() -{ - return "vnd.sun.UpdateInformationProvider"; -} - OUString SAL_CALL UpdateInformationProvider::getImplementationName() { - return getImplName(); + return "vnd.sun.UpdateInformationProvider"; } uno::Sequence< OUString > SAL_CALL UpdateInformationProvider::getSupportedServiceNames() { - return getServiceNames(); + return { "com.sun.star.deployment.UpdateInformationProvider" }; } sal_Bool SAL_CALL @@ -765,35 +730,23 @@ UpdateInformationProvider::supportsService( OUString const & serviceName ) } // anonymous namespace - -static uno::Reference<uno::XInterface> -createInstance(uno::Reference<uno::XComponentContext> const & xContext) +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +extensions_update_UpdateInformationProvider_get_implementation( + css::uno::XComponentContext* xContext , css::uno::Sequence<css::uno::Any> const&) { - return UpdateInformationProvider::createInstance(xContext); -} + uno::Reference< ucb::XUniversalContentBroker > xUniversalContentBroker = + ucb::UniversalContentBroker::create(xContext); + uno::Reference< xml::dom::XDocumentBuilder > xDocumentBuilder( + xml::dom::DocumentBuilder::create(xContext)); -const cppu::ImplementationEntry kImplementations_entries[] = -{ - { - createInstance, - UpdateInformationProvider::getImplName, - UpdateInformationProvider::getServiceNames, - cppu::createSingleComponentFactory, - nullptr, - 0 - }, - { nullptr, nullptr, nullptr, nullptr, nullptr, 0 } -} ; - - -extern "C" SAL_DLLPUBLIC_EXPORT void * updatefeed_component_getFactory(const char *pszImplementationName, void *pServiceManager, void *pRegistryKey) -{ - return cppu::component_getFactoryHelper( - pszImplementationName, - pServiceManager, - pRegistryKey, - kImplementations_entries) ; + uno::Reference< xml::xpath::XXPathAPI > xXPath = xml::xpath::XPathAPI::create( xContext ); + + xXPath->registerNS( "atom", "http://www.w3.org/2005/Atom" ); + + return cppu::acquire( + new UpdateInformationProvider(xContext, xUniversalContentBroker, xDocumentBuilder, xXPath)); } + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |