The method types::decomposePropertyBag() did not retain the type of the PropertyBag returned by types::TypeInfo::decomposeType() for each individual property and therefore the subsequent composition did not recognize the original type. For example, the KDL typekit implements composition and decomposition using that method (in kdlTypekit.hpp:163 and motionproperties.cpp:380ff.). The fallback method of property decomposition implemented in types::propertyDecomposition() using getMember() is not affected by this issue and sets the type of the target bag correctly.
The updated test in RTT cannot easily cover this case, because no RTT core typekit implements the TemplateCompositionFactory interface.
The method
types::decomposePropertyBag()
did not retain the type of the PropertyBag returned bytypes::TypeInfo::decomposeType()
for each individual property and therefore the subsequent composition did not recognize the original type. For example, the KDL typekit implements composition and decomposition using that method (in kdlTypekit.hpp:163 and motionproperties.cpp:380ff.). The fallback method of property decomposition implemented intypes::propertyDecomposition()
usinggetMember()
is not affected by this issue and sets the type of the target bag correctly.The updated test in RTT cannot easily cover this case, because no RTT core typekit implements the TemplateCompositionFactory interface.