From 6e9dedba75129b5ccf49595c87c8f8d1de431aa8 Mon Sep 17 00:00:00 2001 From: Amin Ya Date: Mon, 16 Jun 2025 02:50:36 -0700 Subject: [PATCH] [cpp-rest-sdk] fix enum values being used instead of names (#21223) * [cpp-rest-sdk] fix enum values being used instead of names * [cpp-rest-sdk] remove unnecessary prefix for enum classes * [cpprest-sdk]: use _XPLATSTR for string_t on Windows --- .../cpp-rest-sdk-client/model-header.mustache | 13 ++++---- .../cpp-rest-sdk-client/model-source.mustache | 10 +++---- .../CppRestPetstoreClient/model/Color.h | 30 +++++++++---------- .../CppRestPetstoreClient/model/Order.h | 7 ++--- .../include/CppRestPetstoreClient/model/Pet.h | 7 ++--- .../cpp-restsdk/client/src/model/Color.cpp | 20 ++++++------- .../cpp-restsdk/client/src/model/Order.cpp | 12 ++++---- .../cpp-restsdk/client/src/model/Pet.cpp | 12 ++++---- 8 files changed, 56 insertions(+), 55 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache index 0f9ec5bbc70..825b73a6432 100644 --- a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache @@ -123,7 +123,7 @@ public: /// {{.}} /// {{/enumDescription}} - {{classname}}_{{{name}}}{{^last}},{{/last}} + {{{name}}}{{^last}},{{/last}} {{/enumVars}} {{/allowableValues}} }; @@ -136,14 +136,14 @@ public: std::map enumToStrMap = { {{#allowableValues}} {{#enumVars}} - { e{{classname}}::{{classname}}_{{{name}}}, "{{{name}}}" }{{^-last}},{{/-last}} + { e{{classname}}::{{{name}}}, _XPLATSTR("{{{name}}}") }{{^-last}},{{/-last}} {{/enumVars}} {{/allowableValues}} }; std::map strToEnumMap = { {{#allowableValues}} {{#enumVars}} - { "{{{name}}}", e{{classname}}::{{classname}}_{{{name}}} }{{^-last}},{{/-last}} + { _XPLATSTR("{{{name}}}"), e{{classname}}::{{{name}}} }{{^-last}},{{/-last}} {{/enumVars}} {{/allowableValues}} }; @@ -185,8 +185,11 @@ public: {{#isEnum}} enum class {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}} { - {{#allowableValues}}{{#enumVars}}{{value}}, - {{/enumVars}}{{/allowableValues}} + {{#allowableValues}} + {{#enumVars}} + {{{name}}}{{^last}},{{/last}} + {{/enumVars}} + {{/allowableValues}} }; {{#description}} /// diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-source.mustache index f6aa3b51728..635cf43c39e 100644 --- a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-source.mustache @@ -72,7 +72,7 @@ using EnumUnderlyingType = {{#isNumeric}}int64_t{{/isNumeric}}{{^isNumeric}}util { {{#enumVars}} case {{value}}: - return {{classname}}::e{{classname}}::{{classname}}_{{name}}; + return {{classname}}::e{{classname}}::{{name}}; {{#-last}} default: break; @@ -83,7 +83,7 @@ using EnumUnderlyingType = {{#isNumeric}}int64_t{{/isNumeric}}{{^isNumeric}}util {{^isNumeric}} {{#enumVars}} if (val == utility::conversions::to_string_t(_XPLATSTR("{{{value}}}"))) - return {{classname}}::e{{classname}}::{{classname}}_{{name}}; + return {{classname}}::e{{classname}}::{{name}}; {{/enumVars}} {{/isNumeric}} {{/allowableValues}} @@ -96,7 +96,7 @@ EnumUnderlyingType fromEnum({{classname}}::e{{classname}} e) switch (e) { {{#enumVars}} - case {{classname}}::e{{classname}}::{{classname}}_{{name}}: + case {{classname}}::e{{classname}}::{{name}}: return {{#isNumeric}}{{value}}{{/isNumeric}}{{^isNumeric}}_XPLATSTR("{{value}}"){{/isNumeric}}; {{#-last}} default: @@ -354,7 +354,7 @@ bool {{classname}}::fromMultiPart(std::shared_ptr multipart, { {{#allowableValues}}{{#enumVars}} if (value == utility::conversions::to_string_t("{{value}}")) { - return {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}::{{value}}; + return {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}::{{name}}; } {{/enumVars}}{{/allowableValues}} throw std::invalid_argument("Invalid value for conversion to {{{datatypeWithEnum}}}"); @@ -369,7 +369,7 @@ const {{dataType}} {{classname}}::from{{{datatypeWithEnum}}}(const {{{datatypeWi switch(value) { {{#allowableValues}}{{#enumVars}} - case {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}::{{value}}: return utility::conversions::to_string_t("{{value}}"); + case {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}::{{name}}: return utility::conversions::to_string_t("{{value}}"); {{/enumVars}}{{/allowableValues}} } } diff --git a/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Color.h b/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Color.h index c2de795da8d..eab05514e41 100644 --- a/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Color.h +++ b/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Color.h @@ -54,11 +54,11 @@ public: enum class eColor { - Color_BLACK, - Color_WHITE, - Color_BROWN, - Color_GOLDEN, - Color_MIXED, + BLACK, + WHITE, + BROWN, + GOLDEN, + MIXED, }; eColor getValue() const; @@ -67,18 +67,18 @@ public: protected: eColor m_value; std::map enumToStrMap = { - { eColor::Color_BLACK, "BLACK" }, - { eColor::Color_WHITE, "WHITE" }, - { eColor::Color_BROWN, "BROWN" }, - { eColor::Color_GOLDEN, "GOLDEN" }, - { eColor::Color_MIXED, "MIXED" } + { eColor::BLACK, _XPLATSTR("BLACK") }, + { eColor::WHITE, _XPLATSTR("WHITE") }, + { eColor::BROWN, _XPLATSTR("BROWN") }, + { eColor::GOLDEN, _XPLATSTR("GOLDEN") }, + { eColor::MIXED, _XPLATSTR("MIXED") } }; std::map strToEnumMap = { - { "BLACK", eColor::Color_BLACK }, - { "WHITE", eColor::Color_WHITE }, - { "BROWN", eColor::Color_BROWN }, - { "GOLDEN", eColor::Color_GOLDEN }, - { "MIXED", eColor::Color_MIXED } + { _XPLATSTR("BLACK"), eColor::BLACK }, + { _XPLATSTR("WHITE"), eColor::WHITE }, + { _XPLATSTR("BROWN"), eColor::BROWN }, + { _XPLATSTR("GOLDEN"), eColor::GOLDEN }, + { _XPLATSTR("MIXED"), eColor::MIXED } }; }; diff --git a/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Order.h b/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Order.h index 6856bde86aa..c492144e17e 100644 --- a/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Order.h +++ b/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Order.h @@ -58,10 +58,9 @@ public: enum class StatusEnum { - placed, - approved, - delivered, - + PLACED, + APPROVED, + DELIVERED, }; /// /// Order Status diff --git a/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Pet.h b/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Pet.h index 92f25d7f2d7..0fe690d477c 100644 --- a/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Pet.h +++ b/samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Pet.h @@ -64,10 +64,9 @@ public: enum class StatusEnum { - available, - pending, - sold, - + AVAILABLE, + PENDING, + SOLD, }; /// /// pet status in the store diff --git a/samples/client/petstore/cpp-restsdk/client/src/model/Color.cpp b/samples/client/petstore/cpp-restsdk/client/src/model/Color.cpp index f8e6f781c96..8aff50ef5fc 100644 --- a/samples/client/petstore/cpp-restsdk/client/src/model/Color.cpp +++ b/samples/client/petstore/cpp-restsdk/client/src/model/Color.cpp @@ -25,15 +25,15 @@ using EnumUnderlyingType = utility::string_t; Color::eColor toEnum(const EnumUnderlyingType& val) { if (val == utility::conversions::to_string_t(_XPLATSTR("black"))) - return Color::eColor::Color_BLACK; + return Color::eColor::BLACK; if (val == utility::conversions::to_string_t(_XPLATSTR("white"))) - return Color::eColor::Color_WHITE; + return Color::eColor::WHITE; if (val == utility::conversions::to_string_t(_XPLATSTR("brown"))) - return Color::eColor::Color_BROWN; + return Color::eColor::BROWN; if (val == utility::conversions::to_string_t(_XPLATSTR("golden"))) - return Color::eColor::Color_GOLDEN; + return Color::eColor::GOLDEN; if (val == utility::conversions::to_string_t(_XPLATSTR("mixed"))) - return Color::eColor::Color_MIXED; + return Color::eColor::MIXED; return {}; } @@ -41,15 +41,15 @@ EnumUnderlyingType fromEnum(Color::eColor e) { switch (e) { - case Color::eColor::Color_BLACK: + case Color::eColor::BLACK: return _XPLATSTR("black"); - case Color::eColor::Color_WHITE: + case Color::eColor::WHITE: return _XPLATSTR("white"); - case Color::eColor::Color_BROWN: + case Color::eColor::BROWN: return _XPLATSTR("brown"); - case Color::eColor::Color_GOLDEN: + case Color::eColor::GOLDEN: return _XPLATSTR("golden"); - case Color::eColor::Color_MIXED: + case Color::eColor::MIXED: return _XPLATSTR("mixed"); default: break; diff --git a/samples/client/petstore/cpp-restsdk/client/src/model/Order.cpp b/samples/client/petstore/cpp-restsdk/client/src/model/Order.cpp index 318ffd19144..b0c167111d5 100644 --- a/samples/client/petstore/cpp-restsdk/client/src/model/Order.cpp +++ b/samples/client/petstore/cpp-restsdk/client/src/model/Order.cpp @@ -239,15 +239,15 @@ Order::StatusEnum Order::toStatusEnum(const utility::string_t& value) const { if (value == utility::conversions::to_string_t("placed")) { - return StatusEnum::placed; + return StatusEnum::PLACED; } if (value == utility::conversions::to_string_t("approved")) { - return StatusEnum::approved; + return StatusEnum::APPROVED; } if (value == utility::conversions::to_string_t("delivered")) { - return StatusEnum::delivered; + return StatusEnum::DELIVERED; } throw std::invalid_argument("Invalid value for conversion to StatusEnum"); @@ -259,11 +259,11 @@ const utility::string_t Order::fromStatusEnum(const StatusEnum value) const switch(value) { - case StatusEnum::placed: return utility::conversions::to_string_t("placed"); + case StatusEnum::PLACED: return utility::conversions::to_string_t("placed"); - case StatusEnum::approved: return utility::conversions::to_string_t("approved"); + case StatusEnum::APPROVED: return utility::conversions::to_string_t("approved"); - case StatusEnum::delivered: return utility::conversions::to_string_t("delivered"); + case StatusEnum::DELIVERED: return utility::conversions::to_string_t("delivered"); } } diff --git a/samples/client/petstore/cpp-restsdk/client/src/model/Pet.cpp b/samples/client/petstore/cpp-restsdk/client/src/model/Pet.cpp index 114e12306d4..388f6f7f867 100644 --- a/samples/client/petstore/cpp-restsdk/client/src/model/Pet.cpp +++ b/samples/client/petstore/cpp-restsdk/client/src/model/Pet.cpp @@ -263,15 +263,15 @@ Pet::StatusEnum Pet::toStatusEnum(const utility::string_t& value) const { if (value == utility::conversions::to_string_t("available")) { - return StatusEnum::available; + return StatusEnum::AVAILABLE; } if (value == utility::conversions::to_string_t("pending")) { - return StatusEnum::pending; + return StatusEnum::PENDING; } if (value == utility::conversions::to_string_t("sold")) { - return StatusEnum::sold; + return StatusEnum::SOLD; } throw std::invalid_argument("Invalid value for conversion to StatusEnum"); @@ -283,11 +283,11 @@ const utility::string_t Pet::fromStatusEnum(const StatusEnum value) const switch(value) { - case StatusEnum::available: return utility::conversions::to_string_t("available"); + case StatusEnum::AVAILABLE: return utility::conversions::to_string_t("available"); - case StatusEnum::pending: return utility::conversions::to_string_t("pending"); + case StatusEnum::PENDING: return utility::conversions::to_string_t("pending"); - case StatusEnum::sold: return utility::conversions::to_string_t("sold"); + case StatusEnum::SOLD: return utility::conversions::to_string_t("sold"); } }