summaryrefslogtreecommitdiffstats
path: root/stoc
diff options
context:
space:
mode:
authorsb <sb@openoffice.org>2010-10-21 15:41:41 +0200
committersb <sb@openoffice.org>2010-10-21 15:41:41 +0200
commite3d08367e9c907b94f3576f266dc8a2154414d2c (patch)
tree4e705b6577261b67f1006c59e5c083e6cfcc1a85 /stoc
parentsb131: #i114962# allow for explicit implementation name in css.lib.uno.helper... (diff)
downloadcore-e3d08367e9c907b94f3576f266dc8a2154414d2c.tar.gz
core-e3d08367e9c907b94f3576f266dc8a2154414d2c.zip
sb131: #i114962# singleton implementations need not have a .../UNO/SERVICES rdb key
Diffstat (limited to 'stoc')
-rw-r--r--stoc/source/implementationregistration/implreg.cxx84
1 files changed, 36 insertions, 48 deletions
diff --git a/stoc/source/implementationregistration/implreg.cxx b/stoc/source/implementationregistration/implreg.cxx
index 2faf13fd159c..cbb49c162fe1 100644
--- a/stoc/source/implementationregistration/implreg.cxx
+++ b/stoc/source/implementationregistration/implreg.cxx
@@ -1153,36 +1153,24 @@ static void prepareRegistry(
{
// update entries in SERVICES section
Sequence< Reference < XRegistryKey > > serviceKeys = xKey->openKeys();
- OUString implName;
+ const Reference < XRegistryKey > * pServiceKeys = serviceKeys.getConstArray();
- if (serviceKeys.getLength())
- {
- const Reference < XRegistryKey > * pServiceKeys = serviceKeys.getConstArray();
-
- implName = OUString(xImplKey->getKeyName().getStr() + 1);
- sal_Int32 firstDot = implName.indexOf('/');
-
- if (firstDot >= 0)
- implName = implName.copy(firstDot + 1);
-
- sal_Int32 offset = xKey->getKeyName().getLength() + 1;
+ OUString implName = OUString(xImplKey->getKeyName().getStr() + 1);
+ sal_Int32 firstDot = implName.indexOf('/');
- for (sal_Int32 j = 0; j < serviceKeys.getLength(); j++)
- {
- OUString serviceName = pServiceKeys[j]->getKeyName().copy(offset);
+ if (firstDot >= 0)
+ implName = implName.copy(firstDot + 1);
- createUniqueSubEntry(
- xDest->getRootKey()->createKey(
- pool.slash_SERVICES + serviceName ),
- implName);
- }
+ sal_Int32 offset = xKey->getKeyName().getLength() + 1;
- }
- else
+ for (sal_Int32 j = 0; j < serviceKeys.getLength(); j++)
{
- throw InvalidRegistryException(
- OUString( RTL_CONSTASCII_USTRINGPARAM( "prepareRegistry(): no service names given by component" ) ),
- Reference< XInterface > () );
+ OUString serviceName = pServiceKeys[j]->getKeyName().copy(offset);
+
+ createUniqueSubEntry(
+ xDest->getRootKey()->createKey(
+ pool.slash_SERVICES + serviceName ),
+ implName);
}
xKey = xImplKey->openKey( pool.slash_UNO );
@@ -1205,38 +1193,38 @@ static void prepareRegistry(
}
}
}
+ }
- // update LOCATION entry
- xKey = xImplKey->createKey( pool.slash_UNO_slash_LOCATION );
+ // update LOCATION entry
+ xKey = xImplKey->createKey( pool.slash_UNO_slash_LOCATION );
- if (xKey.is())
- {
- xKey->setAsciiValue(locationUrl);
- }
+ if (xKey.is())
+ {
+ xKey->setAsciiValue(locationUrl);
+ }
- // update ACTIVATOR entry
- xKey = xImplKey->createKey( pool.slash_UNO_slash_ACTIVATOR );
+ // update ACTIVATOR entry
+ xKey = xImplKey->createKey( pool.slash_UNO_slash_ACTIVATOR );
- if (xKey.is())
- {
- xKey->setAsciiValue(implementationLoaderUrl);
- }
+ if (xKey.is())
+ {
+ xKey->setAsciiValue(implementationLoaderUrl);
+ }
- xKey = xImplKey->openKey( pool.slash_UNO_slash_SERVICES );
+ xKey = xImplKey->openKey( pool.slash_UNO_slash_SERVICES );
+
+ if (xKey.is() && (xKey->getValueType() == RegistryValueType_ASCIILIST))
+ {
+ // update link entries in REGISTRY_LINKS section
+ Sequence<OUString> linkNames = xKey->getAsciiListValue();
- if (xKey.is() && (xKey->getValueType() == RegistryValueType_ASCIILIST))
+ if (linkNames.getLength())
{
- // update link entries in REGISTRY_LINKS section
- Sequence<OUString> linkNames = xKey->getAsciiListValue();
+ const OUString* pLinkNames = linkNames.getConstArray();
- if (linkNames.getLength())
+ for (sal_Int32 j = 0; j < linkNames.getLength(); j++)
{
- const OUString* pLinkNames = linkNames.getConstArray();
-
- for (sal_Int32 j = 0; j < linkNames.getLength(); j++)
- {
- prepareLink(xDest, xImplKey, pLinkNames[j]);
- }
+ prepareLink(xDest, xImplKey, pLinkNames[j]);
}
}
}