[Libreoffice-commits] .: unotools/inc unotools/source

Caolán McNamara caolan at kemper.freedesktop.org
Tue Oct 12 07:37:08 PDT 2010


 unotools/inc/unotools/configmgr.hxx      |    4 ---
 unotools/source/config/configitem.cxx    |    2 -
 unotools/source/config/configmgr.cxx     |   22 +++-------------
 unotools/source/config/docinfohelper.cxx |   41 ++++++++++++++-----------------
 unotools/source/config/pathoptions.cxx   |    2 -
 unotools/source/config/useroptions.cxx   |    2 -
 6 files changed, 27 insertions(+), 46 deletions(-)

New commits:
commit 824b7fbefdf081dd2ebb2e14f68c127b5fe28d95
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Oct 11 15:19:05 2010 +0100

    #i112786# make ConfigManager a well-behaved singleton

diff --git a/unotools/inc/unotools/configmgr.hxx b/unotools/inc/unotools/configmgr.hxx
index b1a349b..20efadd 100644
--- a/unotools/inc/unotools/configmgr.hxx
+++ b/unotools/inc/unotools/configmgr.hxx
@@ -54,7 +54,6 @@ namespace utl
                                 xConfigurationProvider;
             ConfigMgr_Impl*     pMgrImpl;
 
-            static  ConfigManager*  pConfigManager;
             static void getBasisAboutBoxProductVersion( rtl::OUString& rVersion );
 
         public:
@@ -80,8 +79,7 @@ namespace utl
 
             void StoreConfigItems();
 
-            static ConfigManager*           GetConfigManager();
-            static void                     RemoveConfigManager();
+            static ConfigManager&           GetConfigManager();
             static rtl::OUString            GetConfigBaseURL();
 
             enum ConfigProperty
diff --git a/unotools/source/config/configitem.cxx b/unotools/source/config/configitem.cxx
index a3268cf..0172276 100644
--- a/unotools/source/config/configitem.cxx
+++ b/unotools/source/config/configitem.cxx
@@ -240,7 +240,7 @@ ConfigItem::ConfigItem(const OUString rSubTree, sal_Int16 nSetMode ) :
 {
     AutoDeleter<ConfigItem_Impl> aNewImpl(pImpl);
 
-    pImpl->pManager = ConfigManager::GetConfigManager();
+    pImpl->pManager = &ConfigManager::GetConfigManager();
     pImpl->nMode = nSetMode;
     if(0 != (nSetMode&CONFIG_MODE_RELEASE_TREE))
         pImpl->pManager->AddConfigItem(*this);
diff --git a/unotools/source/config/configmgr.cxx b/unotools/source/config/configmgr.cxx
index 9f8b904..28a9dde 100644
--- a/unotools/source/config/configmgr.cxx
+++ b/unotools/source/config/configmgr.cxx
@@ -352,28 +352,14 @@ void ConfigManager::StoreConfigItems()
         }
     }
 }
-ConfigManager*	 ConfigManager::pConfigManager = 0;
 /* -----------------------------07.09.00 11:06--------------------------------
 
  ---------------------------------------------------------------------------*/
