added bootstrap helpers

This commit is contained in:
Daniel Boelzle
2001-05-09 13:00:29 +00:00
parent dc7a5acf17
commit e562db87f0
2 changed files with 144 additions and 7 deletions

View File

@@ -0,0 +1,121 @@
/*************************************************************************
*
* $RCSfile: bootstrap.hxx,v $
*
* $Revision: 1.1 $
*
* last change: $Author: dbo $ $Date: 2001-05-09 14:00:27 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#ifndef _CPPUHELPER_BOOTSTRAP_HXX_
#define _CPPUHELPER_BOOTSTRAP_HXX_
#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
#include <com/sun/star/registry/XSimpleRegistry.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
namespace cppu
{
/** Creates a simple registry service instance.
@rBootstrapPath optional boot strap path for initial components
@return simple registry service instance
*/
::com::sun::star::uno::Reference< ::com::sun::star::registry::XSimpleRegistry >
SAL_CALL createSimpleRegistry(
const ::rtl::OUString & rBootstrapPath = ::rtl::OUString() )
SAL_THROW( () );
/** Creates a nested registry service instance.
@rBootstrapPath optional boot strap path for initial components
@return nested registry service instance
*/
::com::sun::star::uno::Reference< ::com::sun::star::registry::XSimpleRegistry >
SAL_CALL createNestedRegistry(
const ::rtl::OUString & rBootstrapPath = ::rtl::OUString() )
SAL_THROW( () );
/** Installs type description manager instance, i.e. registers callback at cppu core.
@param xTDMgr manager instance
@return true, if successfully registered
*/
sal_Bool SAL_CALL installTypeDescriptionManager(
::com::sun::star::uno::Reference< ::com::sun::star::container::XHierarchicalNameAccess > const & xTDMgr )
SAL_THROW( () );
/** Bootstraps an initial component context with service manager upon given registry.
This includes insertion of initial services:
(registry) service manager, shared lib loader,
simple registry, nested registry,
implementation registration
registry typedescription provider, typedescription manager (also installs it into cppu core)
@param xRegistry registry for service manager and singleton objects of context (may be null)
@rBootstrapPath optional boot strap path for initial components
@return component context
*/
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > SAL_CALL
bootstrap_InitialComponentContext(
::com::sun::star::uno::Reference< ::com::sun::star::registry::XSimpleRegistry > const & xRegistry,
::rtl::OUString const & rBootstrapPath = ::rtl::OUString() )
SAL_THROW( (::com::sun::star::uno::Exception) );
} // end namespace cppu
#endif

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: component_context.cxx,v $
*
* $Revision: 1.1 $
* $Revision: 1.2 $
*
* last change: $Author: dbo $ $Date: 2001-05-08 15:56:02 $
* last change: $Author: dbo $ $Date: 2001-05-09 14:00:29 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -241,20 +241,29 @@ ComponentContext::~ComponentContext()
//__________________________________________________________________________________________________
void ComponentContext::disposing()
{
MutexGuard aGuard( m_mutex );
for ( t_map::const_iterator iPos( m_map.begin() ); iPos != m_map.end(); ++iPos )
// dispose all context objects
t_map::const_iterator iPos( m_map.begin() );
for ( ; iPos != m_map.end(); ++iPos )
{
ContextEntry * pEntry = iPos->second;
Reference< lang::XComponent > xComp;
pEntry->value >>= xComp;
delete pEntry;
if (pEntry->bLateInitService)
{
// may be in late init
MutexGuard aGuard( m_mutex );
pEntry->value >>= xComp;
}
else
{
pEntry->value >>= xComp;
}
if (xComp.is())
{
xComp->dispose();
}
}
m_map.clear();
// dispose service manager
Reference< lang::XComponent > xComp( m_xSMgr, UNO_QUERY );
@@ -262,6 +271,13 @@ void ComponentContext::disposing()
{
xComp->dispose();
}
// everything is disposed, hopefully nobody accesses the context anymore...
for ( iPos = m_map.begin(); iPos != m_map.end(); ++iPos )
{
delete iPos->second;
}
m_map.clear();
}
//__________________________________________________________________________________________________
ComponentContext::ComponentContext(