diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2012-12-21 13:48:07 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2012-12-21 15:56:44 +0100 |
commit | f3051abde54e7a0bc3e2d184e31ac011e96d3e6b (patch) | |
tree | 3144aeb3b6acf6a0b49b4e739c067fd577d65b14 /cppuhelper | |
parent | b1959dbfadc7483a8e4601310e327beed3c56dc6 (diff) |
API CHANGE: Remove deprecated cppuhelper/servicefactory.hxx and Java equiv.
... com.sun.star.comp.helper.RegistryServiceFactory (juh.jar). Superseded by
default bootstrap mechanisms.
An aborting stub for non-inline cppu::createRegistryServiceFactory is left in
cppuhelper/srouce/compat.cxx to avoid having to incompatibly change
cppuhelper/soruce/gcc3.map.
Change-Id: I590e50b8f57e86d4bb3e00d157c9e5907c02f267
Diffstat (limited to 'cppuhelper')
-rw-r--r-- | cppuhelper/Package_inc.mk | 1 | ||||
-rw-r--r-- | cppuhelper/inc/cppuhelper/servicefactory.hxx | 116 | ||||
-rw-r--r-- | cppuhelper/source/compat.cxx | 8 | ||||
-rw-r--r-- | cppuhelper/source/servicefactory.cxx | 339 |
4 files changed, 8 insertions, 456 deletions
diff --git a/cppuhelper/Package_inc.mk b/cppuhelper/Package_inc.mk index fb0688740214..af5a823c1d49 100644 --- a/cppuhelper/Package_inc.mk +++ b/cppuhelper/Package_inc.mk @@ -74,7 +74,6 @@ $(eval $(call gb_Package_add_file,cppuhelper_inc,inc/cppuhelper/propshlp.hxx,cpp $(eval $(call gb_Package_add_file,cppuhelper_inc,inc/cppuhelper/proptypehlp.h,cppuhelper/proptypehlp.h)) $(eval $(call gb_Package_add_file,cppuhelper_inc,inc/cppuhelper/proptypehlp.hxx,cppuhelper/proptypehlp.hxx)) $(eval $(call gb_Package_add_file,cppuhelper_inc,inc/cppuhelper/queryinterface.hxx,cppuhelper/queryinterface.hxx)) -$(eval $(call gb_Package_add_file,cppuhelper_inc,inc/cppuhelper/servicefactory.hxx,cppuhelper/servicefactory.hxx)) $(eval $(call gb_Package_add_file,cppuhelper_inc,inc/cppuhelper/shlib.hxx,cppuhelper/shlib.hxx)) $(eval $(call gb_Package_add_file,cppuhelper_inc,inc/cppuhelper/supportsservice.hxx,cppuhelper/supportsservice.hxx)) $(eval $(call gb_Package_add_file,cppuhelper_inc,inc/cppuhelper/typeprovider.hxx,cppuhelper/typeprovider.hxx)) diff --git a/cppuhelper/inc/cppuhelper/servicefactory.hxx b/cppuhelper/inc/cppuhelper/servicefactory.hxx deleted file mode 100644 index c52c42474aac..000000000000 --- a/cppuhelper/inc/cppuhelper/servicefactory.hxx +++ /dev/null @@ -1,116 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * 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 . - */ -#ifndef _CPPUHELPER_SERVICEFACTORY_HXX_ -#define _CPPUHELPER_SERVICEFACTORY_HXX_ - -#include <rtl/ustring.hxx> - -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/lang/XMultiComponentFactory.hpp> -#include "cppuhelperdllapi.h" - - -namespace cppu -{ - -/** Deprecated. Use cppuhelper/bootstrap.hxx functions instead. - - This bootstraps an initial service factory working on a registry. If the first or both - parameters contain a value then the service factory is initialized with a simple registry - or a nested registry. Otherwise the service factory must be initialized later with a valid - registry. - - @param rWriteRegistryFile - file name of the simple registry or the first registry file of - the nested registry which will be opened with read/write rights. This - file will be created if necessary. - @param rReadRegistryFile - file name of the second registry file of the nested registry - which will be opened with readonly rights. - @param bReadOnly - flag which specify that the first registry file will be opened with - readonly rights. Default is FALSE. If this flag is used the registry - will not be created if not exist. - @param rBootstrapPath - specifies a path where the bootstrap components could be find. If this - parameter is an empty string the compoents will be searched in the system - path. - @deprecated -*/ -CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > -SAL_CALL createRegistryServiceFactory( - const ::rtl::OUString & rWriteRegistryFile, - const ::rtl::OUString & rReadRegistryFile, - sal_Bool bReadOnly = sal_False, - const ::rtl::OUString & rBootstrapPath = ::rtl::OUString() ) - SAL_THROW( (::com::sun::star::uno::Exception) ); - - -/** Deprecated. Use cppuhelper/bootstrap.hxx functions instead. - - This bootstraps an initial service factory working on a registry file. - - @param rRegistryFile - file name of the registry to use/ create; if this is an empty - string, the default registry is used instead - @param bReadOnly - flag which specify that the registry file will be opened with - readonly rights. Default is FALSE. If this flag is used the registry - will not be created if not exist. - @param rBootstrapPath - specifies a path where the bootstrap components could be find. If this - parameter is an empty string the compoents will be searched in the system - path. - @deprecated -*/ -inline ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > -SAL_CALL createRegistryServiceFactory( - const ::rtl::OUString & rRegistryFile, - sal_Bool bReadOnly = sal_False, - const ::rtl::OUString & rBootstrapPath = ::rtl::OUString() ) - SAL_THROW( (::com::sun::star::uno::Exception) ) -{ - return ::cppu::createRegistryServiceFactory( - rRegistryFile, ::rtl::OUString(), bReadOnly, rBootstrapPath ); -} - -/** Deprecated. Use cppuhelper/bootstrap.hxx functions instead. - - This bootstraps a service factory without initialize a registry. - - @param rBootstrapPath - specifies a path where the bootstrap components could be find. If this - parameter is an empty string the compoents will be searched in the system - path. - @deprecated -*/ -inline ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > -SAL_CALL createServiceFactory( - const ::rtl::OUString & rBootstrapPath = ::rtl::OUString() ) - SAL_THROW( (::com::sun::star::uno::Exception) ) -{ - return ::cppu::createRegistryServiceFactory( - ::rtl::OUString(), ::rtl::OUString(), sal_False, rBootstrapPath ); -} - -} // end namespace cppu - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cppuhelper/source/compat.cxx b/cppuhelper/source/compat.cxx index 70139548a8a8..a90d7e56f638 100644 --- a/cppuhelper/source/compat.cxx +++ b/cppuhelper/source/compat.cxx @@ -49,6 +49,14 @@ SAL_CALL createNestedRegistry(rtl::OUString const &) SAL_THROW(()) { for (;;) { std::abort(); } // avoid "must return a value" warnings } +SAL_DLLPUBLIC_EXPORT css::uno::Reference< css::lang::XMultiServiceFactory > +SAL_CALL createRegistryServiceFactory( + rtl::OUString const &, rtl::OUString const &, sal_Bool, + rtl::OUString const &) SAL_THROW((css::uno::Exception)) +{ + for (;;) { std::abort(); } // avoid "must return a value" warnings +} + SAL_DLLPUBLIC_EXPORT css::uno::Reference< css::registry::XSimpleRegistry > SAL_CALL createSimpleRegistry(rtl::OUString const &) SAL_THROW(()) { for (;;) { std::abort(); } // avoid "must return a value" warnings diff --git a/cppuhelper/source/servicefactory.cxx b/cppuhelper/source/servicefactory.cxx index d09bc20ba4bc..ac7e93f75099 100644 --- a/cppuhelper/source/servicefactory.cxx +++ b/cppuhelper/source/servicefactory.cxx @@ -30,7 +30,6 @@ #include "cppuhelper/shlib.hxx" #include "cppuhelper/factory.hxx" #include "cppuhelper/component_context.hxx" -#include "cppuhelper/servicefactory.hxx" #include "cppuhelper/bootstrap.hxx" #include "com/sun/star/uno/DeploymentException.hpp" @@ -87,72 +86,6 @@ static Reference< XInterface > SAL_CALL createInstance( Reference< XInterface >() ); } -namespace { - -Reference< registry::XSimpleRegistry > createSimpleRegistry( - OUString const & rBootstrapPath ) - SAL_THROW(()) -{ - try - { - return Reference< registry::XSimpleRegistry >( - createInstance( - loadSharedLibComponentFactory( - OUSTR("bootstrap.uno" SAL_DLLEXTENSION), - rBootstrapPath.isEmpty() - ? get_this_libpath() : rBootstrapPath, - OUSTR("com.sun.star.comp.stoc.SimpleRegistry"), - Reference< lang::XMultiServiceFactory >(), - Reference< registry::XRegistryKey >() ) ), - UNO_QUERY ); - } - catch (Exception & exc) - { -#if OSL_DEBUG_LEVEL > 0 - OString cstr_msg( - OUStringToOString( exc.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( !"### exception occurred:", cstr_msg.getStr() ); -#else - (void) exc; // avoid warning about unused variable -#endif - } - - return Reference< registry::XSimpleRegistry >(); -} - -Reference< registry::XSimpleRegistry > createNestedRegistry( - OUString const & rBootstrapPath ) - SAL_THROW(()) -{ - try - { - return Reference< registry::XSimpleRegistry >( - createInstance( - loadSharedLibComponentFactory( - OUSTR("bootstrap.uno" SAL_DLLEXTENSION), - rBootstrapPath.isEmpty() - ? get_this_libpath() : rBootstrapPath, - OUSTR("com.sun.star.comp.stoc.NestedRegistry"), - Reference< lang::XMultiServiceFactory >(), - Reference< registry::XRegistryKey >() ) ), - UNO_QUERY ); - } - catch (Exception & exc) - { -#if OSL_DEBUG_LEVEL > 0 - OString cstr_msg( - OUStringToOString( exc.Message, RTL_TEXTENCODING_ASCII_US ) ); - OSL_ENSURE( !"### exception occurred:", cstr_msg.getStr() ); -#else - (void) exc; // avoid warning about unused variable -#endif - } - - return Reference< registry::XSimpleRegistry >(); -} - -} - /** bootstrap variables: UNO_AC=<mode> [mandatory] @@ -398,278 +331,6 @@ Reference< lang::XMultiComponentFactory > bootstrapInitialSF( return xMgr; } -// returns context with UNinitialized smgr -Reference< XComponentContext > bootstrapInitialContext( - Reference< lang::XMultiComponentFactory > const & xSF, - Reference< registry::XSimpleRegistry > const & types_xRegistry, - Reference< registry::XSimpleRegistry > const & services_xRegistry, - OUString const & rBootstrapPath, Bootstrap const & bootstrap ) - SAL_THROW( (Exception) ) -{ - Reference< lang::XInitialization > xSFInit( xSF, UNO_QUERY ); - if (! xSFInit.is()) - { - throw RuntimeException( - OUSTR("servicemanager does not support XInitialization!"), - Reference< XInterface >() ); - } - - // basic context values - ContextEntry_Init entry; - ::std::vector< ContextEntry_Init > context_values; - context_values.reserve( 14 ); - - // macro expander singleton for loader - entry.bLateInitService = true; - entry.name = OUSTR("/singletons/com.sun.star.util.theMacroExpander"); - entry.value - <<= cppuhelper::detail::create_bootstrap_macro_expander_factory(); - context_values.push_back( entry ); - - // tdmgr singleton - entry.bLateInitService = true; - entry.name = - OUSTR("/singletons/com.sun.star.reflection.theTypeDescriptionManager"); - entry.value <<= OUSTR("com.sun.star.comp.stoc.TypeDescriptionManager"); - context_values.push_back( entry ); - - // read out singleton infos from registry - if (services_xRegistry.is()) - { - Reference< registry::XRegistryKey > xKey( - services_xRegistry->getRootKey() ); - if (xKey.is()) - { - xKey = xKey->openKey( OUSTR("/SINGLETONS") ); - if (xKey.is()) - { - entry.bLateInitService = true; - - Sequence< Reference< registry::XRegistryKey > > keys( - xKey->openKeys() ); - Reference< registry::XRegistryKey > const * pKeys = - keys.getConstArray(); - for ( sal_Int32 nPos = keys.getLength(); nPos--; ) - { - css::uno::Sequence< rtl::OUString > impls( - css::uno::Reference< css::registry::XRegistryKey >( - pKeys[nPos]->openKey( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "REGISTERED_BY"))), - css::uno::UNO_SET_THROW)->getAsciiListValue()); - switch (impls.getLength()) { - case 0: - throw css::uno::DeploymentException( - (pKeys[nPos]->getKeyName() + - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "/REGISTERED_BY is empty"))), - css::uno::Reference< css::uno::XInterface >()); - case 1: - break; - default: - OSL_TRACE( - ("arbitrarily chosing \"%s\" among multiple" - " implementations for \"%s\""), - rtl::OUStringToOString( - impls[0], RTL_TEXTENCODING_UTF8).getStr(), - rtl::OUStringToOString( - pKeys[nPos]->getKeyName(), - RTL_TEXTENCODING_UTF8).getStr()); - break; - } - context_values.push_back( - ContextEntry_Init( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("/singletons/")) + - pKeys[nPos]->getKeyName().copy( - RTL_CONSTASCII_LENGTH("/SINGLETONS/"))), - css::uno::makeAny(impls[0]), - true)); - } - } - } - } - - // ac, policy: - add_access_control_entries( &context_values, bootstrap ); - - // smgr singleton - entry.bLateInitService = false; - entry.name = OUSTR("/singletons/com.sun.star.lang.theServiceManager"); - entry.value <<= xSF; - context_values.push_back( entry ); - - Reference< XComponentContext > xContext( - createComponentContext( - &context_values[ 0 ], context_values.size(), - Reference< XComponentContext >() ) ); - // set default context - Reference< beans::XPropertySet > xProps( xSF, UNO_QUERY ); - OSL_ASSERT( xProps.is() ); - if (xProps.is()) - { - xProps->setPropertyValue( - OUSTR("DefaultContext"), makeAny( xContext ) ); - } - - Reference< container::XHierarchicalNameAccess > xTDMgr; - - // get tdmgr singleton - if (xContext->getValueByName( - OUSTR("/singletons/" - "com.sun.star.reflection.theTypeDescriptionManager") ) - >>= xTDMgr) - { - if (types_xRegistry.is()) // insert rdb provider? - { - // add registry td provider factory to smgr and instance to tdmgr - Reference< lang::XSingleComponentFactory > xFac( - loadSharedLibComponentFactory( - OUSTR("bootstrap.uno" SAL_DLLEXTENSION), - rBootstrapPath.isEmpty() - ? get_this_libpath() : rBootstrapPath, - OUSTR("com.sun.star.comp.stoc.RegistryTypeDescriptionProvider"), - Reference< lang::XMultiServiceFactory >( xSF, UNO_QUERY ), - Reference< registry::XRegistryKey >() ), UNO_QUERY ); - OSL_ASSERT( xFac.is() ); - - // smgr - Reference< container::XSet > xSet( xSF, UNO_QUERY ); - xSet->insert( makeAny( xFac ) ); - OSL_ENSURE( - xSet->has( makeAny( xFac ) ), - "### failed registering registry td provider at smgr!" ); - // tdmgr - xSet.set( xTDMgr, UNO_QUERY ); - OSL_ASSERT( xSet.is() ); - Any types_RDB( makeAny( types_xRegistry ) ); - Any rdbtdp( makeAny( xFac->createInstanceWithArgumentsAndContext( - Sequence< Any >( &types_RDB, 1 ), xContext ) ) ); - xSet->insert( rdbtdp ); - OSL_ENSURE( - xSet->has( rdbtdp ), - "### failed inserting registry td provider to tdmgr!" ); - } - // install callback - installTypeDescriptionManager( xTDMgr ); - } - - return xContext; -} - -static Reference< lang::XMultiComponentFactory > createImplServiceFactory( - const OUString & rWriteRegistry, - const OUString & rReadRegistry, - sal_Bool bReadOnly, - const OUString & rBootstrapPath ) - SAL_THROW( (Exception) ) -{ - Reference< lang::XMultiComponentFactory > xSF( - bootstrapInitialSF( rBootstrapPath ) ); - - Reference< registry::XSimpleRegistry > xRegistry; - - // open a registry - sal_Bool bRegistryShouldBeValid = sal_False; - if (!rWriteRegistry.isEmpty() && rReadRegistry.isEmpty()) - { - bRegistryShouldBeValid = sal_True; - xRegistry.set( createSimpleRegistry( rBootstrapPath ) ); - if (xRegistry.is()) - { - if (bReadOnly) - { - xRegistry->open( rWriteRegistry, sal_True, sal_False ); - } - else - { - xRegistry->open( rWriteRegistry, sal_False, sal_True ); - } - } - } - else if (!rWriteRegistry.isEmpty() && !rReadRegistry.isEmpty()) - { - // default registry - bRegistryShouldBeValid = sal_True; - xRegistry.set( createNestedRegistry( rBootstrapPath ) ); - - Reference< registry::XSimpleRegistry > xWriteReg( - createSimpleRegistry( rBootstrapPath ) ); - if (xWriteReg.is()) - { - if (bReadOnly) - { - try - { - xWriteReg->open( rWriteRegistry, sal_True, sal_False ); - } - catch (registry::InvalidRegistryException &) - { - } - - if (! xWriteReg->isValid()) - { - throw RuntimeException( - OUSTR("specified first registry " - "could not be open readonly!"), - Reference< XInterface >() ); - } - } - else - { - xWriteReg->open( rWriteRegistry, sal_False, sal_True ); - } - } - - Reference< registry::XSimpleRegistry > xReadReg( - createSimpleRegistry( rBootstrapPath ) ); - if (xReadReg.is()) - { - xReadReg->open( rReadRegistry, sal_True, sal_False ); - } - - Reference< lang::XInitialization > xInit( xRegistry, UNO_QUERY ); - Sequence< Any > aInitSeq( 2 ); - aInitSeq[ 0 ] <<= xWriteReg; - aInitSeq[ 1 ] <<= xReadReg; - xInit->initialize( aInitSeq ); - } - - if (bRegistryShouldBeValid && (!xRegistry.is() || !xRegistry->isValid())) - { - throw RuntimeException( - OUSTR("specified registry could not be initialized"), - Reference< XInterface >() ); - } - - Bootstrap bootstrap; - Reference< XComponentContext > xContext( - bootstrapInitialContext( - xSF, xRegistry, xRegistry, rBootstrapPath, bootstrap ) ); - - // initialize sf - Reference< lang::XInitialization > xInit( xSF, UNO_QUERY ); - OSL_ASSERT( xInit.is() ); - Sequence< Any > aSFInit( 1 ); - aSFInit[ 0 ] <<= xRegistry; - xInit->initialize( aSFInit ); - - return xSF; -} - -Reference< lang::XMultiServiceFactory > SAL_CALL createRegistryServiceFactory( - const OUString & rWriteRegistry, - const OUString & rReadRegistry, - sal_Bool bReadOnly, - const OUString & rBootstrapPath ) - SAL_THROW( (Exception) ) -{ - return Reference< lang::XMultiServiceFactory >( createImplServiceFactory( - rWriteRegistry, rReadRegistry, bReadOnly, rBootstrapPath ), UNO_QUERY ); -} - } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |