[cpp-restsdk] store Object as a shared pointer (#21349)

* [cpp-restsdk] store Object as a shared pointer

* [cpp-restsdk] add test for object property
This commit is contained in:
Amin Ya 2025-06-09 23:53:55 -07:00 committed by GitHub
parent fa64c8e012
commit 12fa2c0032
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 62 additions and 0 deletions

View File

@ -387,6 +387,8 @@ public class CppRestSdkClientCodegen extends AbstractCppCodegen {
|| ModelUtils.isFileSchema(p) || ModelUtils.isUUIDSchema(p)
|| languageSpecificPrimitives.contains(openAPIType)) {
return toModelName(openAPIType);
} else if (ModelUtils.isObjectSchema(p)) {
return "std::shared_ptr<Object>";
} else if(typeMapping.containsKey(super.getSchemaType(p))) {
return openAPIType;
}

View File

@ -798,6 +798,8 @@ components:
- available
- pending
- sold
metadata:
type: object
xml:
name: Pet
Color:

View File

@ -27,6 +27,7 @@
#include "CppRestPetstoreClient/model/Tag.h"
#include "CppRestPetstoreClient/model/Category.h"
#include <cpprest/details/basic_types.h>
#include "CppRestPetstoreClient/Object.h"
#include "CppRestPetstoreClient/model/Pet.h"
#include <vector>

View File

@ -25,6 +25,7 @@
#include "CppRestPetstoreClient/model/Tag.h"
#include "CppRestPetstoreClient/model/Category.h"
#include <cpprest/details/basic_types.h>
#include "CppRestPetstoreClient/Object.h"
#include <vector>
namespace org {
@ -109,6 +110,11 @@ public:
void unsetStatus();
void setStatus(const StatusEnum value);
std::shared_ptr<Object> getMetadata() const;
bool metadataIsSet() const;
void unsetMetadata();
void setMetadata(const std::shared_ptr<Object>& value);
protected:
int64_t m_Id;
@ -129,6 +135,9 @@ protected:
StatusEnum m_Status;
bool m_StatusIsSet;
std::shared_ptr<Object> m_Metadata;
bool m_MetadataIsSet;
};

View File

@ -28,6 +28,7 @@ Pet::Pet()
m_PhotoUrlsIsSet = false;
m_TagsIsSet = false;
m_StatusIsSet = false;
m_MetadataIsSet = false;
}
Pet::~Pet()
@ -74,6 +75,11 @@ web::json::value Pet::toJson() const
val[utility::conversions::to_string_t(_XPLATSTR("status"))] = ModelBase::toJson(refVal);
}
if(m_MetadataIsSet)
{
val[utility::conversions::to_string_t(_XPLATSTR("metadata"))] = ModelBase::toJson(m_Metadata);
}
return val;
}
@ -148,6 +154,17 @@ bool Pet::fromJson(const web::json::value& val)
}
}
if(val.has_field(utility::conversions::to_string_t(_XPLATSTR("metadata"))))
{
const web::json::value& fieldValue = val.at(utility::conversions::to_string_t(_XPLATSTR("metadata")));
if(!fieldValue.is_null())
{
std::shared_ptr<Object> refVal_setMetadata;
ok &= ModelBase::fromJson(fieldValue, refVal_setMetadata);
setMetadata(refVal_setMetadata);
}
}
return ok;
}
@ -182,6 +199,10 @@ void Pet::toMultipart(std::shared_ptr<MultipartFormData> multipart, const utilit
{
multipart->add(ModelBase::toHttpContent(namePrefix + utility::conversions::to_string_t(_XPLATSTR("status")), fromStatusEnum(m_Status)));
}
if(m_MetadataIsSet)
{
multipart->add(ModelBase::toHttpContent(namePrefix + utility::conversions::to_string_t(_XPLATSTR("metadata")), m_Metadata));
}
}
bool Pet::fromMultiPart(std::shared_ptr<MultipartFormData> multipart, const utility::string_t& prefix)
@ -229,6 +250,12 @@ bool Pet::fromMultiPart(std::shared_ptr<MultipartFormData> multipart, const util
ok &= ModelBase::fromHttpContent(multipart->getContent(utility::conversions::to_string_t(_XPLATSTR("status"))), refVal_setStatus );
setStatus(toStatusEnum(refVal_setStatus));
}
if(multipart->hasContent(utility::conversions::to_string_t(_XPLATSTR("metadata"))))
{
std::shared_ptr<Object> refVal_setMetadata;
ok &= ModelBase::fromHttpContent(multipart->getContent(utility::conversions::to_string_t(_XPLATSTR("metadata"))), refVal_setMetadata );
setMetadata(refVal_setMetadata);
}
return ok;
}
@ -391,6 +418,27 @@ void Pet::unsetStatus()
{
m_StatusIsSet = false;
}
std::shared_ptr<Object> Pet::getMetadata() const
{
return m_Metadata;
}
void Pet::setMetadata(const std::shared_ptr<Object>& value)
{
m_Metadata = value;
m_MetadataIsSet = true;
}
bool Pet::metadataIsSet() const
{
return m_MetadataIsSet;
}
void Pet::unsetMetadata()
{
m_MetadataIsSet = false;
}
}
}