mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-27 07:34:15 +02:00
Fixed code gen bug with nested templates.
This commit is contained in:
parent
3e2b5d5269
commit
029dc35366
@ -8,8 +8,8 @@ SUBDIRS = \
|
|||||||
third-party \
|
third-party \
|
||||||
base \
|
base \
|
||||||
dyn \
|
dyn \
|
||||||
dyntest \
|
|
||||||
jsonrpc \
|
jsonrpc \
|
||||||
|
dyntest \
|
||||||
icinga \
|
icinga \
|
||||||
components \
|
components \
|
||||||
icinga-app \
|
icinga-app \
|
||||||
|
@ -56,10 +56,8 @@ void ConfigItem::AddParent(string parent)
|
|||||||
m_Parents.push_back(parent);
|
m_Parents.push_back(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary::Ptr ConfigItem::CalculateProperties(void) const
|
void ConfigItem::CalculateProperties(Dictionary::Ptr dictionary) const
|
||||||
{
|
{
|
||||||
Dictionary::Ptr result = make_shared<Dictionary>();
|
|
||||||
|
|
||||||
vector<string>::const_iterator it;
|
vector<string>::const_iterator it;
|
||||||
for (it = m_Parents.begin(); it != m_Parents.end(); it++) {
|
for (it = m_Parents.begin(); it != m_Parents.end(); it++) {
|
||||||
ConfigItem::Ptr parent = ConfigItem::GetObject(GetType(), *it);
|
ConfigItem::Ptr parent = ConfigItem::GetObject(GetType(), *it);
|
||||||
@ -70,12 +68,10 @@ Dictionary::Ptr ConfigItem::CalculateProperties(void) const
|
|||||||
throw domain_error(message.str());
|
throw domain_error(message.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
parent->GetExpressionList()->Execute(result);
|
parent->CalculateProperties(dictionary);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ExpressionList->Execute(result);
|
m_ExpressionList->Execute(dictionary);
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectSet<ConfigItem::Ptr>::Ptr ConfigItem::GetAllObjects(void)
|
ObjectSet<ConfigItem::Ptr>::Ptr ConfigItem::GetAllObjects(void)
|
||||||
@ -122,7 +118,9 @@ void ConfigItem::Commit(void)
|
|||||||
m_DynamicObject = dobj;
|
m_DynamicObject = dobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
dobj->SetConfig(CalculateProperties());
|
Dictionary::Ptr properties = make_shared<Dictionary>();
|
||||||
|
CalculateProperties(properties);
|
||||||
|
dobj->SetConfig(properties);
|
||||||
dobj->Commit();
|
dobj->Commit();
|
||||||
|
|
||||||
ConfigItem::Ptr ci = GetObject(GetType(), GetName());
|
ConfigItem::Ptr ci = GetObject(GetType(), GetName());
|
||||||
|
@ -41,7 +41,7 @@ public:
|
|||||||
ExpressionList::Ptr GetExpressionList(void) const;
|
ExpressionList::Ptr GetExpressionList(void) const;
|
||||||
void SetExpressionList(const ExpressionList::Ptr& exprl);
|
void SetExpressionList(const ExpressionList::Ptr& exprl);
|
||||||
|
|
||||||
Dictionary::Ptr CalculateProperties(void) const;
|
void CalculateProperties(Dictionary::Ptr dictionary) const;
|
||||||
|
|
||||||
void Commit(void);
|
void Commit(void);
|
||||||
void Unregister(void);
|
void Unregister(void);
|
||||||
|
@ -10,7 +10,7 @@ int main(int argc, char **argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10000; i++) {
|
||||||
vector<ConfigItem::Ptr> objects = ConfigCompiler::CompileFile(string(argv[1]));
|
vector<ConfigItem::Ptr> objects = ConfigCompiler::CompileFile(string(argv[1]));
|
||||||
|
|
||||||
ConfigVM::ExecuteItems(objects);
|
ConfigVM::ExecuteItems(objects);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user