diff options
Diffstat (limited to 'cppuhelper/inc/cppuhelper/bootstrap.hxx')
-rw-r--r-- | cppuhelper/inc/cppuhelper/bootstrap.hxx | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/cppuhelper/inc/cppuhelper/bootstrap.hxx b/cppuhelper/inc/cppuhelper/bootstrap.hxx new file mode 100644 index 000000000000..0101214af3fc --- /dev/null +++ b/cppuhelper/inc/cppuhelper/bootstrap.hxx @@ -0,0 +1,223 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _CPPUHELPER_BOOTSTRAP_HXX_ +#define _CPPUHELPER_BOOTSTRAP_HXX_ + +#include "sal/config.h" +#include "com/sun/star/uno/Exception.hpp" +#include "com/sun/star/uno/Reference.hxx" +#include "rtl/ustring.hxx" +#include "sal/types.h" + +namespace com { namespace sun { namespace star { + namespace container { class XHierarchicalNameAccess; } + namespace registry { class XSimpleRegistry; } + namespace uno { class XComponentContext; } +} } } + +namespace cppu +{ + +/** Creates a simple registry service instance. + + @rBootstrapPath optional bootstrap 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 bootstrap 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 a 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 a 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) + @param rBootstrapPath optional bootstrap 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) ); + + +/** Bootstraps an initial component context with service manager upon default types and + services 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) + + This function tries to find its parameters via these bootstrap variables: + + - UNO_TYPES -- a space separated list of file urls of type rdbs + - UNO_SERVICES -- a space separated list of file urls of service rdbs + - UNO_WRITERDB -- a file url of a write rdb (e.g. user.rdb) + + Please look at http://udk.openoffice.org/common/man/concept/uno_default_bootstrapping.html + for further info. + + @return component context +*/ +::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > SAL_CALL +defaultBootstrap_InitialComponentContext() SAL_THROW( (::com::sun::star::uno::Exception) ); + + +/** Bootstraps an initial component context with service manager upon default types and + services 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) + + This function tries to find its parameters via these bootstrap variables: + + - UNO_TYPES -- a space separated list of file urls of type rdbs + - UNO_SERVICES -- a space separated list of file urls of service rdbs + - UNO_WRITERDB -- a file url of a write rdb (e.g. user.rdb) + + Please look at http://udk.openoffice.org/common/man/concept/uno_default_bootstrapping.html + for further info. + + @param iniFile ini filename to get bootstrap variables + @return component context +*/ +::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > SAL_CALL +defaultBootstrap_InitialComponentContext(const ::rtl::OUString & iniFile) SAL_THROW( (::com::sun::star::uno::Exception) ); + +/** + * An exception indicating a bootstrap error. + * + * @since UDK 3.2.0 + */ +class BootstrapException +{ +public: + /** + * Constructs a BootstrapException. + */ + BootstrapException(); + + /** + * Constructs a BootstrapException with the specified detail message. + * + * @param rMessage + * A message containing any details about the exception. + */ + BootstrapException( const ::rtl::OUString & rMessage ); + + /** + * Copy constructs a BootstrapException. + */ + BootstrapException( const BootstrapException & e ); + + /** + * Destructs a BootstrapException. + */ + virtual ~BootstrapException(); + + /** + * Assigns a BootstrapException. + */ + BootstrapException & operator=( const BootstrapException & e ); + + /** Gets the message. + + @return + A reference to the message. The reference is valid for the lifetime of + this BootstrapException. + */ + const ::rtl::OUString & getMessage() const; + +private: + ::rtl::OUString m_aMessage; +}; + +/** + * Bootstraps the component context from a UNO installation. + * + * @return a bootstrapped component context + * @exception BootstrapException + * Thrown in case bootstrap() signals an exception due to a + * bootstrap error. + * + * @since UDK 3.2.0 + */ +::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > +SAL_CALL bootstrap(); + +/** + * Helper function to expand vnd.sun.star.expand URLs in contexts where no + * properly bootstrapped UNO is (yet) available. + * + * @internal + * + * @param uri + * Some URI (but not a URI reference). + * + * @return + * If uri is a vnd.sun.star.expand URL, then the expansion of that URL is + * returned; expansion may lead to a string that is not a legal URI. Otherwise, + * the uri is returned unchanged. + * + * @exception com::sun::star::lang::IllegalArgumentException + * If uri is a vnd.sun.star.expand URL that contains unknown macros. + * + * @since UDK 3.2.8 + */ +::rtl::OUString +SAL_CALL bootstrap_expandUri(::rtl::OUString const & uri); + +} // end namespace cppu + +#endif |