summaryrefslogtreecommitdiff
path: root/extensions/source
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2020-07-23 16:02:52 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-07-23 19:58:17 +0200
commitdc1ba0e22be772724e8a1922fbdcdc58f4fc3472 (patch)
treedef73fd2b18679f310004a69b1c2d4cb7e463d08 /extensions/source
parent37587df6242e232f27b31e3dd6ade29aa6cf2555 (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.component5
-rw-r--r--extensions/source/update/feed/updatefeed.cxx89
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: */