diff options
Diffstat (limited to 'stoc/source/simpleregistry/simpleregistry.cxx')
-rw-r--r-- | stoc/source/simpleregistry/simpleregistry.cxx | 1322 |
1 files changed, 0 insertions, 1322 deletions
diff --git a/stoc/source/simpleregistry/simpleregistry.cxx b/stoc/source/simpleregistry/simpleregistry.cxx deleted file mode 100644 index 4485f69e0..000000000 --- a/stoc/source/simpleregistry/simpleregistry.cxx +++ /dev/null @@ -1,1322 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* -* -* 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. -* -************************************************************************/ - -#include "precompiled_stoc.hxx" -#include "sal/config.h" - -#include <cstdlib> -#include <memory> -#include <vector> - -#include "com/sun/star/lang/XServiceInfo.hpp" -#include "com/sun/star/registry/InvalidRegistryException.hpp" -#include "com/sun/star/registry/InvalidValueException.hpp" -#include "com/sun/star/registry/MergeConflictException.hpp" -#include "com/sun/star/registry/RegistryKeyType.hpp" -#include "com/sun/star/registry/XRegistryKey.hpp" -#include "com/sun/star/registry/XSimpleRegistry.hpp" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/RuntimeException.hpp" -#include "com/sun/star/uno/XComponentContext.hpp" -#include "com/sun/star/uno/XInterface.hpp" -#include "com/sun/star/uno/Sequence.hxx" -#include "cppuhelper/implbase1.hxx" -#include "cppuhelper/implbase2.hxx" -#include "cppuhelper/weak.hxx" -#include "osl/mutex.hxx" -#include "registry/registry.hxx" -#include "registry/regtype.h" -#include "rtl/ref.hxx" -#include "rtl/string.h" -#include "rtl/string.hxx" -#include "rtl/textcvt.h" -#include "rtl/textenc.h" -#include "rtl/unload.h" -#include "rtl/ustring.h" -#include "rtl/ustring.hxx" -#include "sal/types.h" - -#include "bootstrapservices.hxx" - -#include "textualservices.hxx" - -extern rtl_StandardModuleCount g_moduleCount; - -namespace { - -namespace css = com::sun::star; - -class SimpleRegistry: - public cppu::WeakImplHelper2< - css::registry::XSimpleRegistry, css::lang::XServiceInfo > -{ -public: - SimpleRegistry() { g_moduleCount.modCnt.acquire(&g_moduleCount.modCnt); } - - ~SimpleRegistry() { g_moduleCount.modCnt.release(&g_moduleCount.modCnt); } - - osl::Mutex mutex_; - -private: - virtual rtl::OUString SAL_CALL getURL() throw (css::uno::RuntimeException); - - virtual void SAL_CALL open( - rtl::OUString const & rURL, sal_Bool bReadOnly, sal_Bool bCreate) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - virtual sal_Bool SAL_CALL isValid() throw (css::uno::RuntimeException); - - virtual void SAL_CALL close() throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual void SAL_CALL destroy() throw( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual css::uno::Reference< css::registry::XRegistryKey > SAL_CALL - getRootKey() throw( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual sal_Bool SAL_CALL isReadOnly() throw( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual void SAL_CALL mergeKey( - rtl::OUString const & aKeyName, rtl::OUString const & aUrl) - throw ( - css::registry::InvalidRegistryException, - css::registry::MergeConflictException, css::uno::RuntimeException); - - virtual rtl::OUString SAL_CALL getImplementationName() - throw (css::uno::RuntimeException) - { return stoc_bootstrap::simreg_getImplementationName(); } - - virtual sal_Bool SAL_CALL supportsService(rtl::OUString const & ServiceName) - throw (css::uno::RuntimeException) - { return ServiceName == getSupportedServiceNames()[0]; } - - virtual css::uno::Sequence< rtl::OUString > SAL_CALL - getSupportedServiceNames() throw (css::uno::RuntimeException) - { return stoc_bootstrap::simreg_getSupportedServiceNames(); } - - Registry registry_; - std::auto_ptr< stoc::simpleregistry::TextualServices > textual_; -}; - -class Key: public cppu::WeakImplHelper1< css::registry::XRegistryKey > { -public: - Key( - rtl::Reference< SimpleRegistry > const & registry, - RegistryKey const & key): - registry_(registry), key_(key) {} - -private: - virtual rtl::OUString SAL_CALL getKeyName() - throw (css::uno::RuntimeException); - - virtual sal_Bool SAL_CALL isReadOnly() throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual sal_Bool SAL_CALL isValid() throw(css::uno::RuntimeException); - - virtual css::registry::RegistryKeyType SAL_CALL getKeyType( - rtl::OUString const & rKeyName) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - virtual css::registry::RegistryValueType SAL_CALL getValueType() throw( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual sal_Int32 SAL_CALL getLongValue() throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException); - - virtual void SAL_CALL setLongValue(sal_Int32 value) throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual css::uno::Sequence< sal_Int32 > SAL_CALL getLongListValue() throw( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException); - - virtual void SAL_CALL setLongListValue( - com::sun::star::uno::Sequence< sal_Int32 > const & seqValue) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - virtual rtl::OUString SAL_CALL getAsciiValue() throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException); - - virtual void SAL_CALL setAsciiValue(rtl::OUString const & value) throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual css::uno::Sequence< rtl::OUString > SAL_CALL getAsciiListValue() - throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException); - - virtual void SAL_CALL setAsciiListValue( - css::uno::Sequence< rtl::OUString > const & seqValue) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - virtual rtl::OUString SAL_CALL getStringValue() throw( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException); - - virtual void SAL_CALL setStringValue(rtl::OUString const & value) throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual css::uno::Sequence< rtl::OUString > SAL_CALL getStringListValue() - throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException); - - virtual void SAL_CALL setStringListValue( - css::uno::Sequence< rtl::OUString > const & seqValue) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - virtual css::uno::Sequence< sal_Int8 > SAL_CALL getBinaryValue() throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException); - - virtual void SAL_CALL setBinaryValue( - css::uno::Sequence< sal_Int8 > const & value) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - virtual css::uno::Reference< css::registry::XRegistryKey > SAL_CALL openKey( - rtl::OUString const & aKeyName) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - virtual css::uno::Reference< css::registry::XRegistryKey > SAL_CALL - createKey(rtl::OUString const & aKeyName) throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual void SAL_CALL closeKey() throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual void SAL_CALL deleteKey(rtl::OUString const & rKeyName) throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual - css::uno::Sequence< css::uno::Reference< css::registry::XRegistryKey > > - SAL_CALL openKeys() throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual css::uno::Sequence< rtl::OUString > SAL_CALL getKeyNames() throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual sal_Bool SAL_CALL createLink( - rtl::OUString const & aLinkName, rtl::OUString const & aLinkTarget) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - virtual void SAL_CALL deleteLink(rtl::OUString const & rLinkName) throw ( - css::registry::InvalidRegistryException, css::uno::RuntimeException); - - virtual rtl::OUString SAL_CALL getLinkTarget( - rtl::OUString const & rLinkName) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - virtual rtl::OUString SAL_CALL getResolvedName( - rtl::OUString const & aKeyName) - throw ( - css::registry::InvalidRegistryException, - css::uno::RuntimeException); - - rtl::Reference< SimpleRegistry > registry_; - RegistryKey key_; -}; - -rtl::OUString Key::getKeyName() throw (css::uno::RuntimeException) { - osl::MutexGuard guard(registry_->mutex_); - return key_.getName(); -} - -sal_Bool Key::isReadOnly() - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - return key_.isReadOnly(); -} - -sal_Bool Key::isValid() throw (css::uno::RuntimeException) { - osl::MutexGuard guard(registry_->mutex_); - return key_.isValid(); -} - -css::registry::RegistryKeyType Key::getKeyType(rtl::OUString const & rKeyName) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegKeyType type; - RegError err = key_.getKeyType(rKeyName, &type); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getKeyType:" - " underlying RegistryKey::getKeyType() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - switch (type) { - default: - std::abort(); // this cannot happen - // pseudo-fall-through to avoid warnings on MSC - case RG_KEYTYPE: - return css::registry::RegistryKeyType_KEY; - case RG_LINKTYPE: - return css::registry::RegistryKeyType_LINK; - } -} - -css::registry::RegistryValueType Key::getValueType() - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegValueType type; - sal_uInt32 size; - RegError err = key_.getValueInfo(rtl::OUString(), &type, &size); - switch (err) { - case REG_NO_ERROR: - break; - case REG_INVALID_VALUE: - type = RG_VALUETYPE_NOT_DEFINED; - break; - default: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getValueType:" - " underlying RegistryKey::getValueInfo() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - switch (type) { - default: - std::abort(); // this cannot happen - // pseudo-fall-through to avoid warnings on MSC - case RG_VALUETYPE_NOT_DEFINED: - return css::registry::RegistryValueType_NOT_DEFINED; - case RG_VALUETYPE_LONG: - return css::registry::RegistryValueType_LONG; - case RG_VALUETYPE_STRING: - return css::registry::RegistryValueType_ASCII; - case RG_VALUETYPE_UNICODE: - return css::registry::RegistryValueType_STRING; - case RG_VALUETYPE_BINARY: - return css::registry::RegistryValueType_BINARY; - case RG_VALUETYPE_LONGLIST: - return css::registry::RegistryValueType_LONGLIST; - case RG_VALUETYPE_STRINGLIST: - return css::registry::RegistryValueType_ASCIILIST; - case RG_VALUETYPE_UNICODELIST: - return css::registry::RegistryValueType_STRINGLIST; - } -} - -sal_Int32 Key::getLongValue() throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - sal_Int32 value; - RegError err = key_.getValue(rtl::OUString(), &value); - switch (err) { - case REG_NO_ERROR: - break; - case REG_INVALID_VALUE: - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getLongValue:" - " underlying RegistryKey::getValue() = REG_INVALID_VALUE")), - static_cast< OWeakObject * >(this)); - default: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getLongValue:" - " underlying RegistryKey::getValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - return value; -} - -void Key::setLongValue(sal_Int32 value) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegError err = key_.setValue( - rtl::OUString(), RG_VALUETYPE_LONG, &value, sizeof (sal_Int32)); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key setLongValue:" - " underlying RegistryKey::setValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -css::uno::Sequence< sal_Int32 > Key::getLongListValue() throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegistryValueList< sal_Int32 > list; - RegError err = key_.getLongListValue(rtl::OUString(), list); - switch (err) { - case REG_NO_ERROR: - break; - case REG_VALUE_NOT_EXISTS: - return css::uno::Sequence< sal_Int32 >(); - case REG_INVALID_VALUE: - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getLongListValue:" - " underlying RegistryKey::getLongListValue() =" - " REG_INVALID_VALUE")), - static_cast< OWeakObject * >(this)); - default: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getLongListValue:" - " underlying RegistryKey::getLongListValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - sal_uInt32 n = list.getLength(); - if (n > SAL_MAX_INT32) { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getLongListValue:" - " underlying RegistryKey::getLongListValue() too large")), - static_cast< OWeakObject * >(this)); - } - css::uno::Sequence< sal_Int32 > value(static_cast< sal_Int32 >(n)); - for (sal_uInt32 i = 0; i < n; ++i) { - value[static_cast< sal_Int32 >(i)] = list.getElement(i); - } - return value; -} - -void Key::setLongListValue(css::uno::Sequence< sal_Int32 > const & seqValue) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - std::vector< sal_Int32 > list; - for (sal_Int32 i = 0; i < seqValue.getLength(); ++i) { - list.push_back(seqValue[i]); - } - RegError err = key_.setLongListValue( - rtl::OUString(), list.empty() ? 0 : &list[0], - static_cast< sal_uInt32 >(list.size())); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key setLongListValue:" - " underlying RegistryKey::setLongListValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -rtl::OUString Key::getAsciiValue() throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegValueType type; - sal_uInt32 size; - RegError err = key_.getValueInfo(rtl::OUString(), &type, &size); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getAsciiValue:" - " underlying RegistryKey::getValueInfo() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - if (type != RG_VALUETYPE_STRING) { - throw css::registry::InvalidValueException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getAsciiValue:" - " underlying RegistryKey type = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(type))), - static_cast< OWeakObject * >(this)); - } - // size contains terminating null (error in underlying registry.cxx): - if (size == 0) { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getAsciiValue:" - " underlying RegistryKey size 0 cannot happen due to" - " design error")), - static_cast< OWeakObject * >(this)); - } - if (size > SAL_MAX_INT32) { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getAsciiValue:" - " underlying RegistryKey size too large")), - static_cast< OWeakObject * >(this)); - } - std::vector< char > list(size); - err = key_.getValue(rtl::OUString(), &list[0]); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getAsciiValue:" - " underlying RegistryKey::getValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - if (list[size - 1] != '\0') { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getAsciiValue:" - " underlying RegistryKey value must be null-terminated due" - " to design error")), - static_cast< OWeakObject * >(this)); - } - rtl::OUString value; - if (!rtl_convertStringToUString( - &value.pData, &list[0], - static_cast< sal_Int32 >(size - 1), RTL_TEXTENCODING_UTF8, - (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR | - RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR | - RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR))) - { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getAsciiValue:" - " underlying RegistryKey not UTF-8")), - static_cast< OWeakObject * >(this)); - } - return value; -} - -void Key::setAsciiValue(rtl::OUString const & value) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - rtl::OString utf8; - if (!value.convertToString( - &utf8, RTL_TEXTENCODING_UTF8, - (RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR | - RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR))) - { - throw css::uno::RuntimeException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key setAsciiValue:" - " value not UTF-16")), - static_cast< OWeakObject * >(this)); - } - RegError err = key_.setValue( - rtl::OUString(), RG_VALUETYPE_STRING, - const_cast< char * >(utf8.getStr()), utf8.getLength() + 1); - // +1 for terminating null (error in underlying registry.cxx) - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key setAsciiValue:" - " underlying RegistryKey::setValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -css::uno::Sequence< rtl::OUString > Key::getAsciiListValue() throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegistryValueList< char * > list; - RegError err = key_.getStringListValue(rtl::OUString(), list); - switch (err) { - case REG_NO_ERROR: - break; - case REG_VALUE_NOT_EXISTS: - return css::uno::Sequence< rtl::OUString >(); - case REG_INVALID_VALUE: - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " getAsciiListValue: underlying" - " RegistryKey::getStringListValue() = REG_INVALID_VALUE")), - static_cast< OWeakObject * >(this)); - default: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " getAsciiListValue: underlying" - " RegistryKey::getStringListValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - sal_uInt32 n = list.getLength(); - if (n > SAL_MAX_INT32) { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " getAsciiListValue: underlying" - " RegistryKey::getStringListValue() too large")), - static_cast< OWeakObject * >(this)); - } - css::uno::Sequence< rtl::OUString > value(static_cast< sal_Int32 >(n)); - for (sal_uInt32 i = 0; i < n; ++i) { - char * el = list.getElement(i); - sal_Int32 size = rtl_str_getLength(el); - if (!rtl_convertStringToUString( - &value[static_cast< sal_Int32 >(i)].pData, el, size, - RTL_TEXTENCODING_UTF8, - (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_ERROR | - RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_ERROR | - RTL_TEXTTOUNICODE_FLAGS_INVALID_ERROR))) - { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " getAsciiListValue: underlying RegistryKey not" - " UTF-8")), - static_cast< OWeakObject * >(this)); - } - } - return value; -} - -void Key::setAsciiListValue( - css::uno::Sequence< rtl::OUString > const & seqValue) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - std::vector< rtl::OString > list; - for (sal_Int32 i = 0; i < seqValue.getLength(); ++i) { - rtl::OString utf8; - if (!seqValue[i].convertToString( - &utf8, RTL_TEXTENCODING_UTF8, - (RTL_UNICODETOTEXT_FLAGS_UNDEFINED_ERROR | - RTL_UNICODETOTEXT_FLAGS_INVALID_ERROR))) - { - throw css::uno::RuntimeException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " setAsciiListValue: value not UTF-16")), - static_cast< OWeakObject * >(this)); - } - list.push_back(utf8); - } - std::vector< char * > list2; - for (std::vector< rtl::OString >::iterator i(list.begin()); i != list.end(); - ++i) - { - list2.push_back(const_cast< char * >(i->getStr())); - } - RegError err = key_.setStringListValue( - rtl::OUString(), list2.empty() ? 0 : &list2[0], - static_cast< sal_uInt32 >(list2.size())); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " setAsciiListValue: underlying" - " RegistryKey::setStringListValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -rtl::OUString Key::getStringValue() throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegValueType type; - sal_uInt32 size; - RegError err = key_.getValueInfo(rtl::OUString(), &type, &size); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getStringValue:" - " underlying RegistryKey::getValueInfo() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - if (type != RG_VALUETYPE_UNICODE) { - throw css::registry::InvalidValueException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getStringValue:" - " underlying RegistryKey type = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(type))), - static_cast< OWeakObject * >(this)); - } - // size contains terminating null and is *2 (error in underlying - // registry.cxx): - if (size == 0 || (size & 1) == 1) { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getStringValue:" - " underlying RegistryKey size 0 or odd cannot happen due to" - " design error")), - static_cast< OWeakObject * >(this)); - } - if (size > SAL_MAX_INT32) { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getStringValue:" - " underlying RegistryKey size too large")), - static_cast< OWeakObject * >(this)); - } - std::vector< sal_Unicode > list(size); - err = key_.getValue(rtl::OUString(), &list[0]); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getStringValue:" - " underlying RegistryKey::getValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - if (list[size/2 - 1] != 0) { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getStringValue:" - " underlying RegistryKey value must be null-terminated due" - " to design error")), - static_cast< OWeakObject * >(this)); - } - return rtl::OUString(&list[0], static_cast< sal_Int32 >(size/2 - 1)); -} - -void Key::setStringValue(rtl::OUString const & value) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegError err = key_.setValue( - rtl::OUString(), RG_VALUETYPE_UNICODE, - const_cast< sal_Unicode * >(value.getStr()), - (value.getLength() + 1) * sizeof (sal_Unicode)); - // +1 for terminating null (error in underlying registry.cxx) - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key setStringValue:" - " underlying RegistryKey::setValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -css::uno::Sequence< rtl::OUString > Key::getStringListValue() throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegistryValueList< sal_Unicode * > list; - RegError err = key_.getUnicodeListValue(rtl::OUString(), list); - switch (err) { - case REG_NO_ERROR: - break; - case REG_VALUE_NOT_EXISTS: - return css::uno::Sequence< rtl::OUString >(); - case REG_INVALID_VALUE: - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " getStringListValue: underlying" - " RegistryKey::getUnicodeListValue() = REG_INVALID_VALUE")), - static_cast< OWeakObject * >(this)); - default: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " getStringListValue: underlying" - " RegistryKey::getUnicodeListValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - sal_uInt32 n = list.getLength(); - if (n > SAL_MAX_INT32) { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " getStringListValue: underlying" - " RegistryKey::getUnicodeListValue() too large")), - static_cast< OWeakObject * >(this)); - } - css::uno::Sequence< rtl::OUString > value(static_cast< sal_Int32 >(n)); - for (sal_uInt32 i = 0; i < n; ++i) { - value[static_cast< sal_Int32 >(i)] = list.getElement(i); - } - return value; -} - -void Key::setStringListValue( - css::uno::Sequence< rtl::OUString > const & seqValue) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - std::vector< sal_Unicode * > list; - for (sal_Int32 i = 0; i < seqValue.getLength(); ++i) { - list.push_back(const_cast< sal_Unicode * >(seqValue[i].getStr())); - } - RegError err = key_.setUnicodeListValue( - rtl::OUString(), list.empty() ? 0 : &list[0], - static_cast< sal_uInt32 >(list.size())); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key" - " setStringListValue: underlying" - " RegistryKey::setUnicodeListValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -css::uno::Sequence< sal_Int8 > Key::getBinaryValue() - throw ( - css::registry::InvalidRegistryException, - css::registry::InvalidValueException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegValueType type; - sal_uInt32 size; - RegError err = key_.getValueInfo(rtl::OUString(), &type, &size); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getBinaryValue:" - " underlying RegistryKey::getValueInfo() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - if (type != RG_VALUETYPE_BINARY) { - throw css::registry::InvalidValueException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getBinaryValue:" - " underlying RegistryKey type = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(type))), - static_cast< OWeakObject * >(this)); - } - if (size > SAL_MAX_INT32) { - throw css::registry::InvalidValueException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getBinaryValue:" - " underlying RegistryKey size too large")), - static_cast< OWeakObject * >(this)); - } - css::uno::Sequence< sal_Int8 > value(static_cast< sal_Int32 >(size)); - err = key_.getValue(rtl::OUString(), value.getArray()); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getBinaryValue:" - " underlying RegistryKey::getValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - return value; -} - -void Key::setBinaryValue(css::uno::Sequence< sal_Int8 > const & value) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegError err = key_.setValue( - rtl::OUString(), RG_VALUETYPE_BINARY, - const_cast< sal_Int8 * >(value.getConstArray()), - static_cast< sal_uInt32 >(value.getLength())); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key setBinaryValue:" - " underlying RegistryKey::setValue() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -css::uno::Reference< css::registry::XRegistryKey > Key::openKey( - rtl::OUString const & aKeyName) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegistryKey key; - RegError err = key_.openKey(aKeyName, key); - switch (err) { - case REG_NO_ERROR: - return new Key(registry_, key); - case REG_KEY_NOT_EXISTS: - return css::uno::Reference< css::registry::XRegistryKey >(); - default: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key openKey:" - " underlying RegistryKey::openKey() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -css::uno::Reference< css::registry::XRegistryKey > Key::createKey( - rtl::OUString const & aKeyName) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegistryKey key; - RegError err = key_.createKey(aKeyName, key); - switch (err) { - case REG_NO_ERROR: - return new Key(registry_, key); - case REG_INVALID_KEYNAME: - return css::uno::Reference< css::registry::XRegistryKey >(); - default: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key createKey:" - " underlying RegistryKey::createKey() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -void Key::closeKey() - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegError err = key_.closeKey(); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key closeKey:" - " underlying RegistryKey::closeKey() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -void Key::deleteKey(rtl::OUString const & rKeyName) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegError err = key_.deleteKey(rKeyName); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key deleteKey:" - " underlying RegistryKey::deleteKey() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -css::uno::Sequence< css::uno::Reference< css::registry::XRegistryKey > > -Key::openKeys() - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegistryKeyArray list; - RegError err = key_.openSubKeys(rtl::OUString(), list); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key openKeys:" - " underlying RegistryKey::openSubKeys() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - sal_uInt32 n = list.getLength(); - if (n > SAL_MAX_INT32) { - throw css::registry::InvalidRegistryException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getKeyNames:" - " underlying RegistryKey::getKeyNames() too large")), - static_cast< OWeakObject * >(this)); - } - css::uno::Sequence< css::uno::Reference< css::registry::XRegistryKey > > - keys(static_cast< sal_Int32 >(n)); - for (sal_uInt32 i = 0; i < n; ++i) { - keys[static_cast< sal_Int32 >(i)] = new Key( - registry_, list.getElement(i)); - } - return keys; -} - -css::uno::Sequence< rtl::OUString > Key::getKeyNames() - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegistryKeyNames list; - RegError err = key_.getKeyNames(rtl::OUString(), list); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getKeyNames:" - " underlying RegistryKey::getKeyNames() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - sal_uInt32 n = list.getLength(); - if (n > SAL_MAX_INT32) { - throw css::registry::InvalidRegistryException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getKeyNames:" - " underlying RegistryKey::getKeyNames() too large")), - static_cast< OWeakObject * >(this)); - } - css::uno::Sequence< rtl::OUString > names(static_cast< sal_Int32 >(n)); - for (sal_uInt32 i = 0; i < n; ++i) { - names[static_cast< sal_Int32 >(i)] = list.getElement(i); - } - return names; -} - -sal_Bool Key::createLink( - rtl::OUString const & aLinkName, rtl::OUString const & aLinkTarget) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegError err = key_.createLink(aLinkName, aLinkTarget); - switch (err) { - case REG_NO_ERROR: - return true; - case REG_INVALID_KEY: - case REG_DETECT_RECURSION: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key createLink:" - " underlying RegistryKey::createLink() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - default: - return false; - } -} - -void Key::deleteLink(rtl::OUString const & rLinkName) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - RegError err = key_.deleteLink(rLinkName); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key deleteLink:" - " underlying RegistryKey::deleteLink() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -rtl::OUString Key::getLinkTarget(rtl::OUString const & rLinkName) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - rtl::OUString target; - RegError err = key_.getLinkTarget(rLinkName, target); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getLinkTarget:" - " underlying RegistryKey::getLinkTarget() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - return target; -} - -rtl::OUString Key::getResolvedName(rtl::OUString const & aKeyName) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(registry_->mutex_); - rtl::OUString resolved; - RegError err = key_.getResolvedKeyName(aKeyName, true, resolved); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry key getResolvedName:" - " underlying RegistryKey::getResolvedName() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - return resolved; -} - -rtl::OUString SimpleRegistry::getURL() throw (css::uno::RuntimeException) { - osl::MutexGuard guard(mutex_); - return textual_.get() == 0 ? registry_.getName() : textual_->getUri(); -} - -void SimpleRegistry::open( - rtl::OUString const & rURL, sal_Bool bReadOnly, sal_Bool bCreate) - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(mutex_); - if (textual_.get() != 0) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry.open(")) + - rURL + - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "): instance already open"))), - static_cast< OWeakObject * >(this)); - } - RegError err = (rURL.getLength() == 0 && bCreate) - ? REG_REGISTRY_NOT_EXISTS - : registry_.open(rURL, bReadOnly ? REG_READONLY : REG_READWRITE); - if (err == REG_REGISTRY_NOT_EXISTS && bCreate) { - err = registry_.create(rURL); - } - switch (err) { - case REG_NO_ERROR: - break; - case REG_INVALID_REGISTRY: - if (bReadOnly && !bCreate) { - textual_.reset(new stoc::simpleregistry::TextualServices(rURL)); - break; - } - // fall through - default: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry.open(")) + - rURL + - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "): underlying Registry::open/create() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -sal_Bool SimpleRegistry::isValid() throw (css::uno::RuntimeException) { - osl::MutexGuard guard(mutex_); - return textual_.get() != 0 || registry_.isValid(); -} - -void SimpleRegistry::close() - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(mutex_); - if (textual_.get() != 0) { - textual_.reset(); - return; - } - RegError err = registry_.close(); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry.close:" - " underlying Registry::close() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -void SimpleRegistry::destroy() - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(mutex_); - if (textual_.get() != 0) { - textual_.reset(); - return; - } - RegError err = registry_.destroy(rtl::OUString()); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry.destroy:" - " underlying Registry::destroy() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -css::uno::Reference< css::registry::XRegistryKey > SimpleRegistry::getRootKey() - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(mutex_); - if (textual_.get() != 0) { - return textual_->getRootKey(); - } - RegistryKey root; - RegError err = registry_.openRootKey(root); - if (err != REG_NO_ERROR) { - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry.getRootKey:" - " underlying Registry::getRootKey() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } - return new Key(this, root); -} - -sal_Bool SimpleRegistry::isReadOnly() - throw (css::registry::InvalidRegistryException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(mutex_); - return textual_.get() != 0 || registry_.isReadOnly(); -} - -void SimpleRegistry::mergeKey( - rtl::OUString const & aKeyName, rtl::OUString const & aUrl) - throw ( - css::registry::InvalidRegistryException, - css::registry::MergeConflictException, css::uno::RuntimeException) -{ - osl::MutexGuard guard(mutex_); - if (textual_.get() != 0) { - throw css::uno::RuntimeException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry.mergeKey: not" - " supported for textual representation")), - static_cast< cppu::OWeakObject * >(this)); - } - RegistryKey root; - RegError err = registry_.openRootKey(root); - if (err == REG_NO_ERROR) { - err = registry_.mergeKey(root, aKeyName, aUrl, false, false); - } - switch (err) { - case REG_NO_ERROR: - case REG_MERGE_CONFLICT: - break; - case REG_MERGE_ERROR: - throw css::registry::MergeConflictException( - rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry.mergeKey:" - " underlying Registry::mergeKey() = REG_MERGE_ERROR")), - static_cast< cppu::OWeakObject * >(this)); - default: - throw css::registry::InvalidRegistryException( - (rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.registry.SimpleRegistry.mergeKey:" - " underlying Registry::getRootKey/mergeKey() = ")) + - rtl::OUString::valueOf(static_cast< sal_Int32 >(err))), - static_cast< OWeakObject * >(this)); - } -} - -} - -namespace stoc_bootstrap { - -css::uno::Reference< css::uno::XInterface > SimpleRegistry_CreateInstance( - css::uno::Reference< css::uno::XComponentContext > const &) -{ - return static_cast< cppu::OWeakObject * >(new SimpleRegistry); -} - -css::uno::Sequence< rtl::OUString > simreg_getSupportedServiceNames() { - css::uno::Sequence< rtl::OUString > names(1); - names[0] = rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.registry.SimpleRegistry")); - return names; -} - -rtl::OUString simreg_getImplementationName() { - return rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.stoc.SimpleRegistry")); -} - -} -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |