summaryrefslogtreecommitdiff
path: root/stoc/source/servicemanager
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2003-03-27 11:01:26 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2003-03-27 11:01:26 +0000
commit414c097c65bb7925eef9ddc158b112228b49ed12 (patch)
treede9571ec116da8f9a4c0033c55a7ad6c4fb890c5 /stoc/source/servicemanager
parent45bb07d39bdd63e741b4fe692a3a0d421a642a79 (diff)
MWS_SRX644: migrate branch mws_srx644 -> HEAD
Diffstat (limited to 'stoc/source/servicemanager')
-rw-r--r--stoc/source/servicemanager/servicemanager.cxx80
1 files changed, 57 insertions, 23 deletions
diff --git a/stoc/source/servicemanager/servicemanager.cxx b/stoc/source/servicemanager/servicemanager.cxx
index 373cb6c386a1..c4b746a4def1 100644
--- a/stoc/source/servicemanager/servicemanager.cxx
+++ b/stoc/source/servicemanager/servicemanager.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: servicemanager.cxx,v $
*
- * $Revision: 1.19 $
+ * $Revision: 1.20 $
*
- * last change: $Author: dbo $ $Date: 2002-11-15 14:09:45 $
+ * last change: $Author: hr $ $Date: 2003-03-27 12:01:19 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -661,6 +661,9 @@ public:
// XContentEnumerationAccess
//Sequence< OUString > getAvailableServiceNames() throw( (Exception) );
virtual Reference<XEnumeration > SAL_CALL createContentEnumeration(const OUString& aServiceName) throw(::com::sun::star::uno::RuntimeException);
+ virtual Reference<XEnumeration > SAL_CALL createContentEnumeration(
+ const OUString& aServiceName, Reference< XComponentContext > const & xContext )
+ throw(::com::sun::star::uno::RuntimeException);
// XComponent
virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
@@ -683,10 +686,12 @@ public:
protected:
inline void check_undisposed() const SAL_THROW( (lang::DisposedException) );
+ virtual void SAL_CALL disposing();
sal_Bool haveFactoryWithThisImplementation(const OUString& aImplName);
- virtual Sequence< Reference< XInterface > > queryServiceFactories(const OUString& aServiceName);
+ virtual Sequence< Reference< XInterface > > queryServiceFactories(
+ const OUString& aServiceName, Reference< XComponentContext > const & xContext );
Reference< XComponentContext > m_xContext;
@@ -809,7 +814,7 @@ public:
// XContentEnumerationAccess
//Sequence< OUString > getAvailableServiceNames() throw( (Exception) );
virtual Reference<XEnumeration > SAL_CALL createContentEnumeration(const OUString& aServiceName) throw (RuntimeException)
- { return getRoot()->createContentEnumeration( aServiceName ); }
+ { return getRoot()->createContentEnumeration( aServiceName, m_xContext ); }
// XPropertySet
Reference<XPropertySetInfo > SAL_CALL getPropertySetInfo() throw (RuntimeException)
@@ -1077,7 +1082,10 @@ void OServiceManager::dispose()
if (rBHelper.bDisposed || rBHelper.bInDispose)
return;
t_OServiceManager_impl::dispose();
+}
+void OServiceManager::disposing()
+{
// dispose all factories
HashSet_Ref aImpls;
{
@@ -1287,7 +1295,8 @@ Reference< XInterface > OServiceManager::createInstanceWithContext(
}
#endif
- Sequence< Reference< XInterface > > factories( queryServiceFactories( rServiceSpecifier ) );
+ Sequence< Reference< XInterface > > factories(
+ queryServiceFactories( rServiceSpecifier, xContext ) );
Reference< XInterface > const * p = factories.getConstArray();
for ( sal_Int32 nPos = 0; nPos < factories.getLength(); ++nPos )
{
@@ -1348,7 +1357,8 @@ Reference< XInterface > OServiceManager::createInstanceWithArgumentsAndContext(
}
#endif
- Sequence< Reference< XInterface > > factories( queryServiceFactories( rServiceSpecifier ) );
+ Sequence< Reference< XInterface > > factories(
+ queryServiceFactories( rServiceSpecifier, xContext ) );
Reference< XInterface > const * p = factories.getConstArray();
for ( sal_Int32 nPos = 0; nPos < factories.getLength(); ++nPos )
{
@@ -1456,7 +1466,7 @@ Sequence< OUString > OServiceManager::getSupportedServiceNames()
Sequence< Reference< XInterface > > OServiceManager::queryServiceFactories(
- const OUString& aServiceName )
+ const OUString& aServiceName, Reference< XComponentContext > const & xContext )
{
Sequence< Reference< XInterface > > ret;
@@ -1493,17 +1503,24 @@ Sequence< Reference< XInterface > > OServiceManager::queryServiceFactories(
}
// XContentEnumerationAccess
-Reference<XEnumeration > OServiceManager::createContentEnumeration(const OUString& aServiceName)
+Reference<XEnumeration > OServiceManager::createContentEnumeration(
+ const OUString& aServiceName, Reference< XComponentContext > const & xContext )
throw(::com::sun::star::uno::RuntimeException)
{
check_undisposed();
Sequence< Reference< XInterface > > factories(
- OServiceManager::queryServiceFactories( aServiceName ) );
+ OServiceManager::queryServiceFactories( aServiceName, xContext ) );
if (factories.getLength())
return new ServiceEnumeration_Impl( factories );
else
return Reference< XEnumeration >();
}
+Reference<XEnumeration > OServiceManager::createContentEnumeration(
+ const OUString& aServiceName )
+ throw(::com::sun::star::uno::RuntimeException)
+{
+ return createContentEnumeration( aServiceName, m_xContext );
+}
// XEnumeration
Reference<XEnumeration > OServiceManager::createEnumeration() throw(::com::sun::star::uno::RuntimeException)
@@ -1696,6 +1713,9 @@ public:
// XContentEnumerationAccess
//Sequence< OUString > getAvailableServiceNames() throw( (Exception) );
Reference<XEnumeration > SAL_CALL createContentEnumeration(const OUString& aServiceName) throw(::com::sun::star::uno::RuntimeException);
+ virtual Reference<XEnumeration > SAL_CALL createContentEnumeration(
+ const OUString& aServiceName, Reference< XComponentContext > const & xContext )
+ throw(::com::sun::star::uno::RuntimeException);
// XComponent
void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
@@ -1708,12 +1728,15 @@ public:
protected:
//OServiceManager
- Sequence< Reference< XInterface > > queryServiceFactories(const OUString& aServiceName);
+ Sequence< Reference< XInterface > > queryServiceFactories(
+ const OUString& aServiceName, Reference< XComponentContext > const & xContext );
private:
Reference<XRegistryKey > getRootKey();
- Reference<XInterface > loadWithImplementationName( const OUString & rImplName );
+ Reference<XInterface > loadWithImplementationName(
+ const OUString & rImplName, Reference< XComponentContext > const & xContext );
Sequence<OUString> getFromServiceName(const OUString& serviceName);
- Reference<XInterface > loadWithServiceName( const OUString & rImplName );
+ Reference<XInterface > loadWithServiceName(
+ const OUString & rImplName, Reference< XComponentContext > const & xContext );
void fillAllNamesFromRegistry( HashSet_OWString & );
sal_Bool m_searchedRegistry;
@@ -1792,7 +1815,7 @@ Reference<XRegistryKey > ORegistryServiceManager::getRootKey()
* Create a service provider from the registry with an implementation name
*/
Reference<XInterface > ORegistryServiceManager::loadWithImplementationName(
- const OUString& name )
+ const OUString& name, Reference< XComponentContext > const & xContext )
{
Reference<XInterface > ret;
@@ -1807,7 +1830,10 @@ Reference<XInterface > ORegistryServiceManager::loadWithImplementationName(
if( xImpKey.is() )
{
- ret = createSingleRegistryFactory( this, name, xImpKey );
+ ret = createSingleRegistryFactory(
+ Reference< lang::XMultiServiceFactory >(
+ xContext->getServiceManager(), UNO_QUERY_THROW ),
+ name, xImpKey );
insert( makeAny( ret ) );
// Remember this factory as loaded in contrast to inserted ( XSet::insert)
// factories. Those loaded factories in this set are candidates for being
@@ -1838,12 +1864,13 @@ Sequence<OUString> ORegistryServiceManager::getFromServiceName(
* Create a service provider from the registry
*/
Reference<XInterface > ORegistryServiceManager::loadWithServiceName(
- const OUString& serviceName )
+ const OUString& serviceName, Reference< XComponentContext > const & xContext )
{
Sequence<OUString> implEntries = getFromServiceName( serviceName );
for (sal_Int32 i = 0; i < implEntries.getLength(); i++)
{
- Reference< XInterface > x( loadWithImplementationName( implEntries.getConstArray()[i] ) );
+ Reference< XInterface > x(
+ loadWithImplementationName( implEntries.getConstArray()[i], xContext ) );
if (x.is())
return x;
}
@@ -1922,10 +1949,10 @@ Sequence< OUString > ORegistryServiceManager::getSupportedServiceNames()
// OServiceManager
Sequence< Reference< XInterface > > ORegistryServiceManager::queryServiceFactories(
- const OUString& aServiceName )
+ const OUString& aServiceName, Reference< XComponentContext > const & xContext )
{
Sequence< Reference< XInterface > > ret(
- OServiceManager::queryServiceFactories( aServiceName ) );
+ OServiceManager::queryServiceFactories( aServiceName, xContext ) );
if (ret.getLength())
{
return ret;
@@ -1933,15 +1960,16 @@ Sequence< Reference< XInterface > > ORegistryServiceManager::queryServiceFactori
else
{
MutexGuard aGuard( m_mutex );
- Reference< XInterface > x( loadWithServiceName( aServiceName ) );
+ Reference< XInterface > x( loadWithServiceName( aServiceName, xContext ) );
if (! x.is())
- x = loadWithImplementationName( aServiceName );
+ x = loadWithImplementationName( aServiceName, xContext );
return Sequence< Reference< XInterface > >( &x, 1 );
}
}
// XContentEnumerationAccess
-Reference<XEnumeration > ORegistryServiceManager::createContentEnumeration(const OUString& aServiceName)
+Reference<XEnumeration > ORegistryServiceManager::createContentEnumeration(
+ const OUString& aServiceName, Reference< XComponentContext > const & xContext )
throw(::com::sun::star::uno::RuntimeException)
{
check_undisposed();
@@ -1956,11 +1984,17 @@ Reference<XEnumeration > ORegistryServiceManager::createContentEnumeration(const
aImplName = aImpls.getConstArray()[i];
if ( !haveFactoryWithThisImplementation(aImplName) )
{
- loadWithImplementationName( aImplName );
+ loadWithImplementationName( aImplName, xContext );
}
}
// call the superclass to enumerate all contents
- return OServiceManager::createContentEnumeration( aServiceName );
+ return OServiceManager::createContentEnumeration( aServiceName, xContext );
+}
+Reference<XEnumeration > ORegistryServiceManager::createContentEnumeration(
+ const OUString& aServiceName )
+ throw(::com::sun::star::uno::RuntimeException)
+{
+ return createContentEnumeration( aServiceName, m_xContext );
}
// OServiceManager