Improve error logging for match/regex/cidr_match functions and unsupported dictionary usage

fixes #6442
refs #6497
This commit is contained in:
Michael Friedrich 2018-07-27 16:34:50 +02:00
parent eda3c3ade3
commit 5cb39ea78b
1 changed files with 15 additions and 3 deletions

View File

@ -108,10 +108,14 @@ bool ScriptUtils::CastBool(const Value& value)
bool ScriptUtils::Regex(const std::vector<Value>& args) bool ScriptUtils::Regex(const std::vector<Value>& args)
{ {
if (args.size() < 2) if (args.size() < 2)
BOOST_THROW_EXCEPTION(std::invalid_argument("Regular expression and text must be specified.")); BOOST_THROW_EXCEPTION(std::invalid_argument("Regular expression and text must be specified for regex()."));
String pattern = args[0]; String pattern = args[0];
const Value& argTexts = args[1]; const Value& argTexts = args[1];
if (argTexts.IsObjectType<Dictionary>())
BOOST_THROW_EXCEPTION(std::invalid_argument("Dictionaries are not supported by regex()."));
MatchType mode; MatchType mode;
if (args.size() > 2) if (args.size() > 2)
@ -159,10 +163,14 @@ bool ScriptUtils::Regex(const std::vector<Value>& args)
bool ScriptUtils::Match(const std::vector<Value>& args) bool ScriptUtils::Match(const std::vector<Value>& args)
{ {
if (args.size() < 2) if (args.size() < 2)
BOOST_THROW_EXCEPTION(std::invalid_argument("Pattern and text must be specified.")); BOOST_THROW_EXCEPTION(std::invalid_argument("Pattern and text must be specified for match()."));
String pattern = args[0]; String pattern = args[0];
const Value& argTexts = args[1]; const Value& argTexts = args[1];
if (argTexts.IsObjectType<Dictionary>())
BOOST_THROW_EXCEPTION(std::invalid_argument("Dictionaries are not supported by match()."));
MatchType mode; MatchType mode;
if (args.size() > 2) if (args.size() > 2)
@ -201,10 +209,14 @@ bool ScriptUtils::Match(const std::vector<Value>& args)
bool ScriptUtils::CidrMatch(const std::vector<Value>& args) bool ScriptUtils::CidrMatch(const std::vector<Value>& args)
{ {
if (args.size() < 2) if (args.size() < 2)
BOOST_THROW_EXCEPTION(std::invalid_argument("CIDR and IP address must be specified.")); BOOST_THROW_EXCEPTION(std::invalid_argument("CIDR and IP address must be specified for cidr_match()."));
String pattern = args[0]; String pattern = args[0];
const Value& argIps = args[1]; const Value& argIps = args[1];
if (argIps.IsObjectType<Dictionary>())
BOOST_THROW_EXCEPTION(std::invalid_argument("Dictionaries are not supported by cidr_match()."));
MatchType mode; MatchType mode;
if (args.size() > 2) if (args.size() > 2)