mirror of https://github.com/Icinga/icinga2.git
parent
042e4270bf
commit
0c31bae792
|
@ -245,20 +245,6 @@ ConfigItem::Ptr ConfigItem::GetObject(const String& type, const String& name)
|
||||||
return ConfigItem::Ptr();
|
return ConfigItem::Ptr();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ConfigItem::HasObject(const String& type, const String& name)
|
|
||||||
{
|
|
||||||
std::pair<String, String> key = std::make_pair(type, name);
|
|
||||||
ConfigItem::ItemMap::iterator it;
|
|
||||||
|
|
||||||
{
|
|
||||||
boost::mutex::scoped_lock lock(m_Mutex);
|
|
||||||
|
|
||||||
it = m_Items.find(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (it != m_Items.end());
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConfigItem::ValidateItem(void)
|
void ConfigItem::ValidateItem(void)
|
||||||
{
|
{
|
||||||
if (m_Validated)
|
if (m_Validated)
|
||||||
|
|
|
@ -61,7 +61,6 @@ public:
|
||||||
|
|
||||||
static ConfigItem::Ptr GetObject(const String& type,
|
static ConfigItem::Ptr GetObject(const String& type,
|
||||||
const String& name);
|
const String& name);
|
||||||
static bool HasObject(const String& type, const String& name);
|
|
||||||
|
|
||||||
void ValidateItem(void);
|
void ValidateItem(void);
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,8 @@ bool TypeRule::MatchName(const String& name) const
|
||||||
|
|
||||||
bool TypeRule::MatchValue(const Value& value, String *hint) const
|
bool TypeRule::MatchValue(const Value& value, String *hint) const
|
||||||
{
|
{
|
||||||
|
ConfigItem::Ptr item;
|
||||||
|
|
||||||
if (value.IsEmpty())
|
if (value.IsEmpty())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -76,11 +78,18 @@ bool TypeRule::MatchValue(const Value& value, String *hint) const
|
||||||
if (!value.IsScalar())
|
if (!value.IsScalar())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!ConfigItem::HasObject(m_NameType, value)) {
|
item = ConfigItem::GetObject(m_NameType, value);
|
||||||
|
|
||||||
|
if (!item) {
|
||||||
*hint = "Object '" + value + "' of type '" + m_NameType + "' does not exist.";
|
*hint = "Object '" + value + "' of type '" + m_NameType + "' does not exist.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (item->IsAbstract()) {
|
||||||
|
*hint = "Object '" + value + "' of type '" + m_NameType + "' must not be a template.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue