summaryrefslogtreecommitdiff
path: root/cppuhelper
diff options
context:
space:
mode:
authorHenry Castro <hcastro@collabora.com>2015-09-07 17:17:22 -0400
committerTor Lillqvist <tml@collabora.com>2016-02-15 22:23:19 +0200
commit8d7f29a933b62ffd754c6a0f05d25e55b8646e74 (patch)
tree919b7a9fc955a3281ebe904502c67dbba63a06f7 /cppuhelper
parent6b41b89cc51b65fe3aa69099638ec4432782886a (diff)
Re-work cppu::preInitBootstrap()
In the preinit stage, the preInitBootstrap is called to load implementations for each service registered by the service manager. All service requests are: initial Component Context and the process service factory is set. However, some services require that VCL is properly initialized. Change-Id: Ib116e3da172b860f2df4d672f6181b5de0b7e6b2
Diffstat (limited to 'cppuhelper')
-rw-r--r--cppuhelper/source/defaultbootstrap.cxx27
-rw-r--r--cppuhelper/source/gcc3.map2
2 files changed, 18 insertions, 11 deletions
diff --git a/cppuhelper/source/defaultbootstrap.cxx b/cppuhelper/source/defaultbootstrap.cxx
index c0a2c2edc6f7..9ff68e1cbae2 100644
--- a/cppuhelper/source/defaultbootstrap.cxx
+++ b/cppuhelper/source/defaultbootstrap.cxx
@@ -109,18 +109,25 @@ cppu::defaultBootstrap_InitialComponentContext()
}
void
-cppu::preInitBootstrap()
+cppu::preInitBootstrap(css::uno::Reference< css::uno::XComponentContext > const & xContext)
{
- rtl::OUString iniUri(getUnoIniUri());
- rtl::Bootstrap bs(iniUri);
- if (bs.getHandle() == nullptr)
- throw css::uno::DeploymentException("Cannot open uno ini " + iniUri);
+ if (!xContext.is())
+ throw css::uno::DeploymentException("preInit: XComponentContext is not created");
+
+ css::uno::Reference< css::uno::XInterface > xService;
+ xContext->getValueByName("/singletons/com.sun.star.lang.theServiceManager") >>= xService;
+ if (!xService.is())
+ throw css::uno::DeploymentException("preInit: XMultiComponentFactory is not created");
+
+ rtl::Reference<cppuhelper::ServiceManager> aService(reinterpret_cast<cppuhelper::ServiceManager*>(xService.get()));
- // create the service manager
- rtl::Reference< cppuhelper::ServiceManager > aManager(new cppuhelper::ServiceManager);
- // read rdb files
- aManager->init(getBootstrapVariable(bs, "UNO_SERVICES"));
- aManager->loadAllImplementations();
+ // pre-requisites:
+ // In order to load implementations and invoke
+ // component factory it is required:
+ // 1) defaultBootstrap_InitialComponentContext()
+ // 2) comphelper::setProcessServiceFactory(xSFactory);
+ // 3) InitVCL()
+ aService->loadAllImplementations();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cppuhelper/source/gcc3.map b/cppuhelper/source/gcc3.map
index 20d0e137eef6..658b3ca2b981 100644
--- a/cppuhelper/source/gcc3.map
+++ b/cppuhelper/source/gcc3.map
@@ -439,5 +439,5 @@ GLIBCXX_3.4 {
PRIVATE_1.0 { # LibO 5.2
global:
- _ZN4cppu16preInitBootstrapEv;
+ _ZN4cppu16preInitBootstrapERKN3com3sun4star3uno9ReferenceINS3_17XComponentContextEEE;
};