]> granicus.if.org Git - icinga2/commitdiff
Allow modifying the name attribute
authorGunnar Beutner <gunnar.beutner@netways.de>
Tue, 9 Dec 2014 19:37:20 +0000 (20:37 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Tue, 9 Dec 2014 19:37:20 +0000 (20:37 +0100)
fixes #8033

lib/config/configitem.cpp

index 966d3000db95a52aaf6067b6d9283d7ccaeda8a9..7b4c43d5640d3b5ae11d0edbb32e17804d769f17 100644 (file)
@@ -177,24 +177,32 @@ DynamicObject::Ptr ConfigItem::Commit(bool discard)
        if (discard)
                m_Expression.reset();
 
-       String name = m_Name;
+       String item_name;
+       String short_name = dobj->GetShortName();
+
+       if (!short_name.IsEmpty()) {
+               item_name = short_name;
+               dobj->SetName(short_name);
+       } else
+               item_name = m_Name;
+
+       String name = item_name;
 
        NameComposer *nc = dynamic_cast<NameComposer *>(type.get());
 
        if (nc) {
-               name = nc->MakeName(m_Name, dobj);
+               name = nc->MakeName(name, dobj);
 
                if (name.IsEmpty())
                        BOOST_THROW_EXCEPTION(std::runtime_error("Could not determine name for object"));
        }
 
-       if (name != m_Name)
-               dobj->SetShortName(m_Name);
+       if (name != item_name)
+               dobj->SetShortName(item_name);
 
        dobj->SetName(name);
        dobj->OnConfigLoaded();
 
-
        {
                boost::mutex::scoped_lock lock(m_Mutex);
                m_CommittedItems.push_back(this);