summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2015-06-17 21:17:55 +0200
committerBenoit Foucher <benoit@zeroc.com>2015-06-17 21:17:55 +0200
commit9b12ee6b394e046023b4836a2a5288db6ee32c3b (patch)
tree46a2ded2b285cb6786b1b94a7f285d82970ac8fb /cpp
parentICE-6605 Fixed android tests to work with Java 1.8 (diff)
downloadice-9b12ee6b394e046023b4836a2a5288db6ee32c3b.tar.bz2
ice-9b12ee6b394e046023b4836a2a5288db6ee32c3b.tar.xz
ice-9b12ee6b394e046023b4836a2a5288db6ee32c3b.zip
The communicator now catch exceptions raised by plugin initialize and raise PluginInitializationException instead
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/Ice/PluginManagerI.cpp23
-rw-r--r--cpp/src/IceDiscovery/PluginI.cpp6
-rw-r--r--cpp/src/IceLocatorDiscovery/PluginI.cpp2
-rw-r--r--cpp/test/Ice/plugin/Client.cpp8
4 files changed, 29 insertions, 10 deletions
diff --git a/cpp/src/Ice/PluginManagerI.cpp b/cpp/src/Ice/PluginManagerI.cpp
index 33901a78cb7..e3186298a9c 100644
--- a/cpp/src/Ice/PluginManagerI.cpp
+++ b/cpp/src/Ice/PluginManagerI.cpp
@@ -86,7 +86,26 @@ Ice::PluginManagerI::initializePlugins()
{
for(PluginInfoList::iterator p = _plugins.begin(); p != _plugins.end(); ++p)
{
- p->plugin->initialize();
+ try
+ {
+ p->plugin->initialize();
+ }
+ catch(const Ice::PluginInitializationException&)
+ {
+ throw;
+ }
+ catch(const std::exception& ex)
+ {
+ ostringstream os;
+ os << "plugin `" << p->name << "' initialization failed:\n" << ex.what();
+ throw PluginInitializationException(__FILE__, __LINE__, os.str());
+ }
+ catch(...)
+ {
+ ostringstream os;
+ os << "plugin `" << p->name << "' initialization failed:\nunknown exception";
+ throw PluginInitializationException(__FILE__, __LINE__, os.str());
+ }
initializedPlugins.push_back(p->plugin);
}
}
@@ -420,7 +439,7 @@ Ice::PluginManagerI::loadPlugin(const string& name, const string& pluginSpec, St
args = properties->parseCommandLineOptions(name, args);
cmdArgs = properties->parseCommandLineOptions(name, cmdArgs);
}
-
+
PluginPtr plugin;
PLUGIN_FACTORY factory = 0;
DynamicLibraryPtr library;
diff --git a/cpp/src/IceDiscovery/PluginI.cpp b/cpp/src/IceDiscovery/PluginI.cpp
index 387fffd21fa..6873cec56b6 100644
--- a/cpp/src/IceDiscovery/PluginI.cpp
+++ b/cpp/src/IceDiscovery/PluginI.cpp
@@ -95,7 +95,7 @@ PluginI::initialize()
// Setup locatory registry.
//
LocatorRegistryIPtr locatorRegistry = new LocatorRegistryI(_communicator);
- Ice::LocatorRegistryPrx locatorRegistryPrx =
+ Ice::LocatorRegistryPrx locatorRegistryPrx =
Ice::LocatorRegistryPrx::uncheckedCast(_locatorAdapter->addWithUUID(locatorRegistry));
string lookupEndpoints = properties->getProperty("IceDiscovery.Lookup");
@@ -125,7 +125,7 @@ PluginI::initialize()
catch(const Ice::LocalException& ex)
{
ostringstream os;
- os << "unable to establish multicast connection, IceDiscovery will be disabled:\n";
+ os << "IceDiscovery is unable to establish a multicast connection:\n";
os << "proxy = " << lookupPrx << '\n';
os << ex;
throw Ice::PluginInitializationException(__FILE__, __LINE__, os.str());
@@ -145,7 +145,7 @@ PluginI::initialize()
//
Ice::ObjectPrx loc = _locatorAdapter->addWithUUID(new LocatorI(_lookup, locatorRegistryPrx));
_communicator->setDefaultLocator(Ice::LocatorPrx::uncheckedCast(loc));
-
+
_multicastAdapter->activate();
_replyAdapter->activate();
_locatorAdapter->activate();
diff --git a/cpp/src/IceLocatorDiscovery/PluginI.cpp b/cpp/src/IceLocatorDiscovery/PluginI.cpp
index fb79d4b8529..d364fa7157c 100644
--- a/cpp/src/IceLocatorDiscovery/PluginI.cpp
+++ b/cpp/src/IceLocatorDiscovery/PluginI.cpp
@@ -241,7 +241,7 @@ PluginI::initialize()
catch(const Ice::LocalException& ex)
{
ostringstream os;
- os << "unable to establish multicast connection, Ice locator discovery will be disabled:\n";
+ os << "IceLocatorDiscovery is unable to establish a multicast connection:\n";
os << "proxy = " << lookupPrx << '\n';
os << ex;
throw Ice::PluginInitializationException(__FILE__, __LINE__, os.str());
diff --git a/cpp/test/Ice/plugin/Client.cpp b/cpp/test/Ice/plugin/Client.cpp
index add1d191002..d35ee1c53d9 100644
--- a/cpp/test/Ice/plugin/Client.cpp
+++ b/cpp/test/Ice/plugin/Client.cpp
@@ -223,9 +223,9 @@ main(int argc, char* argv[])
communicator = Ice::initialize(argc, argv, initData);
test(false);
}
- catch(const std::exception& ex)
+ catch(const Ice::PluginInitializationException& ex)
{
- test(string(ex.what()) == "PluginInitializeFailExeption");
+ test(ex.reason.find("PluginInitializeFailExeption") > 0);
}
test(!communicator);
cout << "ok" << endl;
@@ -298,9 +298,9 @@ main(int argc, char* argv[])
communicator = Ice::initialize(argc, argv, initData);
test(false);
}
- catch(const std::exception& ex)
+ catch(const Ice::PluginInitializationException& ex)
{
- test(string(ex.what()) == "PluginInitializeFailExeption");
+ test(ex.reason.find("PluginInitializeFailExeption") > 0);
}
test(!communicator);
cout << "ok" << endl;