diff --git a/scenarios/AronComponentConfigExample/config/AronComponentConfigExample.cfg b/scenarios/AronComponentConfigExample/config/AronComponentConfigExample.cfg index dcf2233099e0acef6a620567979cc71e1da2cc29..c5122a357453ce2b9cc050e4a8a5a862534e4002 100644 --- a/scenarios/AronComponentConfigExample/config/AronComponentConfigExample.cfg +++ b/scenarios/AronComponentConfigExample/config/AronComponentConfigExample.cfg @@ -60,152 +60,200 @@ # ArmarX.ComponentConfigTest.RemoteGuiName = RemoteGuiProvider -# ArmarX.ComponentConfigTest.boolMember: +# ArmarX.ComponentConfigTest.TestConfig.boolMember: # Attributes: # - Default: true # - Case sensitivity: yes # - Required: no # - Possible values: {0, 1, false, no, true, yes} -# ArmarX.ComponentConfigTest.boolMember = true +# ArmarX.ComponentConfigTest.TestConfig.boolMember = true -# ArmarX.ComponentConfigTest.floatMember: +# ArmarX.ComponentConfigTest.TestConfig.floatMember: # Attributes: # - Default: 100 # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.floatMember = 100 +# ArmarX.ComponentConfigTest.TestConfig.floatMember = 100 -# ArmarX.ComponentConfigTest.intMember: +# ArmarX.ComponentConfigTest.TestConfig.intMember: # Attributes: # - Default: 1000 # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.intMember = 1000 +# ArmarX.ComponentConfigTest.TestConfig.intMember = 1000 -# ArmarX.ComponentConfigTest.stringMember: +# ArmarX.ComponentConfigTest.TestConfig.orientation.header.agent: +# Attributes: +# - Default: "" +# - Case sensitivity: yes +# - Required: no +# ArmarX.ComponentConfigTest.TestConfig.orientation.header.agent = "" + + +# ArmarX.ComponentConfigTest.TestConfig.orientation.header.frame: +# Attributes: +# - Default: "" +# - Case sensitivity: yes +# - Required: no +# ArmarX.ComponentConfigTest.TestConfig.orientation.header.frame = "" + + +# ArmarX.ComponentConfigTest.TestConfig.pose.header.agent: +# Attributes: +# - Default: "" +# - Case sensitivity: yes +# - Required: no +# ArmarX.ComponentConfigTest.TestConfig.pose.header.agent = "" + + +# ArmarX.ComponentConfigTest.TestConfig.pose.header.frame: +# Attributes: +# - Default: "" +# - Case sensitivity: yes +# - Required: no +# ArmarX.ComponentConfigTest.TestConfig.pose.header.frame = "" + + +# ArmarX.ComponentConfigTest.TestConfig.position.header.agent: +# Attributes: +# - Default: "" +# - Case sensitivity: yes +# - Required: no +# ArmarX.ComponentConfigTest.TestConfig.position.header.agent = "" + + +# ArmarX.ComponentConfigTest.TestConfig.position.header.frame: +# Attributes: +# - Default: "" +# - Case sensitivity: yes +# - Required: no +# ArmarX.ComponentConfigTest.TestConfig.position.header.frame = "" + + +# ArmarX.ComponentConfigTest.TestConfig.stringMember: # Attributes: # - Default: initial # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.stringMember = initial +# ArmarX.ComponentConfigTest.TestConfig.stringMember = initial -# ArmarX.ComponentConfigTest.subMember.boolMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.boolMember: # Attributes: # - Default: false # - Case sensitivity: yes # - Required: no # - Possible values: {0, 1, false, no, true, yes} -# ArmarX.ComponentConfigTest.subMember.boolMember = false +# ArmarX.ComponentConfigTest.TestConfig.subMember.boolMember = false -# ArmarX.ComponentConfigTest.subMember.doubleMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.doubleMember: # Attributes: # - Default: 0 # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.doubleMember = 0 +# ArmarX.ComponentConfigTest.TestConfig.subMember.doubleMember = 0 -# ArmarX.ComponentConfigTest.subMember.floatMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.floatMember: # Attributes: # - Default: 0 # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.floatMember = 0 +# ArmarX.ComponentConfigTest.TestConfig.subMember.floatMember = 0 -# ArmarX.ComponentConfigTest.subMember.intMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.intMember: # Attributes: # - Default: 0 # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.intMember = 0 +# ArmarX.ComponentConfigTest.TestConfig.subMember.intMember = 0 -# ArmarX.ComponentConfigTest.subMember.stringMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.stringMember: # Attributes: # - Default: "" # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.stringMember = "" +# ArmarX.ComponentConfigTest.TestConfig.subMember.stringMember = "" -# ArmarX.ComponentConfigTest.subMember.subsubMember.boolMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.boolMember: # Attributes: # - Default: false # - Case sensitivity: yes # - Required: no # - Possible values: {0, 1, false, no, true, yes} -# ArmarX.ComponentConfigTest.subMember.subsubMember.boolMember = false +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.boolMember = false -# ArmarX.ComponentConfigTest.subMember.subsubMember.enumMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.enumMember: # Attributes: # - Default: 1 # - Case sensitivity: yes # - Required: no # - Possible values: {Bar, Baz, Foo, Qux} -# ArmarX.ComponentConfigTest.subMember.subsubMember.enumMember = 1 +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.enumMember = 1 -# ArmarX.ComponentConfigTest.subMember.subsubMember.floatMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.floatMember: # Attributes: # - Default: 0 # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.subsubMember.floatMember = 0 +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.floatMember = 0 -# ArmarX.ComponentConfigTest.subMember.subsubMember.intDictMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.intDictMember: # Attributes: # - Default: int1:1,int2:2 # - Case sensitivity: yes # - Required: no -ArmarX.ComponentConfigTest.subMember.subsubMember.intDictMember = int1:1,int2:2,int3:3,int5:4 +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.intDictMember = int1:1,int2:2 -# ArmarX.ComponentConfigTest.subMember.subsubMember.intListMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.intListMember: # Attributes: # - Default: 1, 2, 3, 4, 5, 6 # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.subsubMember.intListMember = 1, 2, 3, 4, 5, 6 +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.intListMember = 1, 2, 3, 4, 5, 6 -# ArmarX.ComponentConfigTest.subMember.subsubMember.intMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.intMember: # Attributes: # - Default: 0 # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.subsubMember.intMember = 0 +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.intMember = 0 -# ArmarX.ComponentConfigTest.subMember.subsubMember.stringDictMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.stringDictMember: # Attributes: # - Default: string1:blub,string2:duh # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.subsubMember.stringDictMember = string1:blub,string2:duh +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.stringDictMember = string1:blub,string2:duh -# ArmarX.ComponentConfigTest.subMember.subsubMember.stringListMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.stringListMember: # Attributes: # - Default: a, b, c, d, e # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.subsubMember.stringListMember = a, b, c, d, e +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.stringListMember = a, b, c, d, e -# ArmarX.ComponentConfigTest.subMember.subsubMember.stringMember: +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.stringMember: # Attributes: # - Default: "" # - Case sensitivity: yes # - Required: no -# ArmarX.ComponentConfigTest.subMember.subsubMember.stringMember = "" +# ArmarX.ComponentConfigTest.TestConfig.subMember.subsubMember.stringMember = "" # ArmarX.Config: Comma-separated list of configuration files diff --git a/source/RobotAPI/libraries/aron_component_config/ComponentPlugin.h b/source/RobotAPI/libraries/aron_component_config/ComponentPlugin.h index 288462223d51f039e7b38316c0e24a6f2037801f..08e496d77a9d28f09ade6599f692a89ec06cdbc4 100644 --- a/source/RobotAPI/libraries/aron_component_config/ComponentPlugin.h +++ b/source/RobotAPI/libraries/aron_component_config/ComponentPlugin.h @@ -50,7 +50,7 @@ namespace armarx::plugins { ARMARX_TRACE; armarx::aron::component_config::PropertyDefinitionGetterVisitor vis( - parent<armarx::PropertyUser>()); + parent<armarx::PropertyUser>(), prefix()); auto data = std::static_pointer_cast<armarx::aron::data::Variant>( config_.getUpToDateReadBuffer().toAron()); auto type = config_.getUpToDateReadBuffer().ToAronType(); @@ -65,7 +65,7 @@ namespace armarx::plugins postCreatePropertyDefinitions(armarx::PropertyDefinitionsPtr& properties) override { ARMARX_TRACE; - armarx::aron::component_config::PropertyDefinitionSetterVisitor vis(properties); + armarx::aron::component_config::PropertyDefinitionSetterVisitor vis(properties, prefix()); const auto& config = config_.getUpToDateReadBuffer(); armarx::aron::data::visitRecursive(vis, config.toAron(), config.ToAronType()); ComponentPlugin::postCreatePropertyDefinitions(properties); diff --git a/source/RobotAPI/libraries/aron_component_config/PropertyDefinitionVisitors.cpp b/source/RobotAPI/libraries/aron_component_config/PropertyDefinitionVisitors.cpp index ee7d67c73021d5f72b5e3e266d24938b092fea0e..03b4c0f270a1b552034022b4fed16b341085be0f 100644 --- a/source/RobotAPI/libraries/aron_component_config/PropertyDefinitionVisitors.cpp +++ b/source/RobotAPI/libraries/aron_component_config/PropertyDefinitionVisitors.cpp @@ -157,8 +157,8 @@ namespace armarx::aron::component_config } PropertyDefinitionGetterVisitor::PropertyDefinitionGetterVisitor( - const armarx::PropertyUser& defs) : - property_user_(std::experimental::make_observer(&defs)), in_list_(false) + const armarx::PropertyUser& defs, const std::string& global_namespace): + property_user_(std::experimental::make_observer(&defs)), global_namespace_(global_namespace), in_list_(false) { } @@ -246,16 +246,16 @@ namespace armarx::aron::component_config const std::shared_ptr<type::Variant>& j) { INPUT_GUARD(i); - auto t = type::Object::DynamicCastAndCheck(j); if (global_namespace_.empty()) { + auto t = type::Object::DynamicCastAndCheck(j); global_namespace_ = t->getObjectNameWithoutNamespace() + "."; } } PropertyDefinitionSetterVisitor::PropertyDefinitionSetterVisitor( - const PropertyDefinitionsPtr& defs) : - property_definitions_(std::experimental::make_observer(defs.get())) + const PropertyDefinitionsPtr& defs, const std::string& global_namespace) : + property_definitions_(std::experimental::make_observer(defs.get())), global_namespace_(global_namespace) { } diff --git a/source/RobotAPI/libraries/aron_component_config/PropertyDefinitionVisitors.h b/source/RobotAPI/libraries/aron_component_config/PropertyDefinitionVisitors.h index 3d48904146e5e7e5d01b90015df70d40db3a7b98..a9c1d5823bd8589acaea27b4f27928b4668ef853 100644 --- a/source/RobotAPI/libraries/aron_component_config/PropertyDefinitionVisitors.h +++ b/source/RobotAPI/libraries/aron_component_config/PropertyDefinitionVisitors.h @@ -34,7 +34,7 @@ namespace armarx::aron::component_config class PropertyDefinitionSetterVisitor : public aron::data::RecursiveConstTypedVariantVisitor { public: - explicit PropertyDefinitionSetterVisitor(const armarx::PropertyDefinitionsPtr& defs); + explicit PropertyDefinitionSetterVisitor(const armarx::PropertyDefinitionsPtr& defs, const std::string& global_namespace = ""); void visitAronVariant(const data::IntPtr&, const type::IntEnumPtr&) override; @@ -61,7 +61,7 @@ namespace armarx::aron::component_config private: std::experimental::observer_ptr<PropertyDefinitionContainer> property_definitions_; - std::string global_namespace_{""}; + std::string global_namespace_; std::atomic<bool> in_list_{false}; }; @@ -69,7 +69,7 @@ namespace armarx::aron::component_config public aron::data::RecursiveTypedVisitor<data::VariantPtr, const type::VariantPtr> { public: - explicit PropertyDefinitionGetterVisitor(const armarx::PropertyUser& defs); + explicit PropertyDefinitionGetterVisitor(const armarx::PropertyUser& defs, const std::string& global_namespace = ""); type::Descriptor getDescriptor(DataInput& o, TypeInput& t) override; @@ -109,7 +109,7 @@ namespace armarx::aron::component_config private: std::experimental::observer_ptr<const armarx::PropertyUser> property_user_; - std::string global_namespace_{""}; + std::string global_namespace_; std::atomic<bool> in_list_; };