From e1cab8b38e9f2adff15221c69caac06bd3f945ba Mon Sep 17 00:00:00 2001 From: Philip Rauwolf Date: Mon, 24 Jun 2013 14:19:41 +0200 Subject: [PATCH] Added runtime check that mainloop context is initialized --- src/CommonAPI/DBus/DBusRuntime.cpp | 31 +++++++++++++------------------ src/CommonAPI/DBus/DBusRuntime.h | 21 +++++++++------------ src/test/DBusMainLoopIntegrationTest.cpp | 12 ++++++++++++ src/test/DBusServiceRegistryTest.cpp | 2 ++ 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/src/CommonAPI/DBus/DBusRuntime.cpp b/src/CommonAPI/DBus/DBusRuntime.cpp index 0d1ff62..a4b632b 100644 --- a/src/CommonAPI/DBus/DBusRuntime.cpp +++ b/src/CommonAPI/DBus/DBusRuntime.cpp @@ -24,37 +24,32 @@ std::shared_ptr DBusRuntime::getInstance() { return singleton_; } -std::shared_ptr DBusRuntime::createFactory(std::shared_ptr mainLoopContext) { - return createFactory(mainLoopContext, ""); +std::shared_ptr DBusRuntime::doCreateFactory(std::shared_ptr mainLoopContext) { + return doCreateFactory(mainLoopContext, ""); } -std::shared_ptr DBusRuntime::createFactory(const std::string factoryName, - const bool nullOnInvalidName) { - return createFactory(std::shared_ptr(NULL), factoryName, nullOnInvalidName); +std::shared_ptr DBusRuntime::doCreateFactory(const std::string factoryName, + const bool nullOnInvalidName) { + return doCreateFactory(std::shared_ptr(NULL), factoryName, nullOnInvalidName); } - - -std::shared_ptr DBusRuntime::createFactory(std::shared_ptr mainLoopContext, - const std::string factoryName, - const bool nullOnInvalidName) { +std::shared_ptr DBusRuntime::doCreateFactory(std::shared_ptr mainLoopContext, + const std::string factoryName, + const bool nullOnInvalidName) { auto factory = std::shared_ptr(NULL); - if (factoryName == "") + if (factoryName == "") { factory = std::make_shared(this->shared_from_this(), &middlewareInfo_, mainLoopContext); - else - { + } else { DBusAddressTranslator::FactoryConfigDBus* factoryConfigDBus = DBusAddressTranslator::getInstance().searchForFactoryConfiguration(factoryName); DBusAddressTranslator::FactoryConfigDBus defaultFactoryConfigDBus; - if (factoryConfigDBus == NULL) - { + if (factoryConfigDBus == NULL) { // unknown / unconfigured Factory requested - if (nullOnInvalidName) + if (nullOnInvalidName) { return (NULL); - else - { + } else { DBusFactory::getDefaultFactoryConfig(defaultFactoryConfigDBus); // get default settings factoryConfigDBus = &defaultFactoryConfigDBus; } diff --git a/src/CommonAPI/DBus/DBusRuntime.h b/src/CommonAPI/DBus/DBusRuntime.h index 133b624..6d65966 100644 --- a/src/CommonAPI/DBus/DBusRuntime.h +++ b/src/CommonAPI/DBus/DBusRuntime.h @@ -23,21 +23,18 @@ namespace DBus { class DBusRuntime: public Runtime, public std::enable_shared_from_this { public: static std::shared_ptr getInstance(); - - - //std::shared_ptr createFactory(std::shared_ptr = std::shared_ptr(NULL)); - std::shared_ptr createFactory(std::shared_ptr mainLoopContext = std::shared_ptr(NULL)); - - std::shared_ptr createFactory(const std::string factoryName, - const bool nullOnInvalidName = false); - std::shared_ptr createFactory(std::shared_ptr mainLoopContext, - const std::string factoryName, - const bool nullOnInvalidName = false); - - std::shared_ptr getServicePublisher(); static const MiddlewareInfo middlewareInfo_; + + protected: + std::shared_ptr doCreateFactory(std::shared_ptr mainLoopContext); + std::shared_ptr doCreateFactory(const std::string factoryName, + const bool nullOnInvalidName = false); + std::shared_ptr doCreateFactory(std::shared_ptr mainLoopContext, + const std::string factoryName, + const bool nullOnInvalidName = false); + private: static std::unordered_map registeredRuntimes; }; diff --git a/src/test/DBusMainLoopIntegrationTest.cpp b/src/test/DBusMainLoopIntegrationTest.cpp index baa77ae..f945e64 100644 --- a/src/test/DBusMainLoopIntegrationTest.cpp +++ b/src/test/DBusMainLoopIntegrationTest.cpp @@ -69,6 +69,18 @@ TEST_F(DBusBasicMainLoopTest, MainloopContextCanBeCreated) { } +TEST_F(DBusBasicMainLoopTest, NoFactoryWillBeCreatedIfContextIsUninitialized) { + std::shared_ptr runtime = CommonAPI::Runtime::load(); + ASSERT_TRUE((bool) runtime); + + std::shared_ptr context = runtime->getNewMainLoopContext(); + ASSERT_TRUE((bool) context); + + std::shared_ptr factory = runtime->createFactory(context); + ASSERT_FALSE((bool) factory); +} + + TEST_F(DBusBasicMainLoopTest, SeveralMainloopContextsCanBeCreated) { std::shared_ptr runtime = CommonAPI::Runtime::load(); ASSERT_TRUE((bool)runtime); diff --git a/src/test/DBusServiceRegistryTest.cpp b/src/test/DBusServiceRegistryTest.cpp index a1321d1..9a7676e 100644 --- a/src/test/DBusServiceRegistryTest.cpp +++ b/src/test/DBusServiceRegistryTest.cpp @@ -10,7 +10,9 @@ #include +#ifndef COMMONAPI_INTERNAL_COMPILATION #define COMMONAPI_INTERNAL_COMPILATION +#endif #include #include -- 2.7.4