From 2d55cf134128e4859614006ba6691e9f178018f1 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Thu, 21 Apr 2016 13:50:47 +0200 Subject: [PATCH] Implement validation for the Logger#severity attribute fixes #11646 --- lib/base/logger.cpp | 17 ++++++++++++----- lib/base/logger.hpp | 2 ++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/base/logger.cpp b/lib/base/logger.cpp index 3aa14c1a8..d4a204855 100644 --- a/lib/base/logger.cpp +++ b/lib/base/logger.cpp @@ -156,7 +156,6 @@ String Logger::SeverityToString(LogSeverity severity) case LogCritical: return "critical"; default: - Log(LogCritical, "Logger", "Invalid severity."); BOOST_THROW_EXCEPTION(std::invalid_argument("Invalid severity.")); } } @@ -178,11 +177,8 @@ LogSeverity Logger::StringToSeverity(const String& severity) return LogWarning; else if (severity == "critical") return LogCritical; - else { - Log(LogCritical, "Logger") - << "Invalid severity: '" << severity << "'."; + else BOOST_THROW_EXCEPTION(std::invalid_argument("Invalid severity: " + severity)); - } } void Logger::DisableConsoleLog(void) @@ -219,3 +215,14 @@ bool Logger::IsTimestampEnabled(void) { return m_TimestampEnabled; } + +void Logger::ValidateSeverity(const String& value, const ValidationUtils& utils) +{ + ObjectImpl::ValidateSeverity(value, utils); + + try { + StringToSeverity(value); + } catch (...) { + BOOST_THROW_EXCEPTION(ValidationError(this, boost::assign::list_of("severity"), "Invalid severity specified: " + value)); + } +} diff --git a/lib/base/logger.hpp b/lib/base/logger.hpp index 2a77d0fba..36e727d0e 100644 --- a/lib/base/logger.hpp +++ b/lib/base/logger.hpp @@ -92,6 +92,8 @@ public: static void StaticInitialize(void); + virtual void ValidateSeverity(const String& value, const ValidationUtils& utils) override; + protected: virtual void Start(bool runtimeCreated) override; virtual void Stop(bool runtimeRemoved) override;