[Libreoffice-commits] .: canvas/source comphelper/inc comphelper/source configmgr/qa connectivity/source cui/source dbaccess/qa desktop/inc desktop/source desktop/test extensions/source filter/source odk/examples offapi/com offapi/UnoApi_offapi.mk qadevOOo/tests testautomation/global

Stephan Bergmann sbergmann at kemper.freedesktop.org
Mon Nov 14 13:10:35 PST 2011


 canvas/source/factory/cf_service.cxx                                                                |    5 
 comphelper/inc/comphelper/processfactory.hxx                                                        |   11 
 comphelper/source/misc/configurationhelper.cxx                                                      |    5 
 comphelper/source/misc/mimeconfighelper.cxx                                                         |    8 
 comphelper/source/processfactory/processfactory.cxx                                                 |   11 
 configmgr/qa/unit/test.cxx                                                                          |    9 
 connectivity/source/cpool/ZPoolCollection.cxx                                                       |   82 +----
 connectivity/source/cpool/makefile.mk                                                               |    1 
 connectivity/source/drivers/hsqldb/HDriver.cxx                                                      |   11 
 connectivity/source/drivers/kab/KDriver.cxx                                                         |    6 
 connectivity/source/drivers/kab/makefile.mk                                                         |    1 
 connectivity/source/drivers/mozab/MConfigAccess.cxx                                                 |   66 ++--
 connectivity/source/manager/mdrivermanager.cxx                                                      |    9 
 cui/source/options/optgdlg.cxx                                                                      |   45 +--
 cui/source/options/optinet2.cxx                                                                     |   41 +-
 cui/source/options/optupdt.cxx                                                                      |    7 
 dbaccess/qa/complex/dbaccess/DatabaseDocument.java                                                  |    9 
 dbaccess/qa/complex/dbaccess/TestCase.java                                                          |   14 -
 desktop/inc/app.hxx                                                                                 |    2 
 desktop/source/app/app.cxx                                                                          |  139 ----------
 desktop/source/app/appfirststart.cxx                                                                |   13 
 desktop/source/app/check_ext_deps.cxx                                                               |   20 -
 desktop/source/app/configinit.cxx                                                                   |  116 --------
 desktop/source/app/configinit.hxx                                                                   |   27 -
 desktop/source/app/langselect.cxx                                                                   |   48 +--
 desktop/source/app/userinstall.cxx                                                                  |   25 -
 desktop/source/deployment/gui/dp_gui_theextmgr.cxx                                                  |    4 
 desktop/source/deployment/gui/dp_gui_updatedialog.cxx                                               |   15 -
 desktop/source/migration/migration.cxx                                                              |   20 -
 desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java |   21 -
 extensions/source/config/ldap/ldapuserprofilebe.cxx                                                 |   17 -
 extensions/source/config/ldap/ldapuserprofilebe.hxx                                                 |    8 
 extensions/source/logging/loggerconfig.cxx                                                          |    9 
 extensions/source/oooimprovement/makefile.mk                                                        |    1 
 extensions/source/oooimprovement/myconfigurationhelper.cxx                                          |   43 ---
 extensions/source/oooimprovement/myconfigurationhelper.hxx                                          |    4 
 extensions/source/update/check/download.cxx                                                         |   16 -
 extensions/source/update/check/updatecheckconfig.cxx                                                |   16 -
 extensions/source/update/check/updatehdl.cxx                                                        |   13 
 extensions/source/update/feed/updatefeed.cxx                                                        |   16 -
 filter/source/config/cache/constant.hxx                                                             |    1 
 filter/source/config/cache/filtercache.cxx                                                          |   10 
 filter/source/msfilter/msoleexp.cxx                                                                 |   49 +--
 filter/source/pdf/pdfexport.cxx                                                                     |   87 +++---
 odk/examples/java/Inspector/Inspector.java                                                          |    4 
 offapi/UnoApi_offapi.mk                                                                             |    1 
 offapi/com/sun/star/configuration/DefaultProvider.idl                                               |    3 
 offapi/com/sun/star/configuration/theDefaultProvider.idl                                            |   54 +++
 qadevOOo/tests/java/mod/_configmgr/DefaultProvider.java                                             |    5 
 testautomation/global/system/includes/iniinfo.inc                                                   |    2 
 50 files changed, 385 insertions(+), 765 deletions(-)

New commits:
commit 8b75883b87c9f7989f98fb413f5e51200c52891c
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Nov 14 22:07:23 2011 +0100

    Simplified some uses of css.configuration.theDefaultProvider.
    
    * Retro-added new-style UNOIDL singleton specification for it, for easy
    instantiation.
    * Plus new comphelper::getComponentContext to map from XMultiServiceFactory
    to XComponentContext.

diff --git a/canvas/source/factory/cf_service.cxx b/canvas/source/factory/cf_service.cxx
index 7b8e876..349e9bd 100644
--- a/canvas/source/factory/cf_service.cxx
+++ b/canvas/source/factory/cf_service.cxx
@@ -39,6 +39,7 @@
 #include <com/sun/star/uno/XComponentContext.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
 #include <com/sun/star/lang/XSingleComponentFactory.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XContentEnumerationAccess.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/container/XHierarchicalNameAccess.hpp>
