File tree Expand file tree Collapse file tree
src/cpp/fastdds/xtypes/serializers/json Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -591,8 +591,13 @@ ReturnCode_t json_serialize_enum_member(
591591
592592 // Get value depending on the enclosing type
593593 assert (enum_type->get_kind () == TK_ENUM );
594- TypeKind enclosing_kind = traits<DynamicType>::narrow<DynamicTypeImpl>(enum_type->get_all_members_by_index ().at (
595- 0 )->get_descriptor ().type ())->get_kind (); // Unfortunately DynamicDataImpl::get_enclosing_typekind is private
594+ // TypeKind enclosing_kind = traits<DynamicType>::narrow<DynamicTypeImpl>(enum_type->get_all_members_by_index().at(
595+ // 0)->get_descriptor().type())->get_kind(); // Unfortunately DynamicDataImpl::get_enclosing_typekind is private
596+ auto enum_members = enum_type->get_all_members_by_index ();
597+ auto enum_desc = enum_members.at (0 )->get_descriptor ();
598+ auto enum_member_type = enum_desc.type ();
599+ auto enum_member_type_impl = traits<DynamicType>::narrow<DynamicTypeImpl>(enum_member_type);
600+ TypeKind enclosing_kind = enum_member_type_impl->get_kind ();
596601 nlohmann::json j_value;
597602 if (TK_INT8 == enclosing_kind)
598603 {
Original file line number Diff line number Diff line change @@ -687,7 +687,7 @@ ReturnCode_t json_deserialize_enum_member(
687687 // Get enclosing type kind to parse the value accordingly, and later user the appropriate setter
688688 assert (enum_type->get_kind () == TK_ENUM );
689689 TypeKind enclosing_kind = traits<DynamicType>::narrow<DynamicTypeImpl>(enum_type->get_all_members_by_index ().at (
690- 0 )->get_descriptor ().type ())->get_kind (); // Unfortunately DynamicDataImpl::get_enclosing_typekind is private
690+ 0 )->get_descriptor ().type ())->get_kind (); // Unfortunately DynamicDataImpl::get_enclosing_typekind is private
691691
692692 if (DynamicDataJsonFormat::OMG == format)
693693 {
@@ -782,10 +782,18 @@ ReturnCode_t json_deserialize_enum_member(
782782 {
783783 // Find value corresponding to name
784784
785+ // DynamicTypeMembersByName all_members;
786+ // if (RETCODE_OK !=
787+ // (ret =
788+ // traits<DynamicType>::narrow<DynamicTypeImpl>(enum_type)->get_all_members_by_name(all_members)))
789+ // {
790+ // EPROSIMA_LOG_ERROR(XTYPES_UTILS,
791+ // "Error encountered while deserializing TK_ENUM member from JSON: get_all_members_by_name failed.");
792+ // return ret;
793+ // }
794+
785795 DynamicTypeMembersByName all_members;
786- if (RETCODE_OK !=
787- (ret =
788- traits<DynamicType>::narrow<DynamicTypeImpl>(enum_type)->get_all_members_by_name (all_members)))
796+ if (RETCODE_OK != (ret = enum_type->get_all_members_by_name (all_members)))
789797 {
790798 EPROSIMA_LOG_ERROR (XTYPES_UTILS ,
791799 " Error encountered while deserializing TK_ENUM member from JSON: get_all_members_by_name failed." );
You can’t perform that action at this time.
0 commit comments