summaryrefslogtreecommitdiff
path: root/ucbhelper
diff options
context:
space:
mode:
authorStephan Bergmann <sb@openoffice.org>2001-02-06 09:57:43 +0000
committerStephan Bergmann <sb@openoffice.org>2001-02-06 09:57:43 +0000
commitcef571f86ff53e1da988d072c6e60ef32872f277 (patch)
treedc91ebdf1263a5424bae85dc2669f27c2fe757ba /ucbhelper
parent0db63e9b716920cdddfeecbb2c257f9d18457c0a (diff)
#83365# Allow empty content provider service names.
Diffstat (limited to 'ucbhelper')
-rw-r--r--ucbhelper/source/provider/configureucb.cxx21
-rw-r--r--ucbhelper/source/provider/registerucb.cxx43
-rw-r--r--ucbhelper/source/provider/registerucb.hxx6
3 files changed, 36 insertions, 34 deletions
diff --git a/ucbhelper/source/provider/configureucb.cxx b/ucbhelper/source/provider/configureucb.cxx
index 3828f7b6a4e2..bef81f9c6682 100644
--- a/ucbhelper/source/provider/configureucb.cxx
+++ b/ucbhelper/source/provider/configureucb.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: configureucb.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: sb $ $Date: 2000-11-09 13:23:55 $
+ * last change: $Author: sb $ $Date: 2001-02-06 10:57:43 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -218,16 +218,15 @@ configureUcb(
&aProviderArguments))
{
ContentProviderRegistrationInfo aInfo;
- registerAtUcb(rManager,
- rServiceFactory,
- aIt->ServiceName,
- aProviderArguments,
- aIt->URLTemplate,
- &aInfo);
- VOS_ENSURE(aInfo.m_xProvider.is(),
- "ucb::configureUcb(): Bad content provider");
+ bool bSuccess = registerAtUcb(rManager,
+ rServiceFactory,
+ aIt->ServiceName,
+ aProviderArguments,
+ aIt->URLTemplate,
+ &aInfo);
+ VOS_ENSURE(bSuccess, "ucb::configureUcb(): Bad content provider");
- if (pInfos)
+ if (bSuccess && pInfos)
pInfos->push_back(aInfo);
}
else
diff --git a/ucbhelper/source/provider/registerucb.cxx b/ucbhelper/source/provider/registerucb.cxx
index 80a4d992d9f4..e41764cca619 100644
--- a/ucbhelper/source/provider/registerucb.cxx
+++ b/ucbhelper/source/provider/registerucb.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: registerucb.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: sb $ $Date: 2000-11-15 13:40:44 $
+ * last change: $Author: sb $ $Date: 2001-02-06 10:57:43 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -97,7 +97,7 @@ namespace ucb {
//
//============================================================================
-void
+bool
registerAtUcb(
uno::Reference< star::ucb::XContentProviderManager > const & rManager,
uno::Reference< lang::XMultiServiceFactory > const & rServiceFactory,
@@ -119,26 +119,27 @@ registerAtUcb(
copy(RTL_CONSTASCII_LENGTH("{noproxy}")) :
rArguments);
- uno::Reference< star::ucb::XContentProviderFactory > xProxyFactory;
+ // First, try to instantiate proxy for provider:
+ uno::Reference< star::ucb::XContentProvider > xProvider;
if (!bNoProxy)
+ {
+ uno::Reference< star::ucb::XContentProviderFactory > xProxyFactory;
try
{
xProxyFactory
= uno::Reference< star::ucb::XContentProviderFactory >(
rServiceFactory->
createInstance(
- rtl::OUString::createFromAscii(
- "com.sun.star.ucb."
- "ContentProviderProxyFactory")),
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.ucb.ContentProviderProxyFactory"))),
uno::UNO_QUERY);
}
- catch (uno::RuntimeException const &) { throw; }
catch (uno::Exception const &) {}
-
- // First, try to instantiate proxy for provider:
- uno::Reference< star::ucb::XContentProvider > xProvider;
- if (xProxyFactory.is())
- xProvider = xProxyFactory->createContentProvider(rName);
+ VOS_ENSURE(xProxyFactory.is(), "No ContentProviderProxyFactory");
+ if (xProxyFactory.is())
+ xProvider = xProxyFactory->createContentProvider(rName);
+ }
// Then, try to instantiate provider directly:
if (!xProvider.is())
@@ -160,10 +161,9 @@ registerAtUcb(
uno::Reference< star::ucb::XContentProvider > xInstance;
try
{
- xInstance
- = xParameterized->registerInstance(rTemplate,
- aProviderArguments,
- true);
+ xInstance = xParameterized->registerInstance(rTemplate,
+ aProviderArguments,
+ true);
//@@@ if this call replaces an old instance, the commit-or-
// rollback code below will not work
}
@@ -173,10 +173,12 @@ registerAtUcb(
xProvider = xInstance;
}
+ bool bSuccess = false;
if (rManager.is() && xProvider.is())
try
{
rManager->registerContentProvider(xProvider, rTemplate, true);
+ bSuccess = true;
}
catch (star::ucb::DuplicateProviderException const &)
{
@@ -187,7 +189,6 @@ registerAtUcb(
aProviderArguments);
}
catch (lang::IllegalArgumentException const &) {}
- xOriginalProvider = 0;
}
catch (...)
{
@@ -198,15 +199,17 @@ registerAtUcb(
aProviderArguments);
}
catch (lang::IllegalArgumentException const &) {}
+ catch (uno::RuntimeException const &) {}
throw;
}
- if (pInfo)
+ if (bSuccess && pInfo)
{
pInfo->m_xProvider = xOriginalProvider;
pInfo->m_aArguments = aProviderArguments;
pInfo->m_aTemplate = rTemplate;
}
+ return bSuccess;
}
//============================================================================
@@ -240,7 +243,7 @@ deregisterFromUcb(
xProvider = xInstance;
}
- if (rManager.is() && xProvider.is())
+ if (rManager.is())
rManager->deregisterContentProvider(xProvider, rInfo.m_aTemplate);
//@@@ if this fails, a roll-back of deregisterInstance() is
// missing
diff --git a/ucbhelper/source/provider/registerucb.hxx b/ucbhelper/source/provider/registerucb.hxx
index 99bc7dee7965..61388886da4d 100644
--- a/ucbhelper/source/provider/registerucb.hxx
+++ b/ucbhelper/source/provider/registerucb.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: registerucb.hxx,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: sb $ $Date: 2000-11-09 13:23:55 $
+ * last change: $Author: sb $ $Date: 2001-02-06 10:57:43 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -96,7 +96,7 @@ struct ContentProviderRegistrationInfo;
@param pInfo If not null, this output parameter is filled with
information about the (atemptively) registered provider.
*/
-void
+bool
registerAtUcb(
com::sun::star::uno::Reference<
com::sun::star::ucb::XContentProviderManager > const &