@@ -154,9 +155,7 @@ CanvasFactory::CanvasFactory( Reference<XComponentContext> const & xContext ) :
     {
         // read out configuration for preferred services:
         Reference<lang::XMultiServiceFactory> xConfigProvider(
-            m_xContext->getServiceManager()->createInstanceWithContext(
-                OUSTR("com.sun.star.configuration.ConfigurationProvider"),
-                m_xContext ), UNO_QUERY_THROW );
+            configuration::theDefaultProvider::get( m_xContext ) );
 
         Any propValue(
             makeAny( beans::PropertyValue(
diff --git a/comphelper/inc/comphelper/processfactory.hxx b/comphelper/inc/comphelper/processfactory.hxx
index 6f608cc..e365153 100644
--- a/comphelper/inc/comphelper/processfactory.hxx
+++ b/comphelper/inc/comphelper/processfactory.hxx
@@ -75,6 +75,17 @@ COMPHELPER_DLLPUBLIC ::com::sun::star::uno::Reference< ::com::sun::star::uno::XI
         const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& _rArgs
     ) SAL_THROW( ( ::com::sun::star::uno::RuntimeException ) );
 
+/** Tries to obtain a component context from a service factory.
+
+    @param factory may be null
+    @return may be null
+ */
+COMPHELPER_DLLPUBLIC
+com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+getComponentContext(
+    com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >
+        const & factory);
+
 /**
  * This function gets the process service factory's default component context.
  * If no service factory is set the function returns a null interface.
diff --git a/comphelper/source/misc/configurationhelper.cxx b/comphelper/source/misc/configurationhelper.cxx
index 1016c88..9911fd2 100644
--- a/comphelper/source/misc/configurationhelper.cxx
+++ b/comphelper/source/misc/configurationhelper.cxx
@@ -32,7 +32,9 @@
 //_______________________________________________
 // includes
 #include <comphelper/configurationhelper.hxx>
+#include <comphelper/processfactory.hxx>
 #include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/container/XNameContainer.hpp>
 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
@@ -53,7 +55,8 @@ css::uno::Reference< css::uno::XInterface > ConfigurationHelper::openConfig(cons
                                                                                   sal_Int32                                              eMode   )
 {
     css::uno::Reference< css::lang::XMultiServiceFactory > xConfigProvider(
-        xSMGR->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"))), css::uno::UNO_QUERY_THROW);
+        css::configuration::theDefaultProvider::get(
+            getComponentContext( xSMGR ) ) );
 
     ::comphelper::SequenceAsVector< css::uno::Any > lParams;
     css::beans::PropertyValue                       aParam ;
diff --git a/comphelper/source/misc/mimeconfighelper.cxx b/comphelper/source/misc/mimeconfighelper.cxx
index dfa66e8..92f4a25 100644
--- a/comphelper/source/misc/mimeconfighelper.cxx
+++ b/comphelper/source/misc/mimeconfighelper.cxx
@@ -29,11 +29,13 @@
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_comphelper.hxx"
 #include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XContainerQuery.hpp>
 #include <com/sun/star/document/XTypeDetection.hpp>
 
 #include <comphelper/fileformat.h>
 #include <comphelper/mimeconfighelper.hxx>
+#include <comphelper/processfactory.hxx>
 #include <comphelper/classids.hxx>
 #include <comphelper/sequenceashashmap.hxx>
 #include <comphelper/documentconstants.hxx>
@@ -131,10 +133,8 @@ uno::Reference< container::XNameAccess > MimeConfigurationHelper::GetConfigurati
     try
     {
         if ( !m_xConfigProvider.is() )
-            m_xConfigProvider = uno::Reference< lang::XMultiServiceFactory >(
-                m_xFactory->createInstance(
-                    ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" )) ),
-                uno::UNO_QUERY_THROW );
+            m_xConfigProvider = configuration::theDefaultProvider::get(
+                getComponentContext( m_xFactory ) );
 
         uno::Sequence< uno::Any > aArgs( 1 );
         beans::PropertyValue aPathProp;
diff --git a/comphelper/source/processfactory/processfactory.cxx b/comphelper/source/processfactory/processfactory.cxx
index f9b2218..c07d195 100644
--- a/comphelper/source/processfactory/processfactory.cxx
+++ b/comphelper/source/processfactory/processfactory.cxx
@@ -96,11 +96,11 @@ Reference< XInterface > createProcessComponentWithArguments( const ::rtl::OUStri
     return xComponent;
 }
 
-Reference< XComponentContext > getProcessComponentContext()
+Reference< XComponentContext > getComponentContext(
+    Reference< XMultiServiceFactory > const & factory)
 {
     Reference< XComponentContext > xRet;
-    uno::Reference<beans::XPropertySet> const xProps(
-        comphelper::getProcessServiceFactory(), uno::UNO_QUERY );
+    uno::Reference<beans::XPropertySet> const xProps( factory, uno::UNO_QUERY );
     if (xProps.is()) {
         try {
             xRet.set( xProps->getPropertyValue( rtl::OUString(
@@ -113,6 +113,11 @@ Reference< XComponentContext > getProcessComponentContext()
     return xRet;
 }
 
+Reference< XComponentContext > getProcessComponentContext()
+{
+    return getComponentContext( getProcessServiceFactory() );
+}
+
 } // namespace comphelper
 
 extern "C" {
diff --git a/configmgr/qa/unit/test.cxx b/configmgr/qa/unit/test.cxx
index fe8d29e..f645517 100644
--- a/configmgr/qa/unit/test.cxx
+++ b/configmgr/qa/unit/test.cxx
@@ -36,6 +36,7 @@
 #include "com/sun/star/beans/XPropertyChangeListener.hpp"
 #include "com/sun/star/beans/XPropertySet.hpp"
 #include "com/sun/star/beans/XPropertyState.hpp"
+#include "com/sun/star/configuration/theDefaultProvider.hpp"
 #include "com/sun/star/container/XHierarchicalNameAccess.hpp"
 #include "com/sun/star/container/XNameReplace.hpp"
 #include "com/sun/star/container/XNamed.hpp"
@@ -371,13 +372,7 @@ void Test::setUp() {
             css::uno::UNO_QUERY_THROW)->getPropertyValue(
                 rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext"))),
         css::uno::UNO_QUERY_THROW);
-    CPPUNIT_ASSERT(
-        context_->getValueByName(
-            rtl::OUString(
-                RTL_CONSTASCII_USTRINGPARAM(
-                    "/singletons/"
-                    "com.sun.star.configuration.theDefaultProvider"))) >>=
-        provider_);
+    provider_ = css::configuration::theDefaultProvider::get(context_);
 }
 
 void Test::tearDown() {
diff --git a/connectivity/source/cpool/ZPoolCollection.cxx b/connectivity/source/cpool/ZPoolCollection.cxx
index 2db64d3..ff2220a 100644
--- a/connectivity/source/cpool/ZPoolCollection.cxx
+++ b/connectivity/source/cpool/ZPoolCollection.cxx
@@ -31,9 +31,12 @@
 #include "ZPoolCollection.hxx"
 #include "ZDriverWrapper.hxx"
 #include "ZConnectionPool.hxx"
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XHierarchicalNameAccess.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
 #include <com/sun/star/beans/PropertyValue.hpp>
 #include <comphelper/extract.hxx>
+#include <comphelper/processfactory.hxx>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include "diagnose_ex.h"
 
@@ -351,71 +354,30 @@ OConnectionPool* OPoolCollection::getConnectionPool(const ::rtl::OUString& _sImp
 // -----------------------------------------------------------------------------
 Reference< XInterface > OPoolCollection::createWithServiceFactory(const ::rtl::OUString& _rPath) const
 {
-    Reference< XInterface > xInterface;
-    try
-    {
-        Reference< XInterface > xProvider = m_xServiceFactory->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider")));
-        OSL_ENSURE(xProvider.is(), "OConfigurationTreeRoot::createWithServiceFactory: could not instantiate the config provider service!");
-        Reference< XMultiServiceFactory > xProviderAsFac(xProvider, UNO_QUERY);
-        OSL_ENSURE(xProviderAsFac.is() || !xProvider.is(), "OConfigurationTreeRoot::createWithServiceFactory: the provider is missing an interface!");
-        if (xProviderAsFac.is())
-            xInterface = createWithProvider(xProviderAsFac, _rPath);
-    }
-    catch(const Exception&)
-    {
-        OSL_FAIL("createWithServiceFactory: error while instantiating the provider service!");
-    }
-    return xInterface;
+    return createWithProvider(
+        com::sun::star::configuration::theDefaultProvider::get(
+            comphelper::getComponentContext(m_xServiceFactory)),
+        _rPath);
 }
 //------------------------------------------------------------------------
 Reference< XInterface > OPoolCollection::createWithProvider(const Reference< XMultiServiceFactory >& _rxConfProvider,
                             const ::rtl::OUString& _rPath) const
 {
-    OSL_ENSURE(_rxConfProvider.is(), "createWithProvider: invalid provider!");
-
-    Reference< XInterface > xInterface;
-#ifdef DBG_UTIL
-    if (_rxConfProvider.is())
-    {
-        try
-        {
-            Reference< XServiceInfo > xSI(_rxConfProvider, UNO_QUERY);
-            if (!xSI.is())
-            {
-                OSL_FAIL("::createWithProvider: no XServiceInfo interface on the provider!");
-            }
-            else
-            {
-                OSL_ENSURE(xSI->supportsService(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"))),
-                    "::createWithProvider: sure this is a provider? Missing the ConfigurationProvider service!");
-            }
-        }
-        catch(const Exception&)
-        {
-            OSL_FAIL("::createWithProvider: unable to check the service conformance of the provider given!");
-        }
-    }
-#endif
-
-    if (_rxConfProvider.is())
-    {
-        try
-        {
-            Sequence< Any > aCreationArgs(3);
-            aCreationArgs[0] = makeAny(PropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")), 0, makeAny(_rPath), PropertyState_DIRECT_VALUE));
-            aCreationArgs[1] = makeAny(PropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("depth")), 0, makeAny((sal_Int32)-1), PropertyState_DIRECT_VALUE));
-            aCreationArgs[2] = makeAny(PropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("lazywrite")), 0, makeAny(sal_True), PropertyState_DIRECT_VALUE));
-
-            static ::rtl::OUString sAccessService( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationAccess" ));
-
-            xInterface = _rxConfProvider->createInstanceWithArguments(sAccessService, aCreationArgs);
-            OSL_ENSURE(xInterface.is(), "::createWithProvider: could not create the node access!");
-        }
-        catch(Exception&)
-        {
-            OSL_FAIL("OConfigurationTreeRoot::createWithProvider: caught an exception while creating the access object!");
-        }
-    }
+    OSL_ASSERT(_rxConfProvider.is());
+    Sequence< Any > args(1);
+    args[0] = makeAny(
+        NamedValue(
+            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")),
+            makeAny(_rPath)));
+    Reference< XInterface > xInterface(
+        _rxConfProvider->createInstanceWithArguments(
+            rtl::OUString(
+                RTL_CONSTASCII_USTRINGPARAM(
+                    "com.sun.star.configuration.ConfigurationAccess")),
+            args));
+    OSL_ENSURE(
+        xInterface.is(),
+        "::createWithProvider: could not create the node access!");
     return xInterface;
 }
 // -----------------------------------------------------------------------------
diff --git a/connectivity/source/cpool/makefile.mk b/connectivity/source/cpool/makefile.mk
index 45ec372..a1424dd 100755
--- a/connectivity/source/cpool/makefile.mk
+++ b/connectivity/source/cpool/makefile.mk
@@ -59,6 +59,7 @@ SHL1VERSIONMAP=$(SOLARENV)/src/component.map
 
 SHL1OBJS=$(SLOFILES)
 SHL1STDLIBS=\
+    $(COMPHELPERLIB)            \
     $(CPPULIB)					\
     $(CPPUHELPERLIB)			\
     $(DBTOOLSLIB)				\
diff --git a/connectivity/source/drivers/hsqldb/HDriver.cxx b/connectivity/source/drivers/hsqldb/HDriver.cxx
index 7d2623a..d59d4cc 100644
--- a/connectivity/source/drivers/hsqldb/HDriver.cxx
+++ b/connectivity/source/drivers/hsqldb/HDriver.cxx
@@ -32,6 +32,7 @@
 #include "hsqldb/HConnection.hxx"
 #include <osl/diagnose.h>
 #include "connectivity/dbexception.hxx"
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/sdbc/XDriverAccess.hpp>
 #include <com/sun/star/sdbc/XResultSet.hpp>
 #include <com/sun/star/sdbc/XRow.hpp>
@@ -53,6 +54,7 @@
 #include <osl/process.h>
 #include <connectivity/dbexception.hxx>
 #include <comphelper/namedvaluecollection.hxx>
+#include <comphelper/processfactory.hxx>
 #include <comphelper/string.hxx>
 #include <unotools/confignode.hxx>
 #include <unotools/ucbstreamhelper.hxx>
@@ -837,13 +839,8 @@ namespace connectivity
             {
                 //.........................................................
                 Reference< XMultiServiceFactory > xConfigProvider(
-                    _rxORB->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider")) ),
-                    UNO_QUERY
-                );
-                OSL_ENSURE( xConfigProvider.is(), "lcl_getSystemLocale: could not create the config provider!" );
-
-                if ( !xConfigProvider.is() )
-                    return sLocaleString;
+                    com::sun::star::configuration::theDefaultProvider::get(
+                        comphelper::getComponentContext( _rxORB ) ) );
 
                 //.........................................................
                 // arguments for creating the config access
diff --git a/connectivity/source/drivers/kab/KDriver.cxx b/connectivity/source/drivers/kab/KDriver.cxx
index 7240e53..a67c6ca 100644
--- a/connectivity/source/drivers/kab/KDriver.cxx
+++ b/connectivity/source/drivers/kab/KDriver.cxx
@@ -35,10 +35,12 @@
 #include "rtl/strbuf.hxx"
 
 /** === begin UNO includes === **/
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/sdb/SQLContext.hpp>
 #include <com/sun/star/lang/NullPointerException.hpp>
 #include <com/sun/star/frame/XDesktop.hpp>
 /** === end UNO includes === **/
+#include <comphelper/processfactory.hxx>
 #include <rtl/ustrbuf.hxx>
 #include <tools/diagnose_ex.h>
 #include "resource/kab_res.hrc"
@@ -192,8 +194,8 @@ bool KabImplModule::impl_doAllowNewKDEVersion()
     try
     {
         Reference< XMultiServiceFactory > xConfigProvider(
-            m_xORB->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) ) ),
-            UNO_QUERY_THROW );
+            com::sun::star::configuration::theDefaultProvider::get(
+                comphelper::getComponentContext( m_xORB ) ) );
         Sequence< Any > aCreationArgs(1);
         aCreationArgs[0] <<= PropertyValue(
                                 ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ),
diff --git a/connectivity/source/drivers/kab/makefile.mk b/connectivity/source/drivers/kab/makefile.mk
index 13d4857..b3690cc 100755
--- a/connectivity/source/drivers/kab/makefile.mk
+++ b/connectivity/source/drivers/kab/makefile.mk
@@ -69,6 +69,7 @@ SHL1VERSIONMAP=$(SOLARENV)/src/component.map
 SHL1TARGET= $(TARGET)$(KAB_MAJOR)
 SHL1OBJS=$(SLOFILES)
 SHL1STDLIBS=\
+    $(COMPHELPERLIB)            \
     $(CPPULIB)                  \
     $(CPPUHELPERLIB)            \
     $(DBTOOLSLIB)               \
diff --git a/connectivity/source/drivers/mozab/MConfigAccess.cxx b/connectivity/source/drivers/mozab/MConfigAccess.cxx
index 482f1f8..e5c1f0d 100644
--- a/connectivity/source/drivers/mozab/MConfigAccess.cxx
+++ b/connectivity/source/drivers/mozab/MConfigAccess.cxx
@@ -29,6 +29,9 @@
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_connectivity.hxx"
 
+#include "com/sun/star/configuration/theDefaultProvider.hpp"
+#include "comphelper/processfactory.hxx"
+
 #include "MConfigAccess.hxx"
 #include "MExtConfigAccess.hxx"
 #include "MConnection.hxx"
@@ -51,44 +54,39 @@ namespace connectivity
                 //=============================================================
                 // create the config provider
                 Reference< XMultiServiceFactory > xConfigProvider(
-                    _rxORB->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider" )) ),
-                    UNO_QUERY
-                );
-                OSL_ENSURE( xConfigProvider.is(), "createDriverConfigNode: could not create the config provider!" );
+                    com::sun::star::configuration::theDefaultProvider::get(
+                        comphelper::getComponentContext( _rxORB ) ) );
 
-                if ( xConfigProvider.is() )
-                {
-                    ::rtl::OUString sCompleteNodePath(RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.DataAccess/DriverSettings/" ));
-                    sCompleteNodePath += OConnection::getDriverImplementationName();
+                ::rtl::OUString sCompleteNodePath(RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.DataAccess/DriverSettings/" ));
+                sCompleteNodePath += OConnection::getDriverImplementationName();
 
-                    //=========================================================
-                    // arguments for creating the config access
-                    Sequence< Any > aArguments(2);
-                    // the path to the node to open
-                    aArguments[0] <<= PropertyValue(
-                        ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("nodepath")),
-                        0,
-                        makeAny( sCompleteNodePath ),
-                        PropertyState_DIRECT_VALUE
-                    );
-                    // the depth: -1 means unlimited
-                    aArguments[1] <<= PropertyValue(
-                        ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("depth")),
-                        0,
-                        makeAny( (sal_Int32)-1 ),
-                        PropertyState_DIRECT_VALUE
-                    );
+                //=========================================================
+                // arguments for creating the config access
+                Sequence< Any > aArguments(2);
+                // the path to the node to open
+                aArguments[0] <<= PropertyValue(
+                    ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("nodepath")),
+                    0,
+                    makeAny( sCompleteNodePath ),
+                    PropertyState_DIRECT_VALUE
+                );
+                // the depth: -1 means unlimited
+                aArguments[1] <<= PropertyValue(
+                    ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("depth")),
+                    0,
+                    makeAny( (sal_Int32)-1 ),
+                    PropertyState_DIRECT_VALUE
+                );
 
-                    //=========================================================
-                    // create the access
-                    Reference< XInterface > xAccess = xConfigProvider->createInstanceWithArguments(
-                        ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationAccess" )),
-                        aArguments
-                    );
-                    OSL_ENSURE( xAccess.is(), "createDriverConfigNode: invalid access returned (should throw an exception instead)!" );
+                //=========================================================
+                // create the access
+                Reference< XInterface > xAccess = xConfigProvider->createInstanceWithArguments(
+                    ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationAccess" )),
+                    aArguments
+                );
+                OSL_ENSURE( xAccess.is(), "createDriverConfigNode: invalid access returned (should throw an exception instead)!" );
 
-                    xNode = xNode.query( xAccess );
-                }
+                xNode = xNode.query( xAccess );
             }
             catch( const Exception& )
             {
diff --git a/connectivity/source/manager/mdrivermanager.cxx b/connectivity/source/manager/mdrivermanager.cxx
index 261d020..8deab81 100644
--- a/connectivity/source/manager/mdrivermanager.cxx
+++ b/connectivity/source/manager/mdrivermanager.cxx
@@ -32,11 +32,11 @@
 #include <stdio.h>
 
 #include "mdrivermanager.hxx"
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/sdbc/XDriver.hpp>
 #include <com/sun/star/container/XContentEnumerationAccess.hpp>
 #include <com/sun/star/container/ElementExistException.hpp>
 #include <com/sun/star/beans/NamedValue.hpp>
-#include <com/sun/star/lang/ServiceNotRegisteredException.hpp>
 
 #include <tools/diagnose_ex.h>
 #include <comphelper/extract.hxx>
@@ -186,16 +186,15 @@ Any SAL_CALL ODriverEnumeration::nextElement(  ) throw(NoSuchElementException, W
         try
         {
             // some strings we need
-            const ::rtl::OUString sConfigurationProviderServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ));
             const ::rtl::OUString sDriverManagerConfigLocation( RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Office.DataAccess/DriverManager" ));
             const ::rtl::OUString sDriverPreferenceLocation( RTL_CONSTASCII_USTRINGPARAM( "DriverPrecedence" ));
             const ::rtl::OUString sNodePathArgumentName( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ));
             const ::rtl::OUString sNodeAccessServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationAccess" ));
 
             // create a configuration provider
-            Reference< XMultiServiceFactory > xConfigurationProvider;
-            if ( !_rContext.createComponent( sConfigurationProviderServiceName, xConfigurationProvider ) )
-                throw ServiceNotRegisteredException( sConfigurationProviderServiceName, NULL );
+            Reference< XMultiServiceFactory > xConfigurationProvider(
+                com::sun::star::configuration::theDefaultProvider::get(
+                    _rContext.getUNOContext() ) );
 
             // one argument for creating the node access: the path to the configuration node
             Sequence< Any > aCreationArgs(1);
diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx
index 72355b7..3d2fdb4 100644
--- a/cui/source/options/optgdlg.cxx
+++ b/cui/source/options/optgdlg.cxx
@@ -77,6 +77,7 @@
 #include <unotools/saveopt.hxx>
 #include <sal/macros.h>
 
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/container/XNameReplace.hpp>
 #include <com/sun/star/container/XHierarchicalNameAccess.hpp>
@@ -587,17 +588,14 @@ CanvasSettings::CanvasSettings() :
 {
     try
     {
-        Reference< XMultiServiceFactory > xFactory = comphelper::getProcessServiceFactory();
         Reference<XMultiServiceFactory> xConfigProvider(
-            xFactory->createInstance(
-                OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"))),
-                UNO_QUERY_THROW );
+            com::sun::star::configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext()));
 
         Any propValue(
-            makeAny( PropertyValue(
-                         OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")), -1,
-                         makeAny( OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.Canvas")) ),
-                         PropertyState_DIRECT_VALUE ) ) );
+            makeAny( NamedValue(
+                         OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")),
+                         makeAny( OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.Canvas")) ) ) ) );
 
         mxForceFlagNameAccess.set(
             xConfigProvider->createInstanceWithArguments(
@@ -606,10 +604,9 @@ CanvasSettings::CanvasSettings() :
             UNO_QUERY_THROW );
 
         propValue = makeAny(
-            PropertyValue(
-                OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")), -1,
-                makeAny( OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.Canvas/CanvasServiceList")) ),
-                PropertyState_DIRECT_VALUE ) );
+            NamedValue(
+                OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")),
+                makeAny( OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.Canvas/CanvasServiceList")) ) ) );
 
         Reference<XNameAccess> xNameAccess(
             xConfigProvider->createInstanceWithArguments(
@@ -1230,7 +1227,6 @@ struct LanguageConfig_Impl
 static sal_Bool bLanguageCurrentDoc_Impl = sal_False;
 
 // some things we'll need...
-static const OUString sConfigSrvc(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"));
 static const OUString sAccessSrvc(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationAccess"));
 static const OUString sAccessUpdSrvc(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationUpdateAccess"));
 static const OUString sInstalledLocalesPath(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup/Office/InstalledLocales"));
@@ -1293,15 +1289,14 @@ OfaLanguagesTabPage::OfaLanguagesTabPage( Window* pParent, const SfxItemSet& rSe
         OUString sOfficeLocaleValue;
         OUString sSystemLocaleValue;
 
-        Reference< XMultiServiceFactory > theMSF = comphelper::getProcessServiceFactory();
-        Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory > (
-            theMSF->createInstance( sConfigSrvc ),UNO_QUERY_THROW);
-        Sequence< Any > theArgs(2);
+        Reference< XMultiServiceFactory > theConfigProvider(
+            com::sun::star::configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext()));
+        Sequence< Any > theArgs(1);
         Reference< XNameAccess > theNameAccess;
 
         // find out which locales are currently installed and add them to the listbox
-        theArgs[0] = makeAny(NamedValue(OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath")), makeAny(sInstalledLocalesPath)));
-        theArgs[1] = makeAny(NamedValue(OUString(RTL_CONSTASCII_USTRINGPARAM("reload")), makeAny(sal_True)));
+        theArgs[0] = makeAny(NamedValue(OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")), makeAny(sInstalledLocalesPath)));
     theNameAccess = Reference< XNameAccess > (
             theConfigProvider->createInstanceWithArguments(sAccessSrvc, theArgs ), UNO_QUERY_THROW );
         seqInstalledLanguages = theNameAccess->getElementNames();
@@ -1320,7 +1315,7 @@ OfaLanguagesTabPage::OfaLanguagesTabPage( Window* pParent, const SfxItemSet& rSe
 
         // find out whether the user has a specific locale specified
         Sequence< Any > theArgs2(1);
-        theArgs2[0] = makeAny(NamedValue(OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath")), makeAny(sUserLocalePath)));
+        theArgs2[0] = makeAny(NamedValue(OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")), makeAny(sUserLocalePath)));
         theNameAccess = Reference< XNameAccess > (
             theConfigProvider->createInstanceWithArguments(sAccessSrvc, theArgs2 ), UNO_QUERY_THROW );
         if (theNameAccess->hasByName(sUserLocaleKey))
@@ -1490,11 +1485,11 @@ sal_Bool OfaLanguagesTabPage::FillItemSet( SfxItemSet& rSet )
         if( aUserInterfaceLB.GetSelectEntryPos() > 0)
             aLangString = ConvertLanguageToIsoString(aUserInterfaceLB.GetSelectLanguage());
         */
-        Reference< XMultiServiceFactory > theMSF = comphelper::getProcessServiceFactory();
-        Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory > (
-            theMSF->createInstance( sConfigSrvc ),UNO_QUERY_THROW);
+        Reference< XMultiServiceFactory > theConfigProvider(
+            com::sun::star::configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext()));
         Sequence< Any > theArgs(1);
-        theArgs[0] = makeAny(sUserLocalePath);
+        theArgs[0] = makeAny(NamedValue(OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")), makeAny(sUserLocalePath)));
         Reference< XPropertySet >xProp(
             theConfigProvider->createInstanceWithArguments(sAccessUpdSrvc, theArgs ), UNO_QUERY_THROW );
         if ( !m_sUserLocaleValue.equals(aLangString))
@@ -1509,6 +1504,8 @@ sal_Bool OfaLanguagesTabPage::FillItemSet( SfxItemSet& rSet )
 
             // tell quickstarter to stop being a veto listener
 
+            Reference< XMultiServiceFactory > theMSF(
+                comphelper::getProcessServiceFactory());
             Reference< XInitialization > xInit(theMSF->createInstance(
                 OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.office.Quickstart"))), UNO_QUERY);
             if (xInit.is())
diff --git a/cui/source/options/optinet2.cxx b/cui/source/options/optinet2.cxx
index 17a55ef..65679e2 100644
--- a/cui/source/options/optinet2.cxx
+++ b/cui/source/options/optinet2.cxx
@@ -86,9 +86,10 @@
 #include <rtl/ustring.hxx>
 #include <osl/file.hxx>
 #include <osl/process.h>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XNameReplace.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/beans/XPropertyState.hpp>
 #include <com/sun/star/util/XChangesBatch.hpp>
@@ -224,35 +225,23 @@ SvxProxyTabPage::SvxProxyTabPage(Window* pParent, const SfxItemSet& rSet ) :
 
     aProxyModeLB.SetSelectHdl(LINK( this, SvxProxyTabPage, ProxyHdl_Impl ));
 
-    Reference< com::sun::star::lang::XMultiServiceFactory > xServiceManager(
-        ::comphelper::getProcessServiceFactory());
+    Reference< com::sun::star::lang::XMultiServiceFactory >
+        xConfigurationProvider(
+            configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext() ) );
 
-    if( xServiceManager.is() )
-    {
-        try
-        {
-            Reference< com::sun::star::lang::XMultiServiceFactory > xConfigurationProvider =
-                Reference< com::sun::star::lang::XMultiServiceFactory > ( xServiceManager->createInstance( rtl::OUString(
-                    RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) ) ),
-                UNO_QUERY_THROW);
+    OUString aConfigRoot(RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings" ) );
 
-            OUString aConfigRoot(RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Inet/Settings" ) );
+    beans::NamedValue aProperty;
+    aProperty.Name  = OUString(RTL_CONSTASCII_USTRINGPARAM( "nodepath" ));
+    aProperty.Value = makeAny( aConfigRoot );
 
-            beans::PropertyValue aProperty;
-            aProperty.Name  = OUString(RTL_CONSTASCII_USTRINGPARAM( "nodepath" ));
-            aProperty.Value = makeAny( aConfigRoot );
+    Sequence< Any > aArgumentList( 1 );
+    aArgumentList[0] = makeAny( aProperty );
 
-            Sequence< Any > aArgumentList( 1 );
-            aArgumentList[0] = makeAny( aProperty );
-
-            m_xConfigurationUpdateAccess = xConfigurationProvider->createInstanceWithArguments( rtl::OUString(
-                    RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) ),
-                    aArgumentList );
-        }
-        catch ( RuntimeException& )
-        {
-        }
-    }
+    m_xConfigurationUpdateAccess = xConfigurationProvider->createInstanceWithArguments( rtl::OUString(
+                                                                                            RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) ),
+                                                                                        aArgumentList );
 
     ArrangeControls_Impl();
 }
diff --git a/cui/source/options/optupdt.cxx b/cui/source/options/optupdt.cxx
index adcca45..ee87645 100644
--- a/cui/source/options/optupdt.cxx
+++ b/cui/source/options/optupdt.cxx
@@ -35,6 +35,7 @@
 #include <dialmgr.hxx>
 #include <cuires.hrc>
 #include <comphelper/processfactory.hxx>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/ui/dialogs/XFolderPicker.hpp>
 #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
@@ -342,10 +343,10 @@ IMPL_LINK( SvxOnlineUpdateTabPage, CheckNowHdl_Impl, PushButton *, EMPTYARG )
     try
     {
         uno::Reference< lang::XMultiServiceFactory > xConfigProvider(
-            xFactory->createInstance( UNISTRING( "com.sun.star.configuration.ConfigurationProvider" )),
-            uno::UNO_QUERY_THROW);
+            com::sun::star::configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext() ) );
 
-        beans::PropertyValue aProperty;
+        beans::NamedValue aProperty;
         aProperty.Name  = UNISTRING( "nodepath" );
         aProperty.Value = uno::makeAny( UNISTRING("org.openoffice.Office.Addons/AddonUI/OfficeHelp/UpdateCheckJob") );
 
diff --git a/dbaccess/qa/complex/dbaccess/DatabaseDocument.java b/dbaccess/qa/complex/dbaccess/DatabaseDocument.java
index b22671f..7e131cd 100644
--- a/dbaccess/qa/complex/dbaccess/DatabaseDocument.java
+++ b/dbaccess/qa/complex/dbaccess/DatabaseDocument.java
@@ -26,6 +26,7 @@
  ************************************************************************/
 package complex.dbaccess;
 
+import com.sun.star.configuration.theDefaultProvider;
 import com.sun.star.lang.NotInitializedException;
 import com.sun.star.frame.DoubleInitializationException;
 import com.sun.star.awt.XTopWindow;
@@ -39,6 +40,7 @@ import com.sun.star.task.XInteractionRequest;
 import com.sun.star.uno.Type;
 import com.sun.star.uno.UnoRuntime;
 import com.sun.star.frame.XStorable;
+import com.sun.star.beans.NamedValue;
 import com.sun.star.beans.PropertyValue;
 import com.sun.star.beans.XPropertySet;
 import com.sun.star.container.XNameContainer;
@@ -489,11 +491,12 @@ public class DatabaseDocument extends TestCase implements com.sun.star.document.
     // --------------------------------------------------------------------------------------------------------
     private int impl_setMacroSecurityLevel(int _level) throws Exception
     {
-        final XMultiServiceFactory configProvider = UnoRuntime.queryInterface(XMultiServiceFactory.class, getMSF().createInstance("com.sun.star.configuration.ConfigurationProvider"));
+        final XMultiServiceFactory configProvider = theDefaultProvider.get(
+            getComponentContext());
 
-        final PropertyValue[] args = new PropertyValue[]
+        final NamedValue[] args = new NamedValue[]
         {
-            new PropertyValue("nodepath", 0, "/org.openoffice.Office.Common/Security/Scripting", PropertyState.DIRECT_VALUE)
+            new NamedValue("nodepath", "/org.openoffice.Office.Common/Security/Scripting")
         };
 
         final XPropertySet securitySettings = UnoRuntime.queryInterface(XPropertySet.class, configProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess", args));
diff --git a/dbaccess/qa/complex/dbaccess/TestCase.java b/dbaccess/qa/complex/dbaccess/TestCase.java
index f2cbdf9..91378b7 100644
--- a/dbaccess/qa/complex/dbaccess/TestCase.java
+++ b/dbaccess/qa/complex/dbaccess/TestCase.java
@@ -29,7 +29,6 @@ package complex.dbaccess;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import com.sun.star.beans.PropertyValue;
-import com.sun.star.beans.XPropertySet;
 import com.sun.star.frame.XComponentLoader;
 import com.sun.star.frame.XModel;
 import com.sun.star.lang.XMultiServiceFactory;
@@ -55,18 +54,7 @@ public abstract class TestCase
     // --------------------------------------------------------------------------------------------------------
     protected final XComponentContext getComponentContext()
     {
-        XComponentContext context = null;
-        try
-        {
-            final XPropertySet orbProps = UnoRuntime.queryInterface( XPropertySet.class, getMSF() );
-            context = UnoRuntime.queryInterface( XComponentContext.class,
-                orbProps.getPropertyValue( "DefaultContext" ) );
-        }
-        catch ( Exception ex )
-        {
-            fail( "could not retrieve the ComponentContext" );
-        }
-        return context;
+        return connection.getComponentContext();
     }
 
     // --------------------------------------------------------------------------------------------------------
diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx
index f30ac46..fa4553a 100644
--- a/desktop/inc/app.hxx
+++ b/desktop/inc/app.hxx
@@ -155,7 +155,7 @@ class Desktop : public Application
         void                    RemoveTemporaryDirectory();
 
         sal_Bool                InitializeInstallation( const rtl::OUString& rAppFilename );
-        sal_Bool                InitializeConfiguration();
+        bool                    InitializeConfiguration();
         void                    FlushConfiguration();
         static sal_Bool         shouldLaunchQuickstart();
         sal_Bool                InitializeQuickstartMode( com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rSMgr );
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 38ba4db..f851f63 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -54,6 +54,7 @@
 #include <com/sun/star/frame/XSynchronousDispatch.hpp>
 #include <com/sun/star/document/CorruptedFilterConfigurationException.hpp>
 #include <com/sun/star/configuration/CorruptedConfigurationException.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/frame/XStorable.hpp>
 #include <com/sun/star/util/XModifiable.hpp>
 #include <com/sun/star/util/XFlushable.hpp>
@@ -323,14 +324,6 @@ CommandLineArgs& Desktop::GetCommandLineArgs()
     return theCommandLineArgs::get();
 }
 
-sal_Bool InitConfiguration()
-{
-    RTL_LOGFILE_CONTEXT( aLog, "desktop (jb99855) ::InitConfiguration" );
-
-    Reference< XMultiServiceFactory > xProvider( CreateApplicationConfigurationProvider( ) );
-    return xProvider.is();
-}
-
 namespace
 {
     struct BrandName
@@ -1971,13 +1964,14 @@ IMPL_LINK( Desktop, ImplInitFilterHdl, ConvertData*, pData )
     return GraphicFilter::GetGraphicFilter().GetFilterCallback().Call( pData );
 }
 
-sal_Bool Desktop::InitializeConfiguration()
+bool Desktop::InitializeConfiguration()
 {
-    sal_Bool bOk = sal_False;
-
+    RTL_LOGFILE_CONTEXT( aLog, "desktop (jb99855) ::InitConfiguration" );
     try
     {
-        bOk = InitConfiguration();
+        css::configuration::theDefaultProvider::get(
+            comphelper::getProcessComponentContext() );
+        return true;
     }
     catch( ::com::sun::star::lang::ServiceNotRegisteredException& )
     {
@@ -2033,19 +2027,14 @@ sal_Bool Desktop::InitializeConfiguration()
                                                 OUString() ));
         HandleBootstrapPathErrors( ::utl::Bootstrap::INVALID_BASE_INSTALL, aMsg );
     }
-
-    return bOk;
+    return false;
 }
 
 void Desktop::FlushConfiguration()
 {
     css::uno::Reference< css::util::XFlushable >(
-        (css::uno::Reference< css::lang::XMultiServiceFactory >(
-            comphelper::getProcessServiceFactory(), css::uno::UNO_SET_THROW)->
-         createInstance(
-             rtl::OUString(
-                 RTL_CONSTASCII_USTRINGPARAM(
-                     "com.sun.star.configuration.ConfigurationProvider")))),
+        css::configuration::theDefaultProvider::get(
+            comphelper::getProcessComponentContext()),
         css::uno::UNO_QUERY_THROW)->flush();
 }
 
@@ -2438,116 +2427,6 @@ void Desktop::PreloadConfigurationData()
         {
         }
     }
-
-    static const OUString sConfigSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) );
-    static const OUString sAccessSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationAccess" ) );
-
-    // get configuration provider
-    Reference< XMultiServiceFactory > xConfigProvider;
-    xConfigProvider = Reference< XMultiServiceFactory > (
-                rFactory->createInstance( sConfigSrvc ),UNO_QUERY );
-
-    if ( xConfigProvider.is() )
-    {
-        // preload writer configuration
-        Sequence< Any > theArgs(1);
-        theArgs[ 0 ] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Writer/MailMergeWizard"));
-        try
-        {
-            xNameAccess = Reference< XNameAccess >(
-                xConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY );
-        }
-        catch (::com::sun::star::uno::Exception& )
-        {
-        }
-
-        // WriterWeb
-        theArgs[ 0 ] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.WriterWeb/Content"));
-        try
-        {
-            xNameAccess = Reference< XNameAccess >(
-                xConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY );
-        }
-        catch (::com::sun::star::uno::Exception& )
-        {
-        }
-
-        // preload compatibility
-        theArgs[ 0 ] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Compatibility/WriterCompatibilityVersion"));
-        try
-        {
-            xNameAccess = Reference< XNameAccess >(
-                xConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY );
-        }
-        catch (::com::sun::star::uno::Exception& )
-        {
-        }
-
-        // preload calc configuration
-        theArgs[ 0 ] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Calc/Content"));
-        try
-        {
-            xNameAccess = Reference< XNameAccess >(
-                xConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY );
-        }
-        catch (::com::sun::star::uno::Exception& )
-        {
-        }
-
-        // preload impress configuration
-        theArgs[ 0 ] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.UI.Effects/UserInterface"));
-        try
-        {
-            xNameAccess = Reference< XNameAccess >(
-                xConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY );
-        }
-        catch (::com::sun::star::uno::Exception& )
-        {
-        }
-
-        theArgs[ 0 ] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Impress/Layout"));
-        try
-        {
-            xNameAccess = Reference< XNameAccess >(
-                xConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY );
-        }
-        catch (::com::sun::star::uno::Exception& )
-        {
-        }
-
-        // preload draw configuration
-        theArgs[ 0 ] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Draw/Layout"));
-        try
-        {
-            xNameAccess = Reference< XNameAccess >(
-                xConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY );
-        }
-        catch (::com::sun::star::uno::Exception& )
-        {
-        }
-
-        // preload ui configuration
-        theArgs[ 0 ] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.UI/FilterClassification"));
-        try
-        {
-            xNameAccess = Reference< XNameAccess >(
-                xConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY );
-        }
-        catch (::com::sun::star::uno::Exception& )
-        {
-        }
-
-        // preload addons configuration
-        theArgs[ 0 ] <<= OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Addons/AddonUI"));
-        try
-        {
-            xNameAccess = Reference< XNameAccess >(
-                xConfigProvider->createInstanceWithArguments( sAccessSrvc, theArgs ), UNO_QUERY );
-        }
-        catch (::com::sun::star::uno::Exception& )
-        {
-        }
-    }
 }
 
 void Desktop::OpenClients()
diff --git a/desktop/source/app/appfirststart.cxx b/desktop/source/app/appfirststart.cxx
index a5a1611..7334eeb 100644
--- a/desktop/source/app/appfirststart.cxx
+++ b/desktop/source/app/appfirststart.cxx
@@ -37,6 +37,7 @@
 #include <comphelper/processfactory.hxx>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/util/XChangesBatch.hpp>
 
 #include "app.hxx"
@@ -46,20 +47,16 @@ using namespace ::desktop;
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::beans;
 
-static const OUString sConfigSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) );
 static const OUString sAccessSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) );
 
 /* Local function - get access to the configuration */
 static Reference< XPropertySet > impl_getConfigurationAccess( const OUString& rPath )
 {
-    Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
-
-    // get configuration provider
-    Reference< XMultiServiceFactory > xConfigProvider = Reference< XMultiServiceFactory >(
-            xFactory->createInstance( sConfigSrvc ), UNO_QUERY_THROW );
-
+    Reference< XMultiServiceFactory > xConfigProvider(
+        configuration::theDefaultProvider::get(
+            comphelper::getProcessComponentContext() ) );
     Sequence< Any > aArgs( 1 );
-    NamedValue aValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "NodePath" ) ), makeAny( rPath ) );
+    NamedValue aValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ), makeAny( rPath ) );
     aArgs[0] <<= aValue;
     return Reference< XPropertySet >(
             xConfigProvider->createInstanceWithArguments( sAccessSrvc, aArgs ), UNO_QUERY_THROW );
diff --git a/desktop/source/app/check_ext_deps.cxx b/desktop/source/app/check_ext_deps.cxx
index 37b1bfe..a279dbf 100644
--- a/desktop/source/app/check_ext_deps.cxx
+++ b/desktop/source/app/check_ext_deps.cxx
@@ -48,6 +48,7 @@
 #include <com/sun/star/ucb/XCommandEnvironment.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include "com/sun/star/deployment/XPackage.hpp"
 #include "com/sun/star/deployment/ExtensionManager.hpp"
 #include "com/sun/star/deployment/LicenseException.hpp"
@@ -220,7 +221,6 @@ void SilentCommandEnv::pop() throw (uno::RuntimeException)
 } // end namespace
 
 //-----------------------------------------------------------------------------
-static const OUString sConfigSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) );
 static const OUString sAccessSrvc( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) );
 //------------------------------------------------------------------------------
 static sal_Int16 impl_showExtensionDialog( uno::Reference< uno::XComponentContext > &xContext )
@@ -326,13 +326,12 @@ static bool impl_checkDependencies( const uno::Reference< uno::XComponentContext
 static void impl_setNeedsCompatCheck()
 {
     try {
-        Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
-        // get configuration provider
-        Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory >(
-                xFactory->createInstance(sConfigSrvc), UNO_QUERY_THROW);
+        Reference< XMultiServiceFactory > theConfigProvider(
+            configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext() ) );
 
         Sequence< Any > theArgs(1);
-        beans::NamedValue v( OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath")),
+        beans::NamedValue v( OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")),
                       makeAny( OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup/Office")) ) );
         theArgs[0] <<= v;
         Reference< beans::XPropertySet > pset = Reference< beans::XPropertySet >(
@@ -379,13 +378,12 @@ static bool impl_needsCompatCheck()
     rtl::Bootstrap::expandMacros( aCurrentBuildID );
 
     try {
-        Reference < XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
-        // get configuration provider
-        Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory >(
-                xFactory->createInstance(sConfigSrvc), UNO_QUERY_THROW);
+        Reference< XMultiServiceFactory > theConfigProvider(
+            configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext() ) );
 
         Sequence< Any > theArgs(1);
-        beans::NamedValue v( OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath")),
+        beans::NamedValue v( OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")),
                       makeAny( OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup/Office")) ) );
         theArgs[0] <<= v;
         Reference< beans::XPropertySet > pset = Reference< beans::XPropertySet >(
diff --git a/desktop/source/app/configinit.cxx b/desktop/source/app/configinit.cxx
index 16ef67f..95affdb 100644
--- a/desktop/source/app/configinit.cxx
+++ b/desktop/source/app/configinit.cxx
@@ -40,140 +40,24 @@
 #include <rtl/ustrbuf.hxx>
 #include <osl/diagnose.h>
 #include <stdio.h>
-#include <map>
-#include <com/sun/star/lang/ServiceNotRegisteredException.hpp>
-#include <com/sun/star/configuration/CannotLoadConfigurationException.hpp>
-#include <com/sun/star/configuration/InvalidBootstrapFileException.hpp>
-#include <com/sun/star/configuration/backend/BackendSetupException.hpp>
-#include <com/sun/star/configuration/backend/CannotConnectException.hpp>
 
 // ----------------------------------------------------------------------------
 
 namespace uno           = ::com::sun::star::uno;
 namespace lang          = ::com::sun::star::lang;
-namespace configuration = ::com::sun::star::configuration;
-namespace backend       = ::com::sun::star::configuration::backend;
 using rtl::OUString;
 using uno::UNO_QUERY;
-using desktop::Desktop;
 
 // ----------------------------------------------------------------------------
-static char const CONFIGURATION_PROVIDER[]  = "com.sun.star.configuration.ConfigurationProvider";
-
 static char const CONFIGURATION_ERROR_HANDLER[]  = "com.sun.star.configuration.backend.InteractionHandler";
 
 // must be aligned with configmgr/source/misc/configinteractionhandler
 static char const CONFIG_ERROR_HANDLER[] = "configuration.interaction-handler";
 // ----------------------------------------------------------------------------
 
-// ----------------------------------------------------------------------------
-#define arraysize( arr ) ( sizeof (arr)/sizeof *(arr) )
-
-typedef uno::Reference< lang::XMultiServiceFactory > ConfigurationProvider;
-
 #define OUSTRING( constascii ) OUString( RTL_CONSTASCII_USTRINGPARAM( constascii ) )
 
-#define OU2O( ustr, enc ) rtl::OUStringToOString( (ustr), RTL_TEXTENCODING_ ## enc )
-
-#define k_PROVIDER OUSTRING( CONFIGURATION_PROVIDER )
 #define k_ERRORHANDLER OUSTRING( CONFIGURATION_ERROR_HANDLER )
-// ----------------------------------------------------------------------------
-// Get a message string securely. There is a fallback string if the resource
-// is not available. Adapted from Desktop::GetMsgString()
-
-OUString getMsgString( sal_uInt16 nId, char const * aFallBackMsg )
-{
-    ResMgr* pResMgr = Desktop::GetDesktopResManager();
-    if ( !pResMgr || !nId )
-        return OUString::createFromAscii(aFallBackMsg);
-    else
-        return OUString( String(ResId( nId, *pResMgr )));
-}
-// ----------------------------------------------------------------------------
-/** Creates the normal configuration provider.
-
-*/
-static
-ConfigurationProvider createDefaultConfigurationProvider( )
-{
-    uno::Reference< lang::XMultiServiceFactory > xServiceManager = ::comphelper::getProcessServiceFactory();
-
-    OSL_ENSURE( xServiceManager.is(),"No ServiceManager set for CreateApplicationConfigurationProvider");
-
-    ConfigurationProvider xProvider;
-
-    if (xServiceManager.is())
-    {
-
-            xProvider.set( xServiceManager->createInstance(k_PROVIDER),  UNO_QUERY);
-    }
-
-    if (!xProvider.is())
-    {
-        OUString const sMsg = OUSTRING("Service \"") + k_PROVIDER +
-                                OUSTRING("\" is not available at the service manager.");
-
-        throw lang::ServiceNotRegisteredException(sMsg, xServiceManager);
-    }
-
-    return xProvider;
-}
-// ----------------------------------------------------------------------------
-/// @attention this method must be called from a catch statement!
-static void handleGeneralException(uno::Exception& aException,
-                                   const rtl::OUString& aMessage)
-{
-    aException.Message = aMessage ;
-    throw ;
-}
-// ----------------------------------------------------------------------------
-
-uno::Reference< lang::XMultiServiceFactory > CreateApplicationConfigurationProvider( )
-{
-    uno::Reference< lang::XMultiServiceFactory > xProvider;
-
-    try
-    {
-        xProvider = createDefaultConfigurationProvider( );
-    }
-    catch (configuration::InvalidBootstrapFileException & exception)
-    {
-        handleGeneralException(exception,
-                getMsgString( STR_CONFIG_ERR_SETTINGS_INCOMPLETE,
-                            "The startup settings for your configuration settings are incomplete. "));
-    }
-     catch (backend::CannotConnectException & exception)
-    {
-        handleGeneralException(exception,
-                getMsgString( STR_CONFIG_ERR_CANNOT_CONNECT,
-                            "A connection to your configuration settings could not be established. "));
-    }
-    catch (backend::BackendSetupException & exception)
-    {
-        handleGeneralException(exception,
-                getMsgString( STR_CONFIG_ERR_CANNOT_CONNECT,
-                            "A connection to your configuration settings could not be established. "));
-    }
-    catch (configuration::CannotLoadConfigurationException & exception)
-    {
-        handleGeneralException(exception,
-                getMsgString( STR_CONFIG_ERR_CANNOT_CONNECT,
-                            "A connection to your configuration settings could not be established. "));
-    }
-    catch (uno::Exception & exception)
-    {
-        handleGeneralException(exception,
-                getMsgString( STR_CONFIG_ERR_ACCESS_GENERAL,
-                            "A general error occurred while accessing your configuration settings."));
-    }
-
-
-    return xProvider ;
-}
-// ----------------------------------------------------------------------------
-
-
-
 
 // ----------------------------------------------------------------------------
 // ConfigurationErrorHandler
diff --git a/desktop/source/app/configinit.hxx b/desktop/source/app/configinit.hxx
index 24fb018..2b5bf67 100644
--- a/desktop/source/app/configinit.hxx
+++ b/desktop/source/app/configinit.hxx
@@ -2,33 +2,8 @@
 #ifndef _DESKTOP_CONFIGINIT_HXX_
 #define _DESKTOP_CONFIGINIT_HXX_
 
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <rtl/ustring.hxx>
+#include "sal/config.h"
 
-/** creates a ConfigurationProvider instance
-Important: exceptions thrown from that method will contain a readily
-displayable message.
-
-    @return
-        The default configuration provider for the application or<br/>
-        <NULL/>, if startup was canceled
-
-    @throw com::sun::star::configuration::CannotLoadConfigurationException
-        if the configuration provider can't be created
-
-    @throw com::sun::star::lang::ServiceNotRegisteredException
-        if the ConfigurationProvider service is unknwon
-
-    @throw com::sun::star::lang::WrappedTargetException
-        if the configuration backend could be created,
-        but incurred a failure later
-
-*/
-extern
-com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >
-    CreateApplicationConfigurationProvider( );
-
-//-----------------------------------------------------------------------------
 #include <com/sun/star/task/XInteractionHandler.hpp>
 
 /**
diff --git a/desktop/source/app/langselect.cxx b/desktop/source/app/langselect.cxx
index 063fc69..1a69fcd 100644
--- a/desktop/source/app/langselect.cxx
+++ b/desktop/source/app/langselect.cxx
@@ -41,6 +41,7 @@
 #include <tools/config.hxx>
 #include <i18npool/mslangid.hxx>
 #include <comphelper/processfactory.hxx>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/beans/NamedValue.hpp>
@@ -129,20 +130,10 @@ Locale LanguageSelection::IsoStringToLocale(const OUString& str)
 bool LanguageSelection::prepareLanguage()
 {
     m_eStatus = LS_STATUS_OK;
-    OUString sConfigSrvc = OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"));
-    Reference< XMultiServiceFactory > theMSF = comphelper::getProcessServiceFactory();
-    Reference< XLocalizable > theConfigProvider;
-    try
-    {
-        theConfigProvider = Reference< XLocalizable >(theMSF->createInstance( sConfigSrvc ),UNO_QUERY_THROW );
-    }
-    catch(const Exception&)
-    {
-        m_eStatus = LS_STATUS_CONFIGURATIONACCESS_BROKEN;
-    }
-
-    if(!theConfigProvider.is())
-        return false;
+    Reference< XLocalizable > theConfigProvider(
+        com::sun::star::configuration::theDefaultProvider::get(
+            comphelper::getProcessComponentContext() ),
+        UNO_QUERY_THROW );
 
     sal_Bool bSuccess = sal_False;
 
@@ -225,11 +216,6 @@ bool LanguageSelection::prepareLanguage()
             // this will ensure localized configuration settings to be selected accoring to the
             // UI language.
             Locale loc = LanguageSelection::IsoStringToLocale(aLocaleString);
-            // flush any data already written to the configuration (which
-            // currently uses independent caches for different locales and thus
-            // would ignore data written to another cache):
-            Reference< XFlushable >(theConfigProvider, UNO_QUERY_THROW)->
-                flush();
             theConfigProvider->setLocale(loc);
 
             Reference< XPropertySet > xProp(getConfigAccess("org.openoffice.Setup/L10N/", sal_True), UNO_QUERY_THROW);
@@ -371,7 +357,6 @@ Reference< XNameAccess > LanguageSelection::getConfigAccess(const sal_Char* pPat
 {
     Reference< XNameAccess > xNameAccess;
     try{
-        OUString sConfigSrvc(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"));
         OUString sAccessSrvc;
         if (bUpdate)
             sAccessSrvc = OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationUpdateAccess"));
@@ -380,19 +365,16 @@ Reference< XNameAccess > LanguageSelection::getConfigAccess(const sal_Char* pPat
 
         OUString sConfigURL = OUString::createFromAscii(pPath);
 
-        // get configuration provider
-        Reference< XMultiServiceFactory > theMSF = comphelper::getProcessServiceFactory();
-        if (theMSF.is()) {
-            Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory > (
-                theMSF->createInstance( sConfigSrvc ),UNO_QUERY_THROW );
-
-            // access the provider
-            Sequence< Any > theArgs(1);
-            theArgs[ 0 ] <<= sConfigURL;
-            xNameAccess = Reference< XNameAccess > (
-                theConfigProvider->createInstanceWithArguments(
-                    sAccessSrvc, theArgs ), UNO_QUERY_THROW );
-        }
+        Reference< XMultiServiceFactory > theConfigProvider(
+            com::sun::star::configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext() ) );
+
+        // access the provider
+        Sequence< Any > theArgs(1);
+        theArgs[ 0 ] <<= sConfigURL;
+        xNameAccess = Reference< XNameAccess > (
+            theConfigProvider->createInstanceWithArguments(
+                sAccessSrvc, theArgs ), UNO_QUERY_THROW );
     } catch (com::sun::star::uno::Exception& e)
     {
         OString aMsg = OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US);
diff --git a/desktop/source/app/userinstall.cxx b/desktop/source/app/userinstall.cxx
index 5928212..e6e1c83 100644
--- a/desktop/source/app/userinstall.cxx
+++ b/desktop/source/app/userinstall.cxx
@@ -48,6 +48,7 @@
 #include <svl/languageoptions.hxx>
 #include <unotools/syslocaleoptions.hxx>
 #include <comphelper/processfactory.hxx>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
@@ -82,19 +83,13 @@ namespace desktop {
     {
         try
         {
-            OUString sConfigSrvc(
-                 RTL_CONSTASCII_USTRINGPARAM(
-                    "com.sun.star.configuration.ConfigurationProvider" ) );
             OUString sAccessSrvc(
                  RTL_CONSTASCII_USTRINGPARAM(
                     "com.sun.star.configuration.ConfigurationAccess" ) );
 
-            // get configuration provider
-            Reference< XMultiServiceFactory > theMSF
-                = comphelper::getProcessServiceFactory();
-            Reference< XMultiServiceFactory > theConfigProvider
-                = Reference< XMultiServiceFactory >(
-                    theMSF->createInstance(sConfigSrvc), UNO_QUERY_THROW);
+            Reference< XMultiServiceFactory > theConfigProvider(
+                com::sun::star::configuration::theDefaultProvider::get(
+                    comphelper::getProcessComponentContext() ) );
 
             // localize the provider to user selection
             Reference< XLocalizable > localizable(theConfigProvider, UNO_QUERY_THROW);
@@ -104,7 +99,7 @@ namespace desktop {
 
             Sequence< Any > theArgs(1);
             NamedValue v;
-            v.Name = OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath"));
+            v.Name = OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath"));
             v.Value = makeAny(OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup")));
             theArgs[0] <<= v;
             Reference< XHierarchicalNameAccess> hnacc(
@@ -261,15 +256,13 @@ namespace desktop {
         }
         try
         {
-            OUString sConfigSrvc(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"));
             OUString sAccessSrvc(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationUpdateAccess"));
 
-            // get configuration provider
-            Reference< XMultiServiceFactory > theMSF = comphelper::getProcessServiceFactory();
-            Reference< XMultiServiceFactory > theConfigProvider = Reference< XMultiServiceFactory >(
-                theMSF->createInstance(sConfigSrvc), UNO_QUERY_THROW);
+            Reference< XMultiServiceFactory > theConfigProvider(
+                com::sun::star::configuration::theDefaultProvider::get(
+                    comphelper::getProcessComponentContext() ) );
             Sequence< Any > theArgs(1);
-            NamedValue v(OUString(RTL_CONSTASCII_USTRINGPARAM("NodePath")), makeAny(OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup"))));
+            NamedValue v(OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")), makeAny(OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Setup"))));
             theArgs[0] <<= v;
             Reference< XHierarchicalPropertySet> hpset(
                 theConfigProvider->createInstanceWithArguments(sAccessSrvc, theArgs), UNO_QUERY_THROW);
diff --git a/desktop/source/deployment/gui/dp_gui_theextmgr.cxx b/desktop/source/deployment/gui/dp_gui_theextmgr.cxx
index 1d90229..f3dd4cc 100644
--- a/desktop/source/deployment/gui/dp_gui_theextmgr.cxx
+++ b/desktop/source/deployment/gui/dp_gui_theextmgr.cxx
@@ -37,6 +37,7 @@
 #include "toolkit/helper/vclunohelper.hxx"
 
 #include "com/sun/star/beans/XPropertySet.hpp"
+#include "com/sun/star/configuration/theDefaultProvider.hpp"
 
 #include "dp_gui_dialog2.hxx"
 #include "dp_gui_extensioncmdqueue.hxx"
@@ -75,8 +76,7 @@ TheExtensionManager::TheExtensionManager( Window *pParent,
     m_xExtensionManager->addModifyListener( this );
 
     uno::Reference< lang::XMultiServiceFactory > xConfig(
-        xContext->getServiceManager()->createInstanceWithContext(
-            OUSTR("com.sun.star.configuration.ConfigurationProvider"), xContext ), uno::UNO_QUERY_THROW);
+        configuration::theDefaultProvider::get(xContext));
     uno::Any args[1];
     beans::PropertyValue aValue( OUSTR("nodepath"), 0, uno::Any( OUSTR("/org.openoffice.Office.OptionsDialog/Nodes") ),
                                  beans::PropertyState_DIRECT_VALUE );
diff --git a/desktop/source/deployment/gui/dp_gui_updatedialog.cxx b/desktop/source/deployment/gui/dp_gui_updatedialog.cxx
index bf31cf1..138c599 100644
--- a/desktop/source/deployment/gui/dp_gui_updatedialog.cxx
+++ b/desktop/source/deployment/gui/dp_gui_updatedialog.cxx
@@ -51,6 +51,7 @@
 #include "com/sun/star/beans/Optional.hpp"
 #include "com/sun/star/beans/PropertyValue.hpp"
 #include "com/sun/star/beans/XPropertySet.hpp"
+#include "com/sun/star/configuration/theDefaultProvider.hpp"
 #include "com/sun/star/container/XNameAccess.hpp"
 #include "com/sun/star/container/XNameContainer.hpp"
 #include "com/sun/star/deployment/DeploymentException.hpp"
@@ -845,10 +846,9 @@ void UpdateDialog::createNotifyJob( bool bPrepareOnly,
     // notify update check job
     try
     {
-        uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
         uno::Reference< lang::XMultiServiceFactory > xConfigProvider(
-            xFactory->createInstance( OUSTR( "com.sun.star.configuration.ConfigurationProvider" )),
-            uno::UNO_QUERY_THROW);
+            configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext()));
 
         beans::PropertyValue aProperty;
         aProperty.Name  = OUSTR( "nodepath" );
@@ -865,6 +865,7 @@ void UpdateDialog::createNotifyJob( bool bPrepareOnly,
         util::URL aURL;
         xNameAccess->getByName(OUSTR("URL")) >>= aURL.Complete;
 
+        uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
         uno::Reference < util::XURLTransformer > xTransformer( xFactory->createInstance( OUSTR( "com.sun.star.util.URLTransformer" ) ),
             uno::UNO_QUERY_THROW );
 
@@ -1082,8 +1083,8 @@ bool UpdateDialog::showDescription( const String& rDescription, bool bWithPublis
 //------------------------------------------------------------------------------
 void UpdateDialog::getIgnoredUpdates()
 {
-    uno::Reference< lang::XMultiServiceFactory > xConfig( m_context->getServiceManager()->createInstanceWithContext(
-        OUSTR("com.sun.star.configuration.ConfigurationProvider"), m_context ), uno::UNO_QUERY_THROW);
+    uno::Reference< lang::XMultiServiceFactory > xConfig(
+        configuration::theDefaultProvider::get(m_context));
     beans::NamedValue aValue( OUSTR("nodepath"), uno::Any( IGNORED_UPDATES ) );
     uno::Sequence< uno::Any > args(1);
     args[0] <<= aValue;
@@ -1108,8 +1109,8 @@ void UpdateDialog::storeIgnoredUpdates()
 {
     if ( m_bModified && ( !m_ignoredUpdates.empty() ) )
     {
-        uno::Reference< lang::XMultiServiceFactory > xConfig( m_context->getServiceManager()->createInstanceWithContext(
-            OUSTR("com.sun.star.configuration.ConfigurationProvider"), m_context ), uno::UNO_QUERY_THROW );
+        uno::Reference< lang::XMultiServiceFactory > xConfig(
+            configuration::theDefaultProvider::get(m_context));
         beans::NamedValue aValue( OUSTR("nodepath"), uno::Any( IGNORED_UPDATES ) );
         uno::Sequence< uno::Any > args(1);
         args[0] <<= aValue;
diff --git a/desktop/source/migration/migration.cxx b/desktop/source/migration/migration.cxx
index f242c34..a3303d6 100644
--- a/desktop/source/migration/migration.cxx
+++ b/desktop/source/migration/migration.cxx
@@ -52,6 +52,7 @@
 #include <unotools/configmgr.hxx>
 
 #include <com/sun/star/configuration/Update.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/lang/XInitialization.hpp>
 #include <com/sun/star/task/XJob.hpp>
 #include <com/sun/star/beans/NamedValue.hpp>
@@ -349,13 +350,10 @@ sal_Bool MigrationImpl::doMigration()
 
 void MigrationImpl::refresh()
 {
-    uno::Reference< XRefreshable > xRefresh(m_xFactory->createInstance(
-                OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"))), uno::UNO_QUERY);
-    if (xRefresh.is())
-        xRefresh->refresh();
-    else
-        OSL_FAIL("could not get XRefresh interface from default config provider. No refresh done.");
-
+    uno::Reference< XRefreshable >(
+        configuration::theDefaultProvider::get(
+            comphelper::getComponentContext(m_xFactory)),
+        uno::UNO_QUERY_THROW)->refresh();
 }
 
 void MigrationImpl::setMigrationCompleted()
@@ -854,7 +852,6 @@ uno::Reference< XNameAccess > MigrationImpl::getConfigAccess(const sal_Char* pPa
 {
     uno::Reference< XNameAccess > xNameAccess;
     try{
-        OUString sConfigSrvc(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"));
         OUString sAccessSrvc;
         if (bUpdate)
             sAccessSrvc = OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationUpdateAccess"));
@@ -863,10 +860,9 @@ uno::Reference< XNameAccess > MigrationImpl::getConfigAccess(const sal_Char* pPa
 
         OUString sConfigURL = OUString::createFromAscii(pPath);
 
-        // get configuration provider
-        uno::Reference< XMultiServiceFactory > theMSF = comphelper::getProcessServiceFactory();
-        uno::Reference< XMultiServiceFactory > theConfigProvider = uno::Reference< XMultiServiceFactory > (
-                theMSF->createInstance( sConfigSrvc ),uno::UNO_QUERY_THROW );
+        uno::Reference< XMultiServiceFactory > theConfigProvider(
+            configuration::theDefaultProvider::get(
+                comphelper::getProcessComponentContext()));
 
         // access the provider
         uno::Sequence< uno::Any > theArgs(1);
diff --git a/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java b/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java
index bb38108..6bd50a7 100644
--- a/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java
+++ b/desktop/test/deployment/options/handler/com/sun/star/comp/extensionoptions/OptionsEventHandler.java
@@ -26,6 +26,7 @@
  *************************************************************************/
 package com.sun.star.comp.extensionoptions;
 
+import com.sun.star.configuration.theDefaultProvider;
 import com.sun.star.lib.uno.helper.Factory;
 import com.sun.star.lib.uno.helper.WeakBase;
 import com.sun.star.lang.XMultiComponentFactory;
@@ -49,8 +50,7 @@ import com.sun.star.awt.XControlModel;
 import com.sun.star.awt.XControlContainer;
 import com.sun.star.container.XNameAccess;
 import com.sun.star.container.NoSuchElementException;
-import com.sun.star.beans.PropertyValue;
-import com.sun.star.beans.PropertyState;
+import com.sun.star.beans.NamedValue;
 import com.sun.star.beans.XPropertySet;
 import com.sun.star.beans.UnknownPropertyException;
 import com.sun.star.beans.PropertyVetoException;
@@ -93,24 +93,15 @@ public class OptionsEventHandler {
             //Create the com.sun.star.configuration.ConfigurationUpdateAccess
             //for the registry node which contains the data for our option
             //pages.
-            XMultiServiceFactory xConfig;
-            try {
-                xConfig = (XMultiServiceFactory) UnoRuntime.queryInterface(
-                    XMultiServiceFactory.class,
-                    m_cmpCtx.getServiceManager().createInstanceWithContext(
-                        "com.sun.star.configuration.ConfigurationProvider", m_cmpCtx));
-            } catch (com.sun.star.uno.Exception e) {
-                e.printStackTrace();
-                return;
-            }
+            XMultiServiceFactory xConfig = theDefaultProvider.get(m_cmpCtx);
 
             //One argument for creating the ConfigurationUpdateAccess is the "nodepath".
             //Our nodepath point to the node of which the direct subnodes represent the
             //different options pages.
             Object[] args = new Object[1];
-            args[0] = new PropertyValue(
-                "nodepath", 0, "/org.openoffice.desktop.deployment.options.ExtensionData/Leaves",
-                PropertyState.DIRECT_VALUE);
+            args[0] = new NamedValue(
+                "nodepath",
+                "/org.openoffice.desktop.deployment.options.ExtensionData/Leaves");
 
             //We get the com.sun.star.container.XNameAccess from the instance of
             //ConfigurationUpdateAccess and save it for later use.
diff --git a/extensions/source/config/ldap/ldapuserprofilebe.cxx b/extensions/source/config/ldap/ldapuserprofilebe.cxx
index 0a1c3a4..8b4bf19 100644
--- a/extensions/source/config/ldap/ldapuserprofilebe.cxx
+++ b/extensions/source/config/ldap/ldapuserprofilebe.cxx
@@ -40,6 +40,7 @@
 #include <rtl/instance.hxx>
 #include <com/sun/star/beans/NamedValue.hpp>
 #include <com/sun/star/beans/Optional.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <osl/security.hxx>
 
 //==============================================================================
@@ -68,10 +69,7 @@ LdapUserProfileBe::LdapUserProfileBe( const uno::Reference<uno::XComponentContex
             {
                 bReentrantCall = true ;
                 if (!readLdapConfiguration(
-                        css::uno::Reference< css::lang::XMultiServiceFactory >(
-                            xContext->getServiceManager(),
-                            css::uno::UNO_QUERY_THROW),
-                        &aDefinition, &loggedOnUser))
+                        xContext, &aDefinition, &loggedOnUser))
                 {
                     throw css::uno::RuntimeException(
                         rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("LdapUserProfileBe- LDAP not configured")),
@@ -100,11 +98,10 @@ LdapUserProfileBe::~LdapUserProfileBe()
 //------------------------------------------------------------------------------
 
 bool LdapUserProfileBe::readLdapConfiguration(
-    css::uno::Reference< css::lang::XMultiServiceFactory > const & factory,
+    css::uno::Reference< css::uno::XComponentContext > const & context,
     LdapDefinition * definition, rtl::OUString * loggedOnUser)
 {
-    OSL_ASSERT(factory.is() && definition != 0 && loggedOnUser != 0);
-    const rtl::OUString kConfigurationProviderService( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider")) ;
+    OSL_ASSERT(context.is() && definition != 0 && loggedOnUser != 0);
     const rtl::OUString kReadOnlyViewService( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationAccess")) ;
     const rtl::OUString kComponent( RTL_CONSTASCII_USTRINGPARAM("org.openoffice.LDAP/UserDirectory"));
     const rtl::OUString kServerDefiniton(RTL_CONSTASCII_USTRINGPARAM ("ServerDefinition"));
@@ -120,11 +117,7 @@ bool LdapUserProfileBe::readLdapConfiguration(
     try
     {
         uno::Reference< lang::XMultiServiceFactory > xCfgProvider(
-                                                        factory->createInstance(kConfigurationProviderService),
-                                                        uno::UNO_QUERY);
-        OSL_ENSURE(xCfgProvider.is(),"LdapUserProfileBe: could not create the configuration provider");
-        if (!xCfgProvider.is())
-            return false;
+            css::configuration::theDefaultProvider::get(context));
 
         css::beans::NamedValue aPath(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")), uno::makeAny(kComponent) );
 
diff --git a/extensions/source/config/ldap/ldapuserprofilebe.hxx b/extensions/source/config/ldap/ldapuserprofilebe.hxx
index 2a6cc93..ccd9af8 100644
--- a/extensions/source/config/ldap/ldapuserprofilebe.hxx
+++ b/extensions/source/config/ldap/ldapuserprofilebe.hxx
@@ -31,15 +31,17 @@
 
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/uno/XComponentContext.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/lang/IllegalArgumentException.hpp>
 #include <cppuhelper/compbase2.hxx>
 
 #include "ldapaccess.hxx"
 
+namespace com { namespace sun { namespace star { namespace uno {
+    class XComponentContext;
+} } } }
+
 namespace extensions { namespace config { namespace ldap {
 
 namespace css = com::sun::star ;
@@ -144,7 +146,7 @@ class LdapUserProfileBe : private LdapProfileMutexHolder, public BackendBase
     private:
         /** Check if LDAP is configured */
         bool readLdapConfiguration(
-            uno::Reference<lang::XMultiServiceFactory> const & factory,
+            uno::Reference<uno::XComponentContext> const & context,
             LdapDefinition * definition, rtl::OUString * loggedOnUser);
 
         bool getLdapStringParam(uno::Reference<container::XNameAccess>& xAccess,
diff --git a/extensions/source/logging/loggerconfig.cxx b/extensions/source/logging/loggerconfig.cxx
index a8d2161..eb97216 100644
--- a/extensions/source/logging/loggerconfig.cxx
+++ b/extensions/source/logging/loggerconfig.cxx
@@ -32,6 +32,7 @@
 #include "loggerconfig.hxx"
 
 /** === begin UNO includes === **/
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 #include <com/sun/star/container/XNameContainer.hpp>
 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
@@ -214,11 +215,9 @@ namespace logging
             if ( !_rxLogger.is() )
                 throw NullPointerException();
 
-            // the configuration provider
-            Reference< XMultiServiceFactory > xConfigProvider;
-            ::rtl::OUString sConfigProvServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) );
-            if ( !_rContext.createComponent( sConfigProvServiceName, xConfigProvider ) )
-                throw ServiceNotRegisteredException( sConfigProvServiceName, _rxLogger );
+            Reference< XMultiServiceFactory > xConfigProvider(
+                com::sun::star::configuration::theDefaultProvider::get(
+                    _rContext.getUNOContext()));
 
             // write access to the "Settings" node (which includes settings for all loggers)
             Sequence< Any > aArguments(1);
diff --git a/extensions/source/oooimprovement/makefile.mk b/extensions/source/oooimprovement/makefile.mk
index a24707e..1a7e4ba 100644
--- a/extensions/source/oooimprovement/makefile.mk
+++ b/extensions/source/oooimprovement/makefile.mk
@@ -60,6 +60,7 @@ SLOFILES= \
     $(SLO)$/soapsender.obj \
 
 SHL1STDLIBS= \
+        $(COMPHELPERLIB) \
         $(CPPUHELPERLIB) \
         $(CPPULIB) \
         $(SALLIB) \
diff --git a/extensions/source/oooimprovement/myconfigurationhelper.cxx b/extensions/source/oooimprovement/myconfigurationhelper.cxx
index b211fdb..1aaeddc 100644
--- a/extensions/source/oooimprovement/myconfigurationhelper.cxx
+++ b/extensions/source/oooimprovement/myconfigurationhelper.cxx
@@ -30,32 +30,23 @@
 #include "precompiled_extensions.hxx"
 
 #include "myconfigurationhelper.hxx"
+#include <com/sun/star/beans/NamedValue.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/container/XNameContainer.hpp>
 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <comphelper/processfactory.hxx>
 #include <rtl/ustrbuf.hxx>
-#include <vector>
-
 
 namespace css = ::com::sun::star;
 using namespace ::com::sun::star::lang;
 using namespace ::com::sun::star::uno;
 using ::rtl::OUString;
 using ::rtl::OUStringBuffer;
-using ::std::vector;
-
 
 namespace
 {
-    static const Sequence<Any> sequenceFromVector(const vector<Any>& vec)
-    {
-        Sequence<Any> result(vec.size());
-        for(size_t idx = 0; idx < vec.size(); ++idx)
-            result[idx] = vec[idx];
-        return result;
-    };
-
     static const OUString noSuchElement(const OUString& path)
     {
         OUStringBuffer buf(256);
@@ -74,30 +65,16 @@ namespace oooimprovement
         sal_Int32 eMode)
     {
         Reference<XMultiServiceFactory> xConfigProvider(
-            xSMGR->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationProvider"))),
-            UNO_QUERY_THROW);
+            css::configuration::theDefaultProvider::get(
+                comphelper::getComponentContext(xSMGR)));
 
-        vector<Any> lParams;
-        css::beans::PropertyValue aParam;
+        css::uno::Sequence<Any> lParams(1);
+        css::beans::NamedValue aParam;
 
         // set root path
         aParam.Name = OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath"));
         aParam.Value <<= sPackage;
-        lParams.push_back(makeAny(aParam));
-
-        // enable all locales mode
-        if ((eMode & MyConfigurationHelper::E_ALL_LOCALES)==MyConfigurationHelper::E_ALL_LOCALES)
-        {
-            aParam.Name = OUString(RTL_CONSTASCII_USTRINGPARAM("locale"));
-            aParam.Value <<= OUString(RTL_CONSTASCII_USTRINGPARAM("*"));
-            lParams.push_back(makeAny(aParam));
-        }
-
-        // enable lazy writing
-        sal_Bool bLazy = ((eMode & MyConfigurationHelper::E_LAZY_WRITE)==MyConfigurationHelper::E_LAZY_WRITE);
-        aParam.Name = OUString(RTL_CONSTASCII_USTRINGPARAM("lazywrite"));
-        aParam.Value = makeAny(bLazy);
-        lParams.push_back(makeAny(aParam));
+        lParams[0] = makeAny(aParam);
 
         // open it
         Reference<XInterface> xCFG;
@@ -106,11 +83,11 @@ namespace oooimprovement
         if (bReadOnly)
             xCFG = xConfigProvider->createInstanceWithArguments(
                 OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationAccess")),
-                sequenceFromVector(lParams));
+                lParams);
         else
             xCFG = xConfigProvider->createInstanceWithArguments(
                 OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.ConfigurationUpdateAccess")),
-                sequenceFromVector(lParams));
+                lParams);
         return xCFG;
     }
 
diff --git a/extensions/source/oooimprovement/myconfigurationhelper.hxx b/extensions/source/oooimprovement/myconfigurationhelper.hxx
index 619d8cf..56b3d13 100644
--- a/extensions/source/oooimprovement/myconfigurationhelper.hxx
+++ b/extensions/source/oooimprovement/myconfigurationhelper.hxx
@@ -61,10 +61,6 @@ namespace oooimprovement
                 E_STANDARD = 0,
                 /// configuration will be opened readonly
                 E_READONLY = 1,
-                /// all localized nodes will be interpreted as css::uno::XInterface instead of interpreting it as atomic value nodes
-                E_ALL_LOCALES = 2,
-                /// enable lazy writing
-                E_LAZY_WRITE = 4
             };
 
             //-----------------------------------------------
diff --git a/extensions/source/update/check/download.cxx b/extensions/source/update/check/download.cxx
index 6812392..1a594de 100644
--- a/extensions/source/update/check/download.cxx
+++ b/extensions/source/update/check/download.cxx
@@ -41,6 +41,7 @@
 #include <curl/curl.h>
 #endif
 #include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 
@@ -194,21 +195,8 @@ progress_callback( void *clientp, double dltotal, double dlnow, double ultotal,
 void
 Download::getProxyForURL(const rtl::OUString& rURL, rtl::OString& rHost, sal_Int32& rPort) const
 {
-    if( !m_xContext.is() )
-        throw uno::RuntimeException(
-            UNISTRING( "Download: empty component context" ),
-            uno::Reference< uno::XInterface >() );
-
-    uno::Reference< lang::XMultiComponentFactory > xServiceManager(m_xContext->getServiceManager());
-
-    if( !xServiceManager.is() )
-        throw uno::RuntimeException(
-            UNISTRING( "Download: unable to obtain service manager from component context" ),
-            uno::Reference< uno::XInterface >() );
-
     uno::Reference< lang::XMultiServiceFactory > xConfigProvider(
-        xServiceManager->createInstanceWithContext( UNISTRING( "com.sun.star.configuration.ConfigurationProvider" ), m_xContext ),
-        uno::UNO_QUERY_THROW);
+        com::sun::star::configuration::theDefaultProvider::get( m_xContext ) );
 
     beans::PropertyValue aProperty;
     aProperty.Name  = UNISTRING( "nodepath" );
diff --git a/extensions/source/update/check/updatecheckconfig.cxx b/extensions/source/update/check/updatecheckconfig.cxx
index 7f4e161..31f3e88 100644
--- a/extensions/source/update/check/updatecheckconfig.cxx
+++ b/extensions/source/update/check/updatecheckconfig.cxx
@@ -34,6 +34,7 @@
 #include <com/sun/star/beans/PropertyValue.hpp>
 #include <com/sun/star/beans/XPropertyState.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
 #include <osl/security.hxx>
 #include <osl/time.h>
@@ -269,21 +270,8 @@ UpdateCheckConfig::get(
     const uno::Reference<uno::XComponentContext>& xContext,
     const ::rtl::Reference< UpdateCheckConfigListener >& rListener)
 {
-    if( !xContext.is() )
-        throw uno::RuntimeException(
-            UNISTRING( "UpdateCheckConfig: empty component context" ),
-            uno::Reference< uno::XInterface >() );
-
-    uno::Reference< lang::XMultiComponentFactory > xServiceManager(xContext->getServiceManager());
-
-    if( !xServiceManager.is() )
-        throw uno::RuntimeException(
-            UNISTRING( "UpdateCheckConfig: unable to obtain service manager from component context" ),
-            uno::Reference< uno::XInterface >() );
-
     uno::Reference< lang::XMultiServiceFactory > xConfigProvider(
-        xServiceManager->createInstanceWithContext( UNISTRING( "com.sun.star.configuration.ConfigurationProvider" ), xContext ),
-        uno::UNO_QUERY_THROW);
+        com::sun::star::configuration::theDefaultProvider::get( xContext ) );
 
     beans::PropertyValue aProperty;
     aProperty.Name  = UNISTRING( "nodepath" );
diff --git a/extensions/source/update/check/updatehdl.cxx b/extensions/source/update/check/updatehdl.cxx
index 7ee3aa4..9f1656f 100644
--- a/extensions/source/update/check/updatehdl.cxx
+++ b/extensions/source/update/check/updatehdl.cxx
@@ -60,6 +60,8 @@
 #include <com/sun/star/beans/PropertyValue.hpp>
 #include "com/sun/star/beans/XPropertySet.hpp"
 
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
+
 #include "com/sun/star/container/XNameContainer.hpp"
 
 #include "com/sun/star/frame/XDesktop.hpp"
@@ -861,17 +863,8 @@ void UpdateHandler::insertControlModel( uno::Reference< awt::XControlModel > & r
 //--------------------------------------------------------------------
 void UpdateHandler::setFullVersion( rtl::OUString& rString )
 {
-    if( !mxContext.is() )
-        throw uno::RuntimeException( UNISTRING( "getProductName: empty component context" ), *this );
-
-    uno::Reference< lang::XMultiComponentFactory > xServiceManager( mxContext->getServiceManager() );
-
-    if( !xServiceManager.is() )
-        throw uno::RuntimeException( UNISTRING( "getProductName: unable to obtain service manager from component context" ), *this );
-
     uno::Reference< lang::XMultiServiceFactory > xConfigurationProvider(
-        xServiceManager->createInstanceWithContext( UNISTRING( "com.sun.star.configuration.ConfigurationProvider" ), mxContext ),
-        uno::UNO_QUERY_THROW);
+        com::sun::star::configuration::theDefaultProvider::get( mxContext ) );
 
     beans::PropertyValue aProperty;
     aProperty.Name  = UNISTRING( "nodepath" );
diff --git a/extensions/source/update/feed/updatefeed.cxx b/extensions/source/update/feed/updatefeed.cxx
index bb250ba..42542c1 100644
--- a/extensions/source/update/feed/updatefeed.cxx
+++ b/extensions/source/update/feed/updatefeed.cxx
@@ -34,7 +34,8 @@
 #include <cppuhelper/implementationentry.hxx>
 #include <com/sun/star/beans/Property.hpp>
 #include <com/sun/star/beans/XPropertySetInfo.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/deployment/UpdateInformationEntry.hpp>
 #include <com/sun/star/deployment/UpdateInformationProvider.hpp>
@@ -338,17 +339,8 @@ UpdateInformationProvider::UpdateInformationProvider(
     m_xContentProvider(xContentProvider), m_xDocumentBuilder(xDocumentBuilder),
     m_xXPathAPI(xXPathAPI), m_aRequestHeaderList(1)
 {
-    uno::Reference< lang::XMultiComponentFactory > xServiceManager(xContext->getServiceManager());
-    if( !xServiceManager.is() )
-        throw uno::RuntimeException(
-            UNISTRING("unable to obtain service manager from component context"),
-            uno::Reference< uno::XInterface >());
-
     uno::Reference< lang::XMultiServiceFactory > xConfigurationProvider(
-        xServiceManager->createInstanceWithContext(
-            UNISTRING("com.sun.star.configuration.ConfigurationProvider"),
-            xContext ),
-        uno::UNO_QUERY_THROW);
+        com::sun::star::configuration::theDefaultProvider::get(xContext));
 
     rtl::OUStringBuffer buf;
     rtl::OUString name;
@@ -448,7 +440,7 @@ UpdateInformationProvider::~UpdateInformationProvider()
 uno::Any
 UpdateInformationProvider::getConfigurationItem(uno::Reference<lang::XMultiServiceFactory> const & configurationProvider, rtl::OUString const & node, rtl::OUString const & item)
 {
-    beans::PropertyValue aProperty;
+    beans::NamedValue aProperty;
     aProperty.Name  = UNISTRING("nodepath");
     aProperty.Value = uno::makeAny(node);
 
diff --git a/filter/source/config/cache/constant.hxx b/filter/source/config/cache/constant.hxx
index 097f8aa..32b9113 100644
--- a/filter/source/config/cache/constant.hxx
+++ b/filter/source/config/cache/constant.hxx
@@ -182,7 +182,6 @@ extern rtl::OUString pFilterStrings[];
 
 /** @short  some uno service names.
  */
-#define  SERVICE_CONFIGURATIONPROVIDER      _FILTER_CONFIG_FROM_ASCII_("com.sun.star.configuration.ConfigurationProvider"     )
 #define  SERVICE_CONFIGURATIONUPDATEACCESS  _FILTER_CONFIG_FROM_ASCII_("com.sun.star.configuration.ConfigurationUpdateAccess" )
 #define  SERVICE_CONFIGURATIONACCESS        _FILTER_CONFIG_FROM_ASCII_("com.sun.star.configuration.ConfigurationAccess"       )
 #define  SERVICE_URLTRANSFORMER             _FILTER_CONFIG_FROM_ASCII_("com.sun.star.util.URLTransformer"                     )
diff --git a/filter/source/config/cache/filtercache.cxx b/filter/source/config/cache/filtercache.cxx
index 282ca5a..eedd168 100644
--- a/filter/source/config/cache/filtercache.cxx
+++ b/filter/source/config/cache/filtercache.cxx
@@ -41,9 +41,11 @@
 
 //_______________________________________________
 // includes
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/util/XChangesBatch.hpp>
 #include <com/sun/star/container/XHierarchicalNameAccess.hpp>
 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/beans/XProperty.hpp>
 #include <com/sun/star/beans/PropertyValue.hpp>
@@ -962,13 +964,11 @@ css::uno::Reference< css::uno::XInterface > FilterCache::impl_createConfigAccess
     try
     {
         css::uno::Reference< css::lang::XMultiServiceFactory > xConfigProvider(
-            m_xSMGR->createInstance(SERVICE_CONFIGURATIONPROVIDER), css::uno::UNO_QUERY);
-
-        if (!xConfigProvider.is())
-            return css::uno::Reference< css::uno::XInterface >();
+            css::configuration::theDefaultProvider::get(
+                comphelper::getComponentContext(m_xSMGR)));
 
         ::comphelper::SequenceAsVector< css::uno::Any > lParams;
-        css::beans::PropertyValue                       aParam ;
+        css::beans::NamedValue aParam;
 
         // set root path
         aParam.Name    = _FILTER_CONFIG_FROM_ASCII_("nodepath");
diff --git a/filter/source/msfilter/msoleexp.cxx b/filter/source/msfilter/msoleexp.cxx
index c9c13ed..0a682c8 100644
--- a/filter/source/msfilter/msoleexp.cxx
+++ b/filter/source/msfilter/msoleexp.cxx
@@ -32,6 +32,7 @@
 #include <com/sun/star/uno/Sequence.hxx>
 #include <com/sun/star/uno/Any.hxx>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/configuration/theDefaultProvider.hpp>
 #include <com/sun/star/container/XNameAccess.hpp>
 #include <com/sun/star/embed/XEmbedPersist.hpp>
 #include <com/sun/star/embed/NoVisualAreaSizeException.hpp>
@@ -97,38 +98,30 @@ String GetStorageType( const SvGlobalName& aEmbName )
 
 sal_Bool UseOldMSExport()
 {
-    uno::Reference< lang::XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
-
-    if ( xFactory.is() )
-    {
-        uno::Reference< lang::XMultiServiceFactory > xProvider( xFactory->createInstance(
-                    rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider"))),
-                    uno::UNO_QUERY);
-        if ( xProvider.is() )
+    uno::Reference< lang::XMultiServiceFactory > xProvider(
+        configuration::theDefaultProvider::get(
+            comphelper::getProcessComponentContext()));
+    try {
+        uno::Sequence< uno::Any > aArg( 1 );
+        aArg[0] <<= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.Common/InternalMSExport") );
+        uno::Reference< container::XNameAccess > xNameAccess(
+            xProvider->createInstanceWithArguments(
+                rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) ),
+                aArg ),
+            uno::UNO_QUERY );
+        if ( xNameAccess.is() )
         {
-            try {
-                uno::Sequence< uno::Any > aArg( 1 );
-                aArg[0] <<= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Office.Common/InternalMSExport") );
-                uno::Reference< container::XNameAccess > xNameAccess(
-                    xProvider->createInstanceWithArguments(
-                        rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationUpdateAccess" ) ),
-                        aArg ),
-                    uno::UNO_QUERY );
-                if ( xNameAccess.is() )
-                {
-                    uno::Any aResult = xNameAccess->getByName(
-                                    rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UseOldExport" ) ) );
+            uno::Any aResult = xNameAccess->getByName(
+                rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UseOldExport" ) ) );
 
-                    sal_Bool bResult = sal_Bool();
-                    if ( aResult >>= bResult )
-                        return bResult;
-                }
-            }
-            catch( uno::Exception& )
-            {
-            }
+            sal_Bool bResult = sal_Bool();
+            if ( aResult >>= bResult )
+                return bResult;
         }
     }
+    catch( uno::Exception& )
+    {
+    }
 
     OSL_FAIL( "Could not get access to configuration entry!\n" );
     return sal_False;
diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx
index d5fd586..466132e 100644
--- a/filter/source/pdf/pdfexport.cxx
+++ b/filter/source/pdf/pdfexport.cxx
@@ -62,6 +62,7 @@
 
 #include "vcl/graphictools.hxx"
 #include "com/sun/star/beans/XPropertySet.hpp"
+#include "com/sun/star/configuration/theDefaultProvider.hpp"
 #include "com/sun/star/awt/Rectangle.hpp"
 #include "com/sun/star/awt/XDevice.hpp"
 #include "com/sun/star/util/MeasureUnit.hpp"
@@ -325,55 +326,51 @@ static OUString getMimetypeForDocument( const Reference< XMultiServiceFactory >&
             // get the actual filter name
             OUString aFilterName;
             Reference< lang::XMultiServiceFactory > xConfigProvider(
-                xFactory->createInstance(
-                        OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.configuration.ConfigurationProvider" ) ) ),
-                        uno::UNO_QUERY );
-            if( xConfigProvider.is() )
+                configuration::theDefaultProvider::get(
+                    comphelper::getComponentContext( xFactory ) ) );
+            uno::Sequence< uno::Any > aArgs( 1 );
+            beans::NamedValue aPathProp;
+            aPathProp.Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) );
+            aPathProp.Value <<= OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Setup/Office/Factories/" ) );
+            aArgs[0] <<= aPathProp;
+
+            Reference< container::XNameAccess > xSOFConfig(
+                xConfigProvider->createInstanceWithArguments(

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list