-ConfigManager*	ConfigManager::GetConfigManager()
-{
-    if(!pConfigManager)
-    {
-        pConfigManager = new ConfigManager();
-    }
-    return pConfigManager;
-}
-/* -----------------------------07.09.00 11:06--------------------------------
+struct theConfigManager : public rtl::Static<ConfigManager, theConfigManager> {};
 
- ---------------------------------------------------------------------------*/
-void	ConfigManager::RemoveConfigManager()
+ConfigManager& ConfigManager::GetConfigManager()
 {
-    if(pConfigManager)
-    {
-        delete pConfigManager;
-        pConfigManager = 0;
-    }
+    return theConfigManager::get();
 }
 /* -----------------------------08.09.00 13:22--------------------------------
 
@@ -515,7 +501,7 @@ Any ConfigManager::GetDirectConfigProperty(ConfigProperty eProp)
     }
     Sequence< Any > aArgs(1);
     aArgs[0] <<= sPath;
-    Reference< XMultiServiceFactory > xCfgProvider = GetConfigManager()->GetConfigurationProvider();
+    Reference< XMultiServiceFactory > xCfgProvider = GetConfigManager().GetConfigurationProvider();
     if(!xCfgProvider.is())
         return aRet;
     Reference< XInterface > xIFace;
diff --git a/unotools/source/config/docinfohelper.cxx b/unotools/source/config/docinfohelper.cxx
index f75d0c0..5b02624 100644
--- a/unotools/source/config/docinfohelper.cxx
+++ b/unotools/source/config/docinfohelper.cxx
@@ -45,39 +45,36 @@ namespace utl
 
     // First product: branded name + version
     // version is <product_versions>_<product_extension>$<platform>
-    utl::ConfigManager* pMgr = utl::ConfigManager::GetConfigManager();
-    if ( pMgr )
+    utl::ConfigManager& rMgr = utl::ConfigManager::GetConfigManager();
+    // plain product name
+    rtl::OUString aValue;
+    uno::Any aAny = rMgr.GetDirectConfigProperty(
+                                        utl::ConfigManager::PRODUCTNAME);
+    if ( (aAny >>= aValue) && aValue.getLength() )
     {
-        // plain product name
-        rtl::OUString aValue;
-        uno::Any aAny = pMgr->GetDirectConfigProperty(
-                                            utl::ConfigManager::PRODUCTNAME);
+        aResult.append( aValue.replace( ' ', '_' ) );
+        aResult.append( (sal_Unicode)'/' );
+
+        aAny = rMgr.GetDirectConfigProperty(
+                                    utl::ConfigManager::PRODUCTVERSION);
         if ( (aAny >>= aValue) && aValue.getLength() )
         {
             aResult.append( aValue.replace( ' ', '_' ) );
-            aResult.append( (sal_Unicode)'/' );
 
-            aAny = pMgr->GetDirectConfigProperty(
-                                        utl::ConfigManager::PRODUCTVERSION);
+            aAny = rMgr.GetDirectConfigProperty(
+                                    utl::ConfigManager::PRODUCTEXTENSION);
             if ( (aAny >>= aValue) && aValue.getLength() )
             {
+                aResult.append( (sal_Unicode)'_' );
                 aResult.append( aValue.replace( ' ', '_' ) );
-
-                aAny = pMgr->GetDirectConfigProperty(
-                                        utl::ConfigManager::PRODUCTEXTENSION);
-                if ( (aAny >>= aValue) && aValue.getLength() )
-                {
-                    aResult.append( (sal_Unicode)'_' );
-                    aResult.append( aValue.replace( ' ', '_' ) );
-                }
             }
+        }
 
-            aResult.append( (sal_Unicode)'$' );
-            aResult.append( ::rtl::OUString::createFromAscii(
-                                    TOOLS_INETDEF_OS ).replace( ' ', '_' ) );
+        aResult.append( (sal_Unicode)'$' );
+        aResult.append( ::rtl::OUString::createFromAscii(
+                                TOOLS_INETDEF_OS ).replace( ' ', '_' ) );
 
-            aResult.append( (sal_Unicode)' ' );
-        }
+        aResult.append( (sal_Unicode)' ' );
     }
 
     // second product: OpenOffice.org_project/<build_information>
diff --git a/unotools/source/config/pathoptions.cxx b/unotools/source/config/pathoptions.cxx
index 6580e4e..cb84cfd 100644
--- a/unotools/source/config/pathoptions.cxx
+++ b/unotools/source/config/pathoptions.cxx
@@ -530,7 +530,7 @@ SvtPathOptions_Impl::SvtPathOptions_Impl() :
     }
 
     // Set language type!
-    Any aLocale = ConfigManager::GetConfigManager()->GetDirectConfigProperty( ConfigManager::LOCALE );
+    Any aLocale = ConfigManager::GetConfigManager().GetDirectConfigProperty( ConfigManager::LOCALE );
     OUString aLocaleStr;
     if ( aLocale >>= aLocaleStr )
     {
diff --git a/unotools/source/config/useroptions.cxx b/unotools/source/config/useroptions.cxx
index e8292ae..d8e7b49 100644
--- a/unotools/source/config/useroptions.cxx
+++ b/unotools/source/config/useroptions.cxx
@@ -212,7 +212,7 @@ SvtUserOptions_Impl::SvtUserOptions_Impl() :
         LogHelper::logIt(ex);
     }
 
-    Any aAny = ConfigManager::GetConfigManager()->GetDirectConfigProperty( ConfigManager::LOCALE );
+    Any aAny = ConfigManager::GetConfigManager().GetDirectConfigProperty( ConfigManager::LOCALE );
     ::rtl::OUString aLocale;
     if ( aAny >>= aLocale )
         m_aLocale = aLocale;


More information about the Libreoffice-commits mailing list