1b5088357SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3b5088357SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4b5088357SAndrew Rist * or more contributor license agreements. See the NOTICE file 5b5088357SAndrew Rist * distributed with this work for additional information 6b5088357SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7b5088357SAndrew Rist * to you under the Apache License, Version 2.0 (the 8b5088357SAndrew Rist * "License"); you may not use this file except in compliance 9b5088357SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11b5088357SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13b5088357SAndrew Rist * Unless required by applicable law or agreed to in writing, 14b5088357SAndrew Rist * software distributed under the License is distributed on an 15b5088357SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16b5088357SAndrew Rist * KIND, either express or implied. See the License for the 17b5088357SAndrew Rist * specific language governing permissions and limitations 18b5088357SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20b5088357SAndrew Rist *************************************************************/ 21b5088357SAndrew Rist 22b5088357SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_unotools.hxx" 26cdf0e10cSrcweir #include "unotools/configmgr.hxx" 27cdf0e10cSrcweir #include "unotools/configitem.hxx" 28cdf0e10cSrcweir #include "unotools/configpathes.hxx" 29cdf0e10cSrcweir #include <unotools/processfactory.hxx> 30cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 31cdf0e10cSrcweir #include <com/sun/star/container/XNameAccess.hpp> 32cdf0e10cSrcweir #include <com/sun/star/container/XHierarchicalNameAccess.hpp> 33cdf0e10cSrcweir #include <com/sun/star/container/XNameContainer.hpp> 34cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp> 35cdf0e10cSrcweir #include <osl/diagnose.h> 36cdf0e10cSrcweir #include <rtl/bootstrap.hxx> 37cdf0e10cSrcweir #include <rtl/instance.hxx> 38cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 0 39cdf0e10cSrcweir #include <rtl/strbuf.hxx> 40cdf0e10cSrcweir #endif 41cdf0e10cSrcweir 42cdf0e10cSrcweir #include <list> 43cdf0e10cSrcweir 44cdf0e10cSrcweir //----------------------------------------------------------------------------- 45cdf0e10cSrcweir 46cdf0e10cSrcweir using namespace utl; 47cdf0e10cSrcweir using namespace rtl; 48cdf0e10cSrcweir using namespace com::sun::star::uno; 49cdf0e10cSrcweir using namespace com::sun::star::lang; 50cdf0e10cSrcweir using namespace com::sun::star::beans; 51cdf0e10cSrcweir using namespace com::sun::star::container; 52cdf0e10cSrcweir 53cdf0e10cSrcweir #define C2U(cChar) OUString::createFromAscii(cChar) 54cdf0e10cSrcweir #define UNISTRING(s) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)) 55cdf0e10cSrcweir 56cdf0e10cSrcweir //----------------------------------------------------------------------------- 57cdf0e10cSrcweir const char* cConfigBaseURL = "/org.openoffice."; 58cdf0e10cSrcweir //const char* cConfigBaseURL = "/com.sun.star."; 59cdf0e10cSrcweir const char* cAccessSrvc = "com.sun.star.configuration.ConfigurationUpdateAccess"; 60cdf0e10cSrcweir 61cdf0e10cSrcweir namespace 62cdf0e10cSrcweir { 63cdf0e10cSrcweir struct BrandName 64cdf0e10cSrcweir : public rtl::Static< ::rtl::OUString, BrandName > {}; 65599cc5b4SOliver-Rainer Wittmann struct FullProductname 66599cc5b4SOliver-Rainer Wittmann : public rtl::Static< ::rtl::OUString, FullProductname > {}; 67cdf0e10cSrcweir struct ProductVersion 68cdf0e10cSrcweir : public rtl::Static< ::rtl::OUString, ProductVersion > {}; 69cdf0e10cSrcweir struct AboutBoxProductVersion 70cdf0e10cSrcweir : public rtl::Static< ::rtl::OUString, AboutBoxProductVersion > {}; 71cdf0e10cSrcweir struct OOOVendor 72cdf0e10cSrcweir : public rtl::Static< ::rtl::OUString, OOOVendor > {}; 73cdf0e10cSrcweir struct ProductExtension 74cdf0e10cSrcweir : public rtl::Static< ::rtl::OUString, ProductExtension > {}; 75cdf0e10cSrcweir struct XMLFileFormatName 76cdf0e10cSrcweir : public rtl::Static< ::rtl::OUString, XMLFileFormatName > {}; 77cdf0e10cSrcweir struct XMLFileFormatVersion 78cdf0e10cSrcweir : public rtl::Static< ::rtl::OUString, XMLFileFormatVersion > {}; 79cdf0e10cSrcweir struct WriterCompatibilityVersionOOo11 80cdf0e10cSrcweir : public rtl::Static< ::rtl::OUString, WriterCompatibilityVersionOOo11 > {}; 81cdf0e10cSrcweir struct OpenSourceContext : public rtl::StaticWithInit< sal_Int32, OpenSourceContext > 82cdf0e10cSrcweir { 83cdf0e10cSrcweir sal_Int32 operator() () { return sal_Int32( -1 ); } 84cdf0e10cSrcweir }; 85cdf0e10cSrcweir 86cdf0e10cSrcweir } 87cdf0e10cSrcweir 88cdf0e10cSrcweir //----------------------------------------------------------------------------- 89cdf0e10cSrcweir struct ConfigItemListEntry_Impl 90cdf0e10cSrcweir { 91cdf0e10cSrcweir ConfigItem* pConfigItem; 92cdf0e10cSrcweir 93cdf0e10cSrcweir ConfigItemListEntry_Impl(ConfigItem* pItem ) : 94cdf0e10cSrcweir pConfigItem(pItem){} 95cdf0e10cSrcweir }; 96cdf0e10cSrcweir typedef std::list<ConfigItemListEntry_Impl> ConfigItemList; 97cdf0e10cSrcweir struct utl::ConfigMgr_Impl 98cdf0e10cSrcweir { 99cdf0e10cSrcweir ConfigItemList aItemList; 100cdf0e10cSrcweir }; 101cdf0e10cSrcweir 102cdf0e10cSrcweir /* -----------------------------28.08.00 15:35-------------------------------- 103cdf0e10cSrcweir 104cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 105cdf0e10cSrcweir ConfigManager::ConfigManager() : 106cdf0e10cSrcweir pMgrImpl(new utl::ConfigMgr_Impl) 107cdf0e10cSrcweir { 108cdf0e10cSrcweir GetConfigurationProvider(); // attempt to create the provider early 109cdf0e10cSrcweir } 110cdf0e10cSrcweir /* -----------------------------17.11.00 13:51-------------------------------- 111cdf0e10cSrcweir 112cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 113cdf0e10cSrcweir ConfigManager::ConfigManager(Reference< XMultiServiceFactory > xConfigProv) : 114cdf0e10cSrcweir xConfigurationProvider(xConfigProv), 115cdf0e10cSrcweir pMgrImpl(new utl::ConfigMgr_Impl) 116cdf0e10cSrcweir { 117cdf0e10cSrcweir } 118cdf0e10cSrcweir /* -----------------------------28.08.00 15:35-------------------------------- 119cdf0e10cSrcweir 120cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 121cdf0e10cSrcweir ConfigManager::~ConfigManager() 122cdf0e10cSrcweir { 123cdf0e10cSrcweir //check list content -> should be empty! 124cdf0e10cSrcweir OSL_ENSURE(pMgrImpl->aItemList.empty(), "some ConfigItems are still alive"); 125cdf0e10cSrcweir if(!pMgrImpl->aItemList.empty()) 126cdf0e10cSrcweir { 127cdf0e10cSrcweir ConfigItemList::iterator aListIter; 128cdf0e10cSrcweir for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) 129cdf0e10cSrcweir { 130cdf0e10cSrcweir ConfigItemListEntry_Impl& rEntry = *aListIter; 131cdf0e10cSrcweir rEntry.pConfigItem->ReleaseConfigMgr(); 132cdf0e10cSrcweir } 133cdf0e10cSrcweir pMgrImpl->aItemList.erase(pMgrImpl->aItemList.begin(), pMgrImpl->aItemList.end()); 134cdf0e10cSrcweir } 135cdf0e10cSrcweir delete pMgrImpl; 136cdf0e10cSrcweir 137cdf0e10cSrcweir } 138cdf0e10cSrcweir /* -----------------------------28.08.00 16:17-------------------------------- 139cdf0e10cSrcweir 140cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 141cdf0e10cSrcweir Reference< XMultiServiceFactory > ConfigManager::GetConfigurationProvider() 142cdf0e10cSrcweir { 143cdf0e10cSrcweir if(!xConfigurationProvider.is()) 144cdf0e10cSrcweir { 145cdf0e10cSrcweir Reference< XMultiServiceFactory > xMSF = ::utl::getProcessServiceFactory(); 146cdf0e10cSrcweir if ( xMSF.is() ) 147cdf0e10cSrcweir { 148cdf0e10cSrcweir try 149cdf0e10cSrcweir { 150cdf0e10cSrcweir xConfigurationProvider = Reference< XMultiServiceFactory > 151cdf0e10cSrcweir (xMSF->createInstance( 152cdf0e10cSrcweir C2U("com.sun.star.configuration.ConfigurationProvider")), 153cdf0e10cSrcweir UNO_QUERY); 154cdf0e10cSrcweir } 155cdf0e10cSrcweir #ifdef DBG_UTIL 156cdf0e10cSrcweir catch(Exception& rEx) 157cdf0e10cSrcweir { 158cdf0e10cSrcweir static sal_Bool bMessage = sal_True; 159cdf0e10cSrcweir if(bMessage) 160cdf0e10cSrcweir { 161cdf0e10cSrcweir bMessage = sal_False; 162cdf0e10cSrcweir OString sMsg("CreateInstance with arguments exception: "); 163cdf0e10cSrcweir sMsg += OString(rEx.Message.getStr(), 164cdf0e10cSrcweir rEx.Message.getLength(), 165cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US); 166cdf0e10cSrcweir OSL_ENSURE(sal_False, sMsg.getStr()); 167cdf0e10cSrcweir } 168cdf0e10cSrcweir } 169cdf0e10cSrcweir #else 170cdf0e10cSrcweir catch(Exception&){} 171cdf0e10cSrcweir #endif 172cdf0e10cSrcweir } 173cdf0e10cSrcweir } 174cdf0e10cSrcweir return xConfigurationProvider; 175cdf0e10cSrcweir } 176cdf0e10cSrcweir /* -----------------------------03.12.02 ------------------------------------- 177cdf0e10cSrcweir 178cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 179cdf0e10cSrcweir namespace 180cdf0e10cSrcweir { 181cdf0e10cSrcweir // helper to achieve exception - safe registration of a ConfigItem under construction 182cdf0e10cSrcweir class RegisterConfigItemHelper // : Noncopyable 183cdf0e10cSrcweir { 184cdf0e10cSrcweir utl::ConfigManager & rCfgMgr; 185cdf0e10cSrcweir utl::ConfigItem* pCfgItem; 186cdf0e10cSrcweir public: 187cdf0e10cSrcweir RegisterConfigItemHelper(utl::ConfigManager & rMgr, utl::ConfigItem& rCfgItem) 188cdf0e10cSrcweir : rCfgMgr(rMgr) 189cdf0e10cSrcweir , pCfgItem(&rCfgItem) 190cdf0e10cSrcweir { 191cdf0e10cSrcweir rCfgMgr.RegisterConfigItem(rCfgItem); 192cdf0e10cSrcweir } 193cdf0e10cSrcweir 194cdf0e10cSrcweir ~RegisterConfigItemHelper() 195cdf0e10cSrcweir { 196cdf0e10cSrcweir if (pCfgItem) rCfgMgr.RemoveConfigItem(*pCfgItem); 197cdf0e10cSrcweir } 198cdf0e10cSrcweir 199cdf0e10cSrcweir void keep() { pCfgItem = 0; } 200cdf0e10cSrcweir }; 201cdf0e10cSrcweir } 202cdf0e10cSrcweir /* -----------------------------12.12.00 17:19-------------------------------- 203cdf0e10cSrcweir 204cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 205cdf0e10cSrcweir Reference< XMultiServiceFactory > ConfigManager::GetLocalConfigurationProvider() 206cdf0e10cSrcweir { 207cdf0e10cSrcweir return GetConfigurationProvider(); 208cdf0e10cSrcweir } 209cdf0e10cSrcweir /* -----------------------------29.08.00 12:35-------------------------------- 210cdf0e10cSrcweir 211cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 212cdf0e10cSrcweir Reference< XHierarchicalNameAccess > ConfigManager::AddConfigItem(utl::ConfigItem& rCfgItem) 213cdf0e10cSrcweir { 214cdf0e10cSrcweir RegisterConfigItemHelper registeredItem(*this,rCfgItem); 215cdf0e10cSrcweir Reference< XHierarchicalNameAccess > xTree = AcquireTree(rCfgItem); 216cdf0e10cSrcweir registeredItem.keep(); 217cdf0e10cSrcweir return xTree; 218cdf0e10cSrcweir } 219cdf0e10cSrcweir /* -----------------------------21.06.01 12:20-------------------------------- 220cdf0e10cSrcweir 221cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 222cdf0e10cSrcweir void ConfigManager::RegisterConfigItem(utl::ConfigItem& rCfgItem) 223cdf0e10cSrcweir { 224cdf0e10cSrcweir ConfigItemList::iterator aListIter = pMgrImpl->aItemList.begin(); 225cdf0e10cSrcweir #ifdef DBG_UTIL 226cdf0e10cSrcweir for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) 227cdf0e10cSrcweir { 228cdf0e10cSrcweir ConfigItemListEntry_Impl& rEntry = *aListIter; 229cdf0e10cSrcweir if(rEntry.pConfigItem == &rCfgItem) 230cdf0e10cSrcweir OSL_ENSURE(sal_False, "RegisterConfigItem: already inserted!"); 231cdf0e10cSrcweir } 232cdf0e10cSrcweir #endif 233cdf0e10cSrcweir pMgrImpl->aItemList.insert(aListIter, ConfigItemListEntry_Impl(&rCfgItem)); 234cdf0e10cSrcweir } 235cdf0e10cSrcweir /* -----------------------------21.06.01 12:20-------------------------------- 236cdf0e10cSrcweir 237cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 238cdf0e10cSrcweir Reference< XHierarchicalNameAccess> ConfigManager::AcquireTree(utl::ConfigItem& rCfgItem) 239cdf0e10cSrcweir { 240cdf0e10cSrcweir ConfigItemList::iterator aListIter = pMgrImpl->aItemList.begin(); 241cdf0e10cSrcweir #ifdef DBG_UTIL 242cdf0e10cSrcweir sal_Bool bFound = sal_False; 243cdf0e10cSrcweir for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) 244cdf0e10cSrcweir { 245cdf0e10cSrcweir ConfigItemListEntry_Impl& rEntry = *aListIter; 246cdf0e10cSrcweir if(rEntry.pConfigItem == &rCfgItem) 247cdf0e10cSrcweir { 248cdf0e10cSrcweir bFound = sal_True; 249cdf0e10cSrcweir break; 250cdf0e10cSrcweir } 251cdf0e10cSrcweir } 252cdf0e10cSrcweir OSL_ENSURE(bFound, "AcquireTree: ConfigItem unknown!"); 253cdf0e10cSrcweir #endif 254cdf0e10cSrcweir OUString sPath = C2U(cConfigBaseURL); 255cdf0e10cSrcweir sPath += rCfgItem.GetSubTreeName(); 256cdf0e10cSrcweir Sequence< Any > aArgs(2); 257cdf0e10cSrcweir Any* pArgs = aArgs.getArray(); 258cdf0e10cSrcweir PropertyValue aPath; 259cdf0e10cSrcweir aPath.Name = C2U("nodepath"); 260cdf0e10cSrcweir aPath.Value <<= sPath; 261cdf0e10cSrcweir pArgs[0] <<= aPath; 262cdf0e10cSrcweir sal_Bool bLazy = 0 != (rCfgItem.GetMode()&CONFIG_MODE_DELAYED_UPDATE); 263cdf0e10cSrcweir PropertyValue aUpdate; 264cdf0e10cSrcweir aUpdate.Name = C2U("lazywrite"); 265cdf0e10cSrcweir aUpdate.Value.setValue(&bLazy, ::getBooleanCppuType()); 266cdf0e10cSrcweir pArgs[1] <<= aUpdate; 267cdf0e10cSrcweir 268cdf0e10cSrcweir // Initialize item with support for reading/writing more then one locales at same time! 269cdf0e10cSrcweir // It's neccessary for creation of a complete configuration entry without changing office locale 270cdf0e10cSrcweir // at runtime. 271cdf0e10cSrcweir if((rCfgItem.GetMode() & CONFIG_MODE_ALL_LOCALES) == CONFIG_MODE_ALL_LOCALES) 272cdf0e10cSrcweir { 273cdf0e10cSrcweir sal_Int32 nCount = aArgs.getLength(); 274cdf0e10cSrcweir aArgs.realloc(nCount+1); 275cdf0e10cSrcweir 276cdf0e10cSrcweir PropertyValue aAllLocale; 277cdf0e10cSrcweir aAllLocale.Name = C2U("locale"); 278cdf0e10cSrcweir aAllLocale.Value <<= C2U("*" ); 279cdf0e10cSrcweir aArgs[nCount] <<= aAllLocale; 280cdf0e10cSrcweir } 281cdf0e10cSrcweir 282cdf0e10cSrcweir Reference< XMultiServiceFactory > xCfgProvider = GetConfigurationProvider(); 283cdf0e10cSrcweir Reference< XInterface > xIFace; 284cdf0e10cSrcweir if(xCfgProvider.is()) 285cdf0e10cSrcweir { 286cdf0e10cSrcweir try 287cdf0e10cSrcweir { 288cdf0e10cSrcweir xIFace = xCfgProvider->createInstanceWithArguments( 289cdf0e10cSrcweir C2U(cAccessSrvc), 290cdf0e10cSrcweir aArgs); 291cdf0e10cSrcweir } 292cdf0e10cSrcweir catch(Exception& rEx) 293cdf0e10cSrcweir { 294cdf0e10cSrcweir if (CONFIG_MODE_PROPAGATE_ERRORS & rCfgItem.GetMode()) 295cdf0e10cSrcweir { 296cdf0e10cSrcweir OSL_TRACE("ConfigItem: Propagating creation error: %s\n", 297cdf0e10cSrcweir OUStringToOString(rEx.Message,RTL_TEXTENCODING_ASCII_US).getStr()); 298cdf0e10cSrcweir 299cdf0e10cSrcweir throw; 300cdf0e10cSrcweir } 301cdf0e10cSrcweir #ifdef DBG_UTIL 302cdf0e10cSrcweir if(0 == (CONFIG_MODE_IGNORE_ERRORS & rCfgItem.GetMode())) 303cdf0e10cSrcweir { 304cdf0e10cSrcweir OString sMsg("CreateInstance exception: "); 305cdf0e10cSrcweir sMsg += OString(rEx.Message.getStr(), 306cdf0e10cSrcweir rEx.Message.getLength(), 307cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US); 308cdf0e10cSrcweir OSL_ENSURE(sal_False, sMsg.getStr()); 309cdf0e10cSrcweir } 310cdf0e10cSrcweir #endif 311cdf0e10cSrcweir } 312cdf0e10cSrcweir } 313cdf0e10cSrcweir return Reference<XHierarchicalNameAccess>(xIFace, UNO_QUERY); 314cdf0e10cSrcweir } 315cdf0e10cSrcweir /* -----------------------------29.08.00 12:35-------------------------------- 316cdf0e10cSrcweir 317cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 318cdf0e10cSrcweir void ConfigManager::RemoveConfigItem(utl::ConfigItem& rCfgItem) 319cdf0e10cSrcweir { 320cdf0e10cSrcweir if( !pMgrImpl->aItemList.empty() ) 321cdf0e10cSrcweir { 322cdf0e10cSrcweir ConfigItemList::iterator aListIter = pMgrImpl->aItemList.begin(); 323cdf0e10cSrcweir for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) 324cdf0e10cSrcweir { 325cdf0e10cSrcweir ConfigItemListEntry_Impl& rEntry = *aListIter; 326cdf0e10cSrcweir if(rEntry.pConfigItem == &rCfgItem) 327cdf0e10cSrcweir { 328cdf0e10cSrcweir pMgrImpl->aItemList.erase(aListIter); 329cdf0e10cSrcweir break; 330cdf0e10cSrcweir } 331cdf0e10cSrcweir } 332cdf0e10cSrcweir } 333cdf0e10cSrcweir } 334cdf0e10cSrcweir /* -----------------------------30.08.00 15:04-------------------------------- 335cdf0e10cSrcweir 336cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 337cdf0e10cSrcweir void ConfigManager::StoreConfigItems() 338cdf0e10cSrcweir { 339cdf0e10cSrcweir if(!pMgrImpl->aItemList.empty()) 340cdf0e10cSrcweir { 341cdf0e10cSrcweir ConfigItemList::iterator aListIter = pMgrImpl->aItemList.begin(); 342cdf0e10cSrcweir for(aListIter = pMgrImpl->aItemList.begin(); aListIter != pMgrImpl->aItemList.end(); ++aListIter) 343cdf0e10cSrcweir { 344cdf0e10cSrcweir ConfigItemListEntry_Impl& rEntry = *aListIter; 345cdf0e10cSrcweir if(rEntry.pConfigItem->IsModified()) 346cdf0e10cSrcweir { 347cdf0e10cSrcweir rEntry.pConfigItem->Commit(); 348cdf0e10cSrcweir rEntry.pConfigItem->ClearModified(); 349cdf0e10cSrcweir } 350cdf0e10cSrcweir } 351cdf0e10cSrcweir } 352cdf0e10cSrcweir } 3534879a985SPedro Giffuni ConfigManager* ConfigManager::pConfigManager = 0; 354cdf0e10cSrcweir /* -----------------------------07.09.00 11:06-------------------------------- 355cdf0e10cSrcweir 356cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 357cdf0e10cSrcweir ConfigManager* ConfigManager::GetConfigManager() 358cdf0e10cSrcweir { 3594879a985SPedro Giffuni if(!pConfigManager) 3604879a985SPedro Giffuni { 3614879a985SPedro Giffuni pConfigManager = new ConfigManager(); 3624879a985SPedro Giffuni } 3634879a985SPedro Giffuni return pConfigManager; 3644879a985SPedro Giffuni } 3654879a985SPedro Giffuni /* -----------------------------07.09.00 11:06-------------------------------- 3664879a985SPedro Giffuni 3674879a985SPedro Giffuni ---------------------------------------------------------------------------*/ 3684879a985SPedro Giffuni void ConfigManager::RemoveConfigManager() 3694879a985SPedro Giffuni { 3704879a985SPedro Giffuni if(pConfigManager) 3714879a985SPedro Giffuni { 3724879a985SPedro Giffuni delete pConfigManager; 3734879a985SPedro Giffuni pConfigManager = 0; 3744879a985SPedro Giffuni } 375cdf0e10cSrcweir } 376cdf0e10cSrcweir /* -----------------------------08.09.00 13:22-------------------------------- 377cdf0e10cSrcweir 378cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 379cdf0e10cSrcweir rtl::OUString ConfigManager::GetConfigBaseURL() 380cdf0e10cSrcweir { 381cdf0e10cSrcweir return C2U(cConfigBaseURL); 382cdf0e10cSrcweir } 383cdf0e10cSrcweir /* -----------------------------25.09.00 16:34-------------------------------- 384cdf0e10cSrcweir 385cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 386cdf0e10cSrcweir Any ConfigManager::GetDirectConfigProperty(ConfigProperty eProp) 387cdf0e10cSrcweir { 388cdf0e10cSrcweir switch(eProp) 389cdf0e10cSrcweir { 390cdf0e10cSrcweir case INSTALLPATH: 391cdf0e10cSrcweir OSL_ENSURE( false, 392cdf0e10cSrcweir "ConfigManager::GetDirectConfigProperty: " 393cdf0e10cSrcweir "INSTALLPATH no longer supported." ); 394cdf0e10cSrcweir return Any(); 395cdf0e10cSrcweir case USERINSTALLURL: 396cdf0e10cSrcweir OSL_ENSURE( false, 397cdf0e10cSrcweir "ConfigManager::GetDirectConfigProperty: " 398cdf0e10cSrcweir "USERINSTALLURL no longer supported." ); 399cdf0e10cSrcweir return Any(); 400cdf0e10cSrcweir case OFFICEINSTALL: 401cdf0e10cSrcweir OSL_ENSURE( false, 402cdf0e10cSrcweir "ConfigManager::GetDirectConfigProperty: " 403cdf0e10cSrcweir "OFFICEINSTALL no longer supported." ); 404cdf0e10cSrcweir return Any(); 405cdf0e10cSrcweir case OFFICEINSTALLURL: 406cdf0e10cSrcweir OSL_ENSURE( false, 407cdf0e10cSrcweir "ConfigManager::GetDirectConfigProperty: " 408cdf0e10cSrcweir "OFFICEINSTALLURL no longer supported." ); 409cdf0e10cSrcweir return Any(); 410cdf0e10cSrcweir default: 411cdf0e10cSrcweir break; 412cdf0e10cSrcweir } 413cdf0e10cSrcweir 414cdf0e10cSrcweir Any aRet; 415cdf0e10cSrcweir ::rtl::OUString &rBrandName = BrandName::get(); 416cdf0e10cSrcweir if ( eProp == PRODUCTNAME && rBrandName.getLength() ) 417cdf0e10cSrcweir { 418cdf0e10cSrcweir aRet <<= rBrandName; 419cdf0e10cSrcweir return aRet; 420cdf0e10cSrcweir } 421cdf0e10cSrcweir 422599cc5b4SOliver-Rainer Wittmann ::rtl::OUString& rFullProductname = FullProductname::get(); 423599cc5b4SOliver-Rainer Wittmann if ( eProp == FULLPRODUCTNAME && rFullProductname.getLength() ) 424599cc5b4SOliver-Rainer Wittmann { 425599cc5b4SOliver-Rainer Wittmann aRet <<= rFullProductname; 426599cc5b4SOliver-Rainer Wittmann return aRet; 427599cc5b4SOliver-Rainer Wittmann } 428599cc5b4SOliver-Rainer Wittmann 429cdf0e10cSrcweir rtl::OUString &rProductVersion = ProductVersion::get(); 430cdf0e10cSrcweir if ( eProp == PRODUCTVERSION && rProductVersion.getLength() ) 431cdf0e10cSrcweir { 432cdf0e10cSrcweir aRet <<= rProductVersion; 433cdf0e10cSrcweir return aRet; 434cdf0e10cSrcweir } 435cdf0e10cSrcweir 436cdf0e10cSrcweir rtl::OUString &rAboutBoxProductVersion = AboutBoxProductVersion::get(); 437cdf0e10cSrcweir if ( eProp == ABOUTBOXPRODUCTVERSION && rAboutBoxProductVersion.getLength() ) 438cdf0e10cSrcweir { 439cdf0e10cSrcweir aRet <<= rAboutBoxProductVersion; 440cdf0e10cSrcweir return aRet; 441cdf0e10cSrcweir } 442cdf0e10cSrcweir 443cdf0e10cSrcweir rtl::OUString &rOOOVendor = OOOVendor::get(); 444cdf0e10cSrcweir if ( eProp == OOOVENDOR && rOOOVendor.getLength() ) 445cdf0e10cSrcweir { 446cdf0e10cSrcweir aRet <<= rOOOVendor; 447cdf0e10cSrcweir return aRet; 448cdf0e10cSrcweir } 449cdf0e10cSrcweir 450cdf0e10cSrcweir 451cdf0e10cSrcweir rtl::OUString &rProductExtension = ProductExtension::get(); 452cdf0e10cSrcweir if ( eProp == PRODUCTEXTENSION && rProductExtension.getLength() ) 453cdf0e10cSrcweir { 454cdf0e10cSrcweir aRet <<= rProductExtension; 455cdf0e10cSrcweir return aRet; 456cdf0e10cSrcweir } 457cdf0e10cSrcweir 458cdf0e10cSrcweir rtl::OUString &rXMLFileFormatName = XMLFileFormatName::get(); 459cdf0e10cSrcweir if ( eProp == PRODUCTXMLFILEFORMATNAME && rXMLFileFormatName.getLength() ) 460cdf0e10cSrcweir { 461cdf0e10cSrcweir aRet <<= rXMLFileFormatName; 462cdf0e10cSrcweir return aRet; 463cdf0e10cSrcweir } 464cdf0e10cSrcweir 465cdf0e10cSrcweir rtl::OUString &rXMLFileFormatVersion = XMLFileFormatVersion::get(); 466cdf0e10cSrcweir if ( eProp == PRODUCTXMLFILEFORMATVERSION && rXMLFileFormatVersion.getLength() ) 467cdf0e10cSrcweir { 468cdf0e10cSrcweir aRet <<= rXMLFileFormatVersion; 469cdf0e10cSrcweir return aRet; 470cdf0e10cSrcweir } 471cdf0e10cSrcweir 472cdf0e10cSrcweir sal_Int32 &rOpenSourceContext = OpenSourceContext::get(); 473cdf0e10cSrcweir if ( eProp == OPENSOURCECONTEXT && ( rOpenSourceContext >= 0 ) ) 474cdf0e10cSrcweir { 475cdf0e10cSrcweir aRet <<= rOpenSourceContext; 476cdf0e10cSrcweir return aRet; 477cdf0e10cSrcweir } 478cdf0e10cSrcweir 479cdf0e10cSrcweir rtl::OUString &rWriterCompatibilityVersionOOo11 = WriterCompatibilityVersionOOo11::get(); 480cdf0e10cSrcweir if ( eProp == WRITERCOMPATIBILITYVERSIONOOO11 && rWriterCompatibilityVersionOOo11.getLength() ) 481cdf0e10cSrcweir { 482cdf0e10cSrcweir aRet <<= rWriterCompatibilityVersionOOo11; 483cdf0e10cSrcweir return aRet; 484cdf0e10cSrcweir } 485cdf0e10cSrcweir 486cdf0e10cSrcweir if (eProp == PRODUCTEXTENSION) { 487cdf0e10cSrcweir rtl::OUString name( 488cdf0e10cSrcweir rtl::OUString( 489cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM( 490*910823aeSJürgen Schmidt "${OOO_BASE_DIR}/program/edition/edition.ini"))); 491cdf0e10cSrcweir rtl::Bootstrap::expandMacros(name); 492cdf0e10cSrcweir if (rtl::Bootstrap(name).getFrom( 493cdf0e10cSrcweir rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("EDITIONNAME")), 494cdf0e10cSrcweir rProductExtension)) 495cdf0e10cSrcweir { 496cdf0e10cSrcweir return com::sun::star::uno::Any(rProductExtension); 497cdf0e10cSrcweir } 498cdf0e10cSrcweir } 499cdf0e10cSrcweir 500cdf0e10cSrcweir OUString sPath = C2U(cConfigBaseURL); 501cdf0e10cSrcweir switch(eProp) 502cdf0e10cSrcweir { 503cdf0e10cSrcweir case LOCALE: sPath += C2U("Setup/L10N"); break; 504cdf0e10cSrcweir 505cdf0e10cSrcweir case PRODUCTNAME: 506599cc5b4SOliver-Rainer Wittmann case FULLPRODUCTNAME: 507cdf0e10cSrcweir case PRODUCTVERSION: 508cdf0e10cSrcweir case PRODUCTEXTENSION: 509cdf0e10cSrcweir case PRODUCTXMLFILEFORMATNAME : 510cdf0e10cSrcweir case PRODUCTXMLFILEFORMATVERSION: 511cdf0e10cSrcweir case OPENSOURCECONTEXT: 512cdf0e10cSrcweir case OOOVENDOR: 513cdf0e10cSrcweir case ABOUTBOXPRODUCTVERSION: sPath += C2U("Setup/Product"); break; 514cdf0e10cSrcweir 515cdf0e10cSrcweir case DEFAULTCURRENCY: sPath += C2U("Setup/L10N"); break; 516cdf0e10cSrcweir 517cdf0e10cSrcweir case WRITERCOMPATIBILITYVERSIONOOO11: 518cdf0e10cSrcweir sPath += C2U("Office.Compatibility/WriterCompatibilityVersion"); break; 519cdf0e10cSrcweir default: 520cdf0e10cSrcweir break; 521cdf0e10cSrcweir } 522cdf0e10cSrcweir Sequence< Any > aArgs(1); 523cdf0e10cSrcweir aArgs[0] <<= sPath; 524cdf0e10cSrcweir Reference< XMultiServiceFactory > xCfgProvider = GetConfigManager()->GetConfigurationProvider(); 525cdf0e10cSrcweir if(!xCfgProvider.is()) 526cdf0e10cSrcweir return aRet; 527cdf0e10cSrcweir Reference< XInterface > xIFace; 528cdf0e10cSrcweir try 529cdf0e10cSrcweir { 530cdf0e10cSrcweir xIFace = xCfgProvider->createInstanceWithArguments( 531cdf0e10cSrcweir C2U(cAccessSrvc), 532cdf0e10cSrcweir aArgs); 533cdf0e10cSrcweir 534cdf0e10cSrcweir } 535cdf0e10cSrcweir catch(Exception&){} 536cdf0e10cSrcweir Reference<XNameAccess> xDirectAccess(xIFace, UNO_QUERY); 537cdf0e10cSrcweir if(xDirectAccess.is()) 538cdf0e10cSrcweir { 539cdf0e10cSrcweir OUString sProperty; 540cdf0e10cSrcweir switch(eProp) 541cdf0e10cSrcweir { 542cdf0e10cSrcweir case LOCALE: sProperty = C2U("ooLocale"); break; 543cdf0e10cSrcweir case PRODUCTNAME: sProperty = C2U("ooName"); break; 544599cc5b4SOliver-Rainer Wittmann case FULLPRODUCTNAME: sProperty = C2U("ooFullname"); break; 545cdf0e10cSrcweir case PRODUCTVERSION: sProperty = C2U("ooSetupVersion"); break; 546cdf0e10cSrcweir case ABOUTBOXPRODUCTVERSION: sProperty = C2U("ooSetupVersionAboutBox"); break; 547cdf0e10cSrcweir case OOOVENDOR: sProperty = C2U("ooVendor"); break; 548cdf0e10cSrcweir case PRODUCTEXTENSION: sProperty = C2U("ooSetupExtension"); break; 549cdf0e10cSrcweir case PRODUCTXMLFILEFORMATNAME: sProperty = C2U("ooXMLFileFormatName"); break; 550cdf0e10cSrcweir case PRODUCTXMLFILEFORMATVERSION: sProperty = C2U("ooXMLFileFormatVersion"); break; 551cdf0e10cSrcweir case OPENSOURCECONTEXT: sProperty = C2U("ooOpenSourceContext"); break; 552cdf0e10cSrcweir case DEFAULTCURRENCY: sProperty = C2U("ooSetupCurrency"); break; 553cdf0e10cSrcweir case WRITERCOMPATIBILITYVERSIONOOO11: sProperty = C2U("OOo11"); break; 554cdf0e10cSrcweir default: 555cdf0e10cSrcweir break; 556cdf0e10cSrcweir } 557cdf0e10cSrcweir try 558cdf0e10cSrcweir { 559cdf0e10cSrcweir aRet = xDirectAccess->getByName(sProperty); 560cdf0e10cSrcweir } 561cdf0e10cSrcweir catch(Exception&) 562cdf0e10cSrcweir { 563cdf0e10cSrcweir #if OSL_DEBUG_LEVEL > 0 564cdf0e10cSrcweir rtl::OStringBuffer aBuf(256); 565cdf0e10cSrcweir aBuf.append( "ConfigManager::GetDirectConfigProperty: could not retrieve the property \"" ); 566cdf0e10cSrcweir aBuf.append( rtl::OUStringToOString( sProperty, RTL_TEXTENCODING_ASCII_US ) ); 567cdf0e10cSrcweir aBuf.append( "\" under \"" ); 568cdf0e10cSrcweir aBuf.append( rtl::OUStringToOString( sPath, RTL_TEXTENCODING_ASCII_US ) ); 569cdf0e10cSrcweir aBuf.append( "\" (caught an exception)!" ); 570cdf0e10cSrcweir OSL_ENSURE( sal_False, aBuf.getStr() ); 571cdf0e10cSrcweir #endif 572cdf0e10cSrcweir } 573cdf0e10cSrcweir } 574cdf0e10cSrcweir 575cdf0e10cSrcweir if ( eProp == PRODUCTNAME ) 576cdf0e10cSrcweir aRet >>= rBrandName; 577cdf0e10cSrcweir 578cdf0e10cSrcweir if ( eProp == PRODUCTXMLFILEFORMATNAME ) 579cdf0e10cSrcweir aRet >>= rXMLFileFormatName; 580cdf0e10cSrcweir 581cdf0e10cSrcweir if ( eProp == PRODUCTXMLFILEFORMATVERSION ) 582cdf0e10cSrcweir aRet >>= rXMLFileFormatVersion; 583cdf0e10cSrcweir 584cdf0e10cSrcweir if ( eProp == PRODUCTVERSION ) 585cdf0e10cSrcweir aRet >>= rProductVersion; 586cdf0e10cSrcweir 587cdf0e10cSrcweir if( eProp == OOOVENDOR ) 588cdf0e10cSrcweir aRet >>= rOOOVendor; 589cdf0e10cSrcweir 590cdf0e10cSrcweir if ( eProp == ABOUTBOXPRODUCTVERSION ) 591cdf0e10cSrcweir { 592cdf0e10cSrcweir aRet >>= rAboutBoxProductVersion; 593cdf0e10cSrcweir getBasisAboutBoxProductVersion( rAboutBoxProductVersion ); 594cdf0e10cSrcweir aRet <<= rAboutBoxProductVersion; 595cdf0e10cSrcweir } 596cdf0e10cSrcweir 597cdf0e10cSrcweir if ( eProp == PRODUCTEXTENSION ) 598cdf0e10cSrcweir aRet >>= rProductExtension; 599cdf0e10cSrcweir 600cdf0e10cSrcweir if ( eProp == WRITERCOMPATIBILITYVERSIONOOO11 ) 601cdf0e10cSrcweir aRet >>= rWriterCompatibilityVersionOOo11; 602cdf0e10cSrcweir 603cdf0e10cSrcweir if ( eProp == OPENSOURCECONTEXT ) 604cdf0e10cSrcweir aRet >>= rOpenSourceContext; 605cdf0e10cSrcweir 606cdf0e10cSrcweir return aRet; 607cdf0e10cSrcweir } 608cdf0e10cSrcweir 609cdf0e10cSrcweir /*---------------------------------------------------------------------------*/ 610cdf0e10cSrcweir void ConfigManager::getBasisAboutBoxProductVersion( OUString& rVersion ) 611cdf0e10cSrcweir { 612cdf0e10cSrcweir rtl::OUString aPackageVersion = UNISTRING( "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") ":OOOPackageVersion}" ); 613cdf0e10cSrcweir rtl::Bootstrap::expandMacros( aPackageVersion ); 614cdf0e10cSrcweir 615cdf0e10cSrcweir if ( aPackageVersion.getLength() ) 616cdf0e10cSrcweir { 617cdf0e10cSrcweir sal_Int32 nTokIndex = 0; 618cdf0e10cSrcweir rtl::OUString aVersionMinor = aPackageVersion.getToken( 1, '.', nTokIndex ); 619cdf0e10cSrcweir rtl::OUString aVersionMicro; 620cdf0e10cSrcweir 621cdf0e10cSrcweir if ( nTokIndex > 0 ) 622cdf0e10cSrcweir aVersionMicro = aPackageVersion.getToken( 0, '.', nTokIndex ); 623cdf0e10cSrcweir 624cdf0e10cSrcweir if ( aVersionMinor.getLength() == 0 ) 625cdf0e10cSrcweir aVersionMinor = UNISTRING( "0" ); 626cdf0e10cSrcweir if ( aVersionMicro.getLength() == 0 ) 627cdf0e10cSrcweir aVersionMicro = UNISTRING( "0" ); 628cdf0e10cSrcweir 629cdf0e10cSrcweir sal_Int32 nIndex = rVersion.indexOf( '.' ); 630cdf0e10cSrcweir if ( nIndex == -1 ) 631cdf0e10cSrcweir { 632cdf0e10cSrcweir rVersion += UNISTRING( "." ); 633cdf0e10cSrcweir rVersion += aVersionMinor; 634cdf0e10cSrcweir } 635cdf0e10cSrcweir else 636cdf0e10cSrcweir { 637cdf0e10cSrcweir nIndex = rVersion.indexOf( '.', nIndex+1 ); 638cdf0e10cSrcweir } 639cdf0e10cSrcweir if ( nIndex == -1 ) 640cdf0e10cSrcweir { 641cdf0e10cSrcweir rVersion += UNISTRING( "." ); 642cdf0e10cSrcweir rVersion += aVersionMicro; 643cdf0e10cSrcweir } 644cdf0e10cSrcweir else 645cdf0e10cSrcweir { 646cdf0e10cSrcweir rVersion = rVersion.replaceAt( nIndex+1, rVersion.getLength()-nIndex-1, aVersionMicro ); 647cdf0e10cSrcweir } 648cdf0e10cSrcweir } 649cdf0e10cSrcweir } 650cdf0e10cSrcweir 651cdf0e10cSrcweir /* -----------------------------12.12.00 17:22-------------------------------- 652cdf0e10cSrcweir 653cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 654cdf0e10cSrcweir Reference< XHierarchicalNameAccess> ConfigManager::GetHierarchyAccess(const OUString& rFullPath) 655cdf0e10cSrcweir { 656cdf0e10cSrcweir Sequence< Any > aArgs(1); 657cdf0e10cSrcweir aArgs[0] <<= rFullPath; 658cdf0e10cSrcweir Reference< XMultiServiceFactory > xCfgProvider = GetLocalConfigurationProvider(); 659cdf0e10cSrcweir Reference< XInterface > xIFace; 660cdf0e10cSrcweir if(xCfgProvider.is()) 661cdf0e10cSrcweir { 662cdf0e10cSrcweir try 663cdf0e10cSrcweir { 664cdf0e10cSrcweir xIFace = xCfgProvider->createInstanceWithArguments( 665cdf0e10cSrcweir C2U(cAccessSrvc), 666cdf0e10cSrcweir aArgs); 667cdf0e10cSrcweir } 668cdf0e10cSrcweir #ifdef DBG_UTIL 669cdf0e10cSrcweir catch(Exception& rEx) 670cdf0e10cSrcweir { 671cdf0e10cSrcweir OString sMsg("CreateInstance exception: "); 672cdf0e10cSrcweir sMsg += OString(rEx.Message.getStr(), 673cdf0e10cSrcweir rEx.Message.getLength(), 674cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US); 675cdf0e10cSrcweir OSL_ENSURE(sal_False, sMsg.getStr()); 676cdf0e10cSrcweir } 677cdf0e10cSrcweir #else 678cdf0e10cSrcweir catch(Exception&){} 679cdf0e10cSrcweir #endif 680cdf0e10cSrcweir } 681cdf0e10cSrcweir return Reference<XHierarchicalNameAccess>(xIFace, UNO_QUERY); 682cdf0e10cSrcweir } 683cdf0e10cSrcweir /* -----------------------------12.12.00 17:17-------------------------------- 684cdf0e10cSrcweir 685cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 686cdf0e10cSrcweir Any ConfigManager::GetLocalProperty(const OUString& rProperty) 687cdf0e10cSrcweir { 688cdf0e10cSrcweir OUString sPath = C2U(cConfigBaseURL); 689cdf0e10cSrcweir sPath += rProperty; 690cdf0e10cSrcweir 691cdf0e10cSrcweir OUString sNode, sProperty; 692cdf0e10cSrcweir OSL_VERIFY( splitLastFromConfigurationPath(sPath, sNode, sProperty) ); 693cdf0e10cSrcweir 694cdf0e10cSrcweir Reference< XNameAccess> xAccess( GetHierarchyAccess(sNode), UNO_QUERY ); 695cdf0e10cSrcweir Any aRet; 696cdf0e10cSrcweir try 697cdf0e10cSrcweir { 698cdf0e10cSrcweir if(xAccess.is()) 699cdf0e10cSrcweir aRet = xAccess->getByName(sProperty); 700cdf0e10cSrcweir } 701cdf0e10cSrcweir #ifdef DBG_UTIL 702cdf0e10cSrcweir catch(Exception& rEx) 703cdf0e10cSrcweir { 704cdf0e10cSrcweir OString sMsg("GetLocalProperty: "); 705cdf0e10cSrcweir sMsg += OString(rEx.Message.getStr(), 706cdf0e10cSrcweir rEx.Message.getLength(), 707cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US); 708cdf0e10cSrcweir OSL_ENSURE(sal_False, sMsg.getStr()); 709cdf0e10cSrcweir } 710cdf0e10cSrcweir #else 711cdf0e10cSrcweir catch(Exception&){} 712cdf0e10cSrcweir #endif 713cdf0e10cSrcweir return aRet; 714cdf0e10cSrcweir } 715cdf0e10cSrcweir /* -----------------------------12.12.00 17:17-------------------------------- 716cdf0e10cSrcweir 717cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 718cdf0e10cSrcweir void ConfigManager::PutLocalProperty(const OUString& rProperty, const Any& rValue) 719cdf0e10cSrcweir { 720cdf0e10cSrcweir OUString sPath = C2U(cConfigBaseURL); 721cdf0e10cSrcweir sPath += rProperty; 722cdf0e10cSrcweir 723cdf0e10cSrcweir OUString sNode, sProperty; 724cdf0e10cSrcweir OSL_VERIFY( splitLastFromConfigurationPath(sPath, sNode, sProperty) ); 725cdf0e10cSrcweir 726cdf0e10cSrcweir Reference<XNameReplace> xNodeReplace(GetHierarchyAccess(sNode), UNO_QUERY); 727cdf0e10cSrcweir if(xNodeReplace.is()) 728cdf0e10cSrcweir { 729cdf0e10cSrcweir try 730cdf0e10cSrcweir { 731cdf0e10cSrcweir xNodeReplace->replaceByName(sProperty, rValue); 732cdf0e10cSrcweir } 733cdf0e10cSrcweir #ifdef DBG_UTIL 734cdf0e10cSrcweir catch(Exception& rEx) 735cdf0e10cSrcweir { 736cdf0e10cSrcweir OString sMsg("PutLocalProperty: "); 737cdf0e10cSrcweir sMsg += OString(rEx.Message.getStr(), 738cdf0e10cSrcweir rEx.Message.getLength(), 739cdf0e10cSrcweir RTL_TEXTENCODING_ASCII_US); 740cdf0e10cSrcweir OSL_ENSURE(sal_False, sMsg.getStr()); 741cdf0e10cSrcweir } 742cdf0e10cSrcweir #else 743cdf0e10cSrcweir catch(Exception& ){} 744cdf0e10cSrcweir #endif 745cdf0e10cSrcweir } 746cdf0e10cSrcweir } 747cdf0e10cSrcweir /* -----------------------------13.12.00 08:47-------------------------------- 748cdf0e10cSrcweir 749cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 750cdf0e10cSrcweir sal_Bool ConfigManager::IsLocalConfigProvider() 751cdf0e10cSrcweir { 752cdf0e10cSrcweir return false; 753cdf0e10cSrcweir } 754cdf0e10cSrcweir 755