| 271 | } |
| 272 | |
| 273 | bool ConfigurableComponent::updateDynamicProperty(const std::string &name, const std::string &value) { |
| 274 | std::lock_guard<std::mutex> lock(configuration_mutex_); |
| 275 | auto &&it = dynamic_properties_.find(name); |
| 276 | |
| 277 | if (it != dynamic_properties_.end()) { |
| 278 | Property orig_property = it->second; |
| 279 | Property& new_property = it->second; |
| 280 | auto onExit = gsl::finally([&] { |
| 281 | onDynamicPropertyModified(orig_property, new_property); |
| 282 | logger_->log_debug("Component %s dynamic property name %s value %s", name, new_property.getName(), value); |
| 283 | }); |
| 284 | new_property.addValue(value); |
| 285 | new_property.setSupportsExpressionLanguage(true); |
| 286 | return true; |
| 287 | } else { |
| 288 | return createDynamicProperty(name, value); |
| 289 | } |
| 290 | } |
| 291 | |
| 292 | std::vector<std::string> ConfigurableComponent::getDynamicPropertyKeys() const { |
| 293 | std::lock_guard<std::mutex> lock(configuration_mutex_); |