blob: d6f18e6108832e10ee6f0f2cf5266fee6759da1f [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the 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