summaryrefslogtreecommitdiff
path: root/framework/source/accelerators
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2014-01-21 15:45:43 +0100
committerJan Holesovsky <kendy@collabora.com>2014-01-21 21:25:22 +0100
commitf278397787f7b79cee8536e806e8b7113800f2ef (patch)
tree1760bce432d466cf9f3ca444c89ec8f44306ab04 /framework/source/accelerators
parent3780738154b8c3b3f9d85c64cccf621d97574886 (diff)
Change _get_implementation()'s not to do initialization directly.
Many of the initalizations (in eg. framework) have to be done on an acquire()'d object, so instead of doing the initialization directly, return the initialization member function back to the createInstance() / createInstanceWithContext() / ... and perform the initialization there. As a sideeffect, I belive the calling initialize() from servicemanager is not that much a hack any more - whoever converts the implementation to be constructor-base has the choice to provide the callback, or still initialize through XInitialization, where the callback is preferred by servicemanager when it exists. Change-Id: I8a87b75c54c1441ca0f184967d31ff4902fc4081
Diffstat (limited to 'framework/source/accelerators')
-rw-r--r--framework/source/accelerators/documentacceleratorconfiguration.cxx22
-rw-r--r--framework/source/accelerators/globalacceleratorconfiguration.cxx16
-rw-r--r--framework/source/accelerators/moduleacceleratorconfiguration.cxx36
3 files changed, 41 insertions, 33 deletions
diff --git a/framework/source/accelerators/documentacceleratorconfiguration.cxx b/framework/source/accelerators/documentacceleratorconfiguration.cxx
index be029dd46667..39c32b3584ec 100644
--- a/framework/source/accelerators/documentacceleratorconfiguration.cxx
+++ b/framework/source/accelerators/documentacceleratorconfiguration.cxx
@@ -68,8 +68,10 @@ public:
reference to an uno service manager, which is used internaly.
*/
DocumentAcceleratorConfiguration(
- const css::uno::Reference< css::uno::XComponentContext >& xContext,
- const css::uno::Sequence< css::uno::Any >& lArguments);
+ const css::uno::Reference< css::uno::XComponentContext >& xContext);
+
+ void SAL_CALL constructorInit(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments)
+ throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
virtual ~DocumentAcceleratorConfiguration();
@@ -112,10 +114,13 @@ private:
//-----------------------------------------------
DocumentAcceleratorConfiguration::DocumentAcceleratorConfiguration(
- const css::uno::Reference< css::uno::XComponentContext >& xContext,
- const css::uno::Sequence< css::uno::Any >& lArguments)
+ const css::uno::Reference< css::uno::XComponentContext >& xContext)
: DocumentAcceleratorConfiguration_BASE(xContext)
{
+}
+
+void DocumentAcceleratorConfiguration::constructorInit(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& lArguments) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException)
+{
WriteGuard aWriteLock(m_aLock);
css::uno::Reference<css::embed::XStorage> xRoot;
@@ -224,11 +229,12 @@ void DocumentAcceleratorConfiguration::impl_ts_clearCache()
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
com_sun_star_comp_framework_DocumentAcceleratorConfiguration_get_implementation(
css::uno::XComponentContext *context,
- css::uno::Sequence<css::uno::Any> const &arguments)
+ cppu::constructor_InitializationFunc &init_func)
{
- rtl::Reference<DocumentAcceleratorConfiguration> x(new DocumentAcceleratorConfiguration(context, arguments));
- x->acquire();
- return static_cast<cppu::OWeakObject *>(x.get());
+ // 2nd phase initialization needed
+ init_func = static_cast<cppu::constructor_InitializationFunc>(&DocumentAcceleratorConfiguration::constructorInit);
+
+ return static_cast<cppu::OWeakObject *>(new DocumentAcceleratorConfiguration(context));
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/accelerators/globalacceleratorconfiguration.cxx b/framework/source/accelerators/globalacceleratorconfiguration.cxx
index 261aa178ba55..697faaff35c7 100644
--- a/framework/source/accelerators/globalacceleratorconfiguration.cxx
+++ b/framework/source/accelerators/globalacceleratorconfiguration.cxx
@@ -81,7 +81,9 @@ public:
// XComponent
virtual void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException);
- void impl_ts_fillCache();
+ /// Initialization function after having acquire()'d.
+ void SAL_CALL constructorInit(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >&)
+ throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
private:
@@ -96,7 +98,7 @@ GlobalAcceleratorConfiguration::GlobalAcceleratorConfiguration(const css::uno::R
{
}
-void GlobalAcceleratorConfiguration::impl_ts_fillCache()
+void GlobalAcceleratorConfiguration::constructorInit(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >&) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException)
{
/** read all data into the cache. */
@@ -148,12 +150,12 @@ void SAL_CALL GlobalAcceleratorConfiguration::dispose()
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
com_sun_star_comp_framework_GlobalAcceleratorConfiguration_get_implementation(
css::uno::XComponentContext *context,
- css::uno::Sequence<css::uno::Any> const &)
+ cppu::constructor_InitializationFunc &init_func)
{
- rtl::Reference<GlobalAcceleratorConfiguration> x(new GlobalAcceleratorConfiguration(context));
- x->impl_ts_fillCache();
- x->acquire();
- return static_cast<cppu::OWeakObject *>(x.get());
+ // 2nd phase initialization needed
+ init_func = static_cast<cppu::constructor_InitializationFunc>(&GlobalAcceleratorConfiguration::constructorInit);
+
+ return static_cast<cppu::OWeakObject *>(new GlobalAcceleratorConfiguration(context));
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/accelerators/moduleacceleratorconfiguration.cxx b/framework/source/accelerators/moduleacceleratorconfiguration.cxx
index f19b91c291f2..731161615564 100644
--- a/framework/source/accelerators/moduleacceleratorconfiguration.cxx
+++ b/framework/source/accelerators/moduleacceleratorconfiguration.cxx
@@ -68,8 +68,7 @@ public:
reference to an uno service manager, which is used internaly.
*/
ModuleAcceleratorConfiguration(
- const css::uno::Reference< css::uno::XComponentContext >& xContext,
- const css::uno::Sequence< css::uno::Any >& lArguments);
+ const css::uno::Reference< css::uno::XComponentContext >& xContext);
/** TODO */
virtual ~ModuleAcceleratorConfiguration();
@@ -97,8 +96,9 @@ public:
// XComponent
virtual void SAL_CALL dispose() throw (css::uno::RuntimeException);
- /** read all data into the cache. */
- void impl_ts_fillCache();
+ /// Initialization function after having acquire()'d.
+ void SAL_CALL constructorInit(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >&)
+ throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
private:
/** helper to listen for configuration changes without ownership cycle problems */
@@ -106,10 +106,17 @@ private:
};
ModuleAcceleratorConfiguration::ModuleAcceleratorConfiguration(
- const css::uno::Reference< css::uno::XComponentContext >& xContext,
- const css::uno::Sequence< css::uno::Any >& lArguments)
+ const css::uno::Reference< css::uno::XComponentContext >& xContext)
: ModuleAcceleratorConfiguration_BASE(xContext)
{
+}
+
+ModuleAcceleratorConfiguration::~ModuleAcceleratorConfiguration()
+{
+}
+
+void ModuleAcceleratorConfiguration::constructorInit(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& lArguments) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException)
+{
WriteGuard aWriteLock(m_aLock);
OUString sModule;
@@ -129,14 +136,7 @@ ModuleAcceleratorConfiguration::ModuleAcceleratorConfiguration(
static_cast< ::cppu::OWeakObject* >(this));
aWriteLock.unlock();
-}
-ModuleAcceleratorConfiguration::~ModuleAcceleratorConfiguration()
-{
-}
-
-void ModuleAcceleratorConfiguration::impl_ts_fillCache()
-{
// SAFE -> ----------------------------------
ReadGuard aReadLock(m_aLock);
m_sModuleCFG = m_sModule;
@@ -192,12 +192,12 @@ void SAL_CALL ModuleAcceleratorConfiguration::dispose()
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
com_sun_star_comp_framework_ModuleAcceleratorConfiguration_get_implementation(
css::uno::XComponentContext *context,
- css::uno::Sequence<css::uno::Any> const &arguments)
+ cppu::constructor_InitializationFunc &init_func)
{
- rtl::Reference<ModuleAcceleratorConfiguration> x(new ModuleAcceleratorConfiguration(context, arguments));
- x->impl_ts_fillCache();
- x->acquire();
- return static_cast<cppu::OWeakObject *>(x.get());
+ // 2nd phase initialization needed
+ init_func = static_cast<cppu::constructor_InitializationFunc>(&ModuleAcceleratorConfiguration::constructorInit);
+
+ return static_cast<cppu::OWeakObject *>(new ModuleAcceleratorConfiguration(context));
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */