diff options
author | Caolán McNamara <caolanm@redhat.com> | 2010-10-19 11:28:01 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2010-10-19 11:56:57 +0100 |
commit | 3973845debf835f06cf0fc3324d2fbc06ef01725 (patch) | |
tree | d7d89dc89df2e837826f7d119b48e971b222c5e7 | |
parent | 9591852ccaf91fa033c44b4d672ec152d7e470fa (diff) |
survive missing configuration entries gracefully
-rw-r--r-- | framework/source/services/pathsettings.cxx | 22 | ||||
-rw-r--r-- | framework/source/services/substitutepathvars.cxx | 23 |
2 files changed, 34 insertions, 11 deletions
diff --git a/framework/source/services/pathsettings.cxx b/framework/source/services/pathsettings.cxx index 49b5f4dd75b9..dab2c5a6d65d 100644 --- a/framework/source/services/pathsettings.cxx +++ b/framework/source/services/pathsettings.cxx @@ -223,17 +223,21 @@ void PathSettings::impl_readAll() RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "PathSettings::impl_readAll" ); RTL_LOGFILE_CONTEXT(aLog, "framework (as96863) ::PathSettings::load config (all)"); - // TODO think about me - css::uno::Reference< css::container::XNameAccess > xCfg = fa_getCfgNew(); - css::uno::Sequence< ::rtl::OUString > lPaths = xCfg->getElementNames(); - - sal_Int32 c = lPaths.getLength(); - sal_Int32 i = 0; + try + { + // TODO think about me + css::uno::Reference< css::container::XNameAccess > xCfg = fa_getCfgNew(); + css::uno::Sequence< ::rtl::OUString > lPaths = xCfg->getElementNames(); - for (i=0; i<c; ++i) + sal_Int32 c = lPaths.getLength(); + for (sal_Int32 i = 0; i < c; ++i) + { + const ::rtl::OUString& sPath = lPaths[i]; + impl_updatePath(sPath, sal_False); + } + } + catch(const css::uno::RuntimeException& ) { - const ::rtl::OUString& sPath = lPaths[i]; - impl_updatePath(sPath, sal_False); } impl_rebuildPropertyDescriptor(); diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx index 6d34e8d7d662..4bfe4d9e4de2 100644 --- a/framework/source/services/substitutepathvars.cxx +++ b/framework/source/services/substitutepathvars.cxx @@ -718,12 +718,24 @@ rtl::OUString SubstitutePathVariables::GetWorkPath() const { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "SubstitutePathVariables::GetWorkPath" ); rtl::OUString aWorkPath; - ::comphelper::ConfigurationHelper::readDirectKey( + + try + { + ::comphelper::ConfigurationHelper::readDirectKey( m_xServiceManager, ::rtl::OUString::createFromAscii("org.openoffice.Office.Paths"), ::rtl::OUString::createFromAscii("Paths/Work"), ::rtl::OUString::createFromAscii("WritePath"), ::comphelper::ConfigurationHelper::E_READONLY) >>= aWorkPath; + } + catch(RuntimeException &) + { + } + + // fallback in case config layer does not return an useable work dir value. + if (aWorkPath.getLength() < 1) + aWorkPath = GetWorkVariableValue(); + return aWorkPath; } @@ -731,12 +743,19 @@ rtl::OUString SubstitutePathVariables::GetWorkVariableValue() const { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "SubstitutePathVariables::GetWorkVariableValue" ); ::rtl::OUString aWorkPath; - ::comphelper::ConfigurationHelper::readDirectKey( + + try + { + ::comphelper::ConfigurationHelper::readDirectKey( m_xServiceManager, ::rtl::OUString::createFromAscii("org.openoffice.Office.Paths"), ::rtl::OUString::createFromAscii("Variables"), ::rtl::OUString::createFromAscii("Work"), ::comphelper::ConfigurationHelper::E_READONLY) >>= aWorkPath; + } + catch(RuntimeException &) + { + } // fallback to $HOME in case platform dependend config layer does not return // an usuable work dir value. |