@@ -175,14 +175,14 @@ void {{classname}}::setValue({{classname}}::e{{classname}} const value)
175175}
176176
177177{ {/isEnum} }
178-
179178{ {^isEnum} }
180179
181180{ {classname} }::{ {classname} }()
182181{
183182 {{#vars} }
184183 { {^isInherited} }
185184 { {^isContainer} }
185+ { {^isEnum} }
186186 { {#isPrimitiveType} }
187187 m_{ {name} } = { {{defaultValue} }};
188188 { {/isPrimitiveType} }
@@ -194,6 +194,7 @@ void {{classname}}::setValue({{classname}}::e{{classname}} const value)
194194 m_{ {name} } = { {{defaultValue} }};
195195 { {/isDateTime} }
196196 { {/isPrimitiveType} }
197+ { {/isEnum} }
197198 { {/isContainer} }
198199 m_{ {name} }IsSet = false;
199200 { {/isInherited} }
@@ -212,15 +213,27 @@ void {{classname}}::validate()
212213web::json::value { {classname} }::toJson() const
213214{
214215 {{#parent} }
215- web::json::value val = this->{ {{.} }}::toJson();{ {/parent} }
216+ web::json::value val = this->{ {{.} }}::toJson();
217+ { {/parent} }
216218 { {^parent} }
217219 web::json::value val = web::json::value::object();
218220 { {/parent} }
219221 { {#vars} }{ {^isInherited} }
220222 if(m_{ {name} }IsSet)
221- {
223+ {
224+ {{#isEnum} }{ {#isContainer} }{ {#isArray} }
225+ { {{dataType} }} refVal = from{ {{enumName} }}(m_{ {name} });
226+ { {/isArray} }{ {#isMap} }
222227 val[utility::conversions::to_string_t(U("{ {baseName} }"))] = ModelBase::toJson(m_{ {name} });
223- }{ {/isInherited} }{ {/vars} }
228+ { {/isMap} }{ {/isContainer} }{ {^isContainer} }
229+ utility::string_t refVal = from{ {{datatypeWithEnum} }}(m_{ {name} });
230+ { {/isContainer} }{ {^isMap} }val[utility::conversions::to_string_t(U("{ {baseName} }"))] = ModelBase::toJson(refVal);
231+ { {/isMap} }{ {/isEnum} }
232+ { {^isEnum} }
233+ val[utility::conversions::to_string_t(U("{ {baseName} }"))] = ModelBase::toJson(m_{ {name} });
234+ { {/isEnum} }
235+ }
236+ { {/isInherited} }{ {/vars} }
224237
225238 return val;
226239}
@@ -239,7 +252,16 @@ bool {{classname}}::fromJson(const web::json::value& val)
239252 {
240253 {{{dataType} }} refVal_{ {setter} };
241254 ok & = ModelBase::fromJson(fieldValue, refVal_{ {setter} });
255+ { {^isEnum} }
256+ { {setter} }(refVal_{ {setter} });
257+ { {/isEnum} }
258+ { {#isEnum} }{ {#isContainer} }{ {#isArray} }
259+ { {setter} }(to{ {{enumName} }}(refVal_{ {setter} }));
260+ { {/isArray} }{ {#isMap} }
242261 { {setter} }(refVal_{ {setter} });
262+ { {/isMap} }{ {/isContainer} }{ {^isContainer} }
263+ { {setter} }(to{ {{datatypeWithEnum} }}(refVal_{ {setter} }));
264+ { {/isContainer} }{ {/isEnum} }
243265 }
244266 }{ {/isInherited} }{ {/vars} }
245267 return ok;
@@ -255,7 +277,16 @@ void {{classname}}::toMultipart(std::shared_ptr<MultipartFormData> multipart, co
255277 { {#vars} }
256278 if(m_{ {name} }IsSet)
257279 {
280+ {{^isEnum} }
258281 multipart->add(ModelBase::toHttpContent(namePrefix + utility::conversions::to_string_t(U("{ {baseName} }")), m_{ {name} }));
282+ { {/isEnum} }
283+ { {#isEnum} }{ {#isContainer} }{ {#isArray} }
284+ multipart->add(ModelBase::toHttpContent(namePrefix + utility::conversions::to_string_t(U("{ {baseName} }")), from{ {{enumName} }}(m_{ {name} })));
285+ { {/isArray} }{ {#isMap} }
286+ multipart->add(ModelBase::toHttpContent(namePrefix + utility::conversions::to_string_t(U("{ {baseName} }")), m_{ {name} }));
287+ { {/isMap} }{ {/isContainer} }{ {^isContainer} }
288+ multipart->add(ModelBase::toHttpContent(namePrefix + utility::conversions::to_string_t(U("{ {baseName} }")), from{ {{datatypeWithEnum} }}(m_{ {name} })));
289+ { {/isContainer} }{ {/isEnum} }
259290 }
260291 { {/vars} }
261292}
@@ -274,33 +305,93 @@ bool {{classname}}::fromMultiPart(std::shared_ptr<MultipartFormData> multipart,
274305 {
275306 {{{dataType} }} refVal_{ {setter} };
276307 ok & = ModelBase::fromHttpContent(multipart->getContent(utility::conversions::to_string_t(U("{ {baseName} }"))), refVal_{ {setter} } );
308+ { {^isEnum} }
309+ { {setter} }(refVal_{ {setter} });
310+ { {/isEnum} }
311+ { {#isEnum} }{ {#isContainer} }{ {#isArray} }
312+ { {setter} }(to{ {{enumName} }}(refVal_{ {setter} }));
313+ { {/isArray} }{ {#isMap} }
277314 { {setter} }(refVal_{ {setter} });
315+ { {/isMap} }{ {/isContainer} }{ {^isContainer} }
316+ { {setter} }(to{ {{datatypeWithEnum} }}(refVal_{ {setter} }));
317+ { {/isContainer} }{ {/isEnum} }
278318 }
279319 { {/vars} }
280320 return ok;
281321}
282322
283- { {#vars} }
284- { {^isInherited} }
323+ { {#vars} }{ {^isInherited} }{ {#isEnum} }{ {#isContainer} }
324+ { {classname} }::{ {{enumName} }} { {classname} }::to{ {{enumName} }}(const utility::string_t& value) const
325+ { {/isContainer} }{ {^isContainer} }
326+ { {classname} }::{ {{datatypeWithEnum} }} { {classname} }::to{ {{datatypeWithEnum} }}(const { {dataType} }& value) const
327+ { {/isContainer} }
328+ {
329+ {{#allowableValues} }{ {#enumVars} }
330+ if (value == utility::conversions::to_string_t("{ {value} }")) {
331+ return {{#isContainer} }{ {{enumName} }}{ {/isContainer} }{ {^isContainer} }{ {{datatypeWithEnum} }}{ {/isContainer} }::{ {value} };
332+ }
333+ { {/enumVars} }{ {/allowableValues} }
334+ throw std::invalid_argument("Invalid value for conversion to { {{datatypeWithEnum} }}");
335+ }
336+
285337{ {#isContainer} }
286- { {{dataType} }}& { {classname} }::{ {getter} }()
338+ const utility::string_t { {classname} }::from{ {{enumName} }}(const { {{enumName} }} value) const
339+ { {/isContainer} }{ {^isContainer} }
340+ const { {dataType} } { {classname} }::from{ {{datatypeWithEnum} }}(const { {{datatypeWithEnum} }} value) const
341+ { {/isContainer} }
342+ {
343+ switch (value)
344+ {
345+ {{#allowableValues} }{ {#enumVars} }
346+ case { {#isContainer} }{ {{enumName} }}{ {/isContainer} }{ {^isContainer} }{ {{datatypeWithEnum} }}{ {/isContainer} }::{ {value} }: return utility::conversions::to_string_t("{ {value} }");
347+ { {/enumVars} }{ {/allowableValues} }
348+ }
349+ }
350+
351+ { {#isContainer} }{ {#isArray} }
352+ { {{dataType} }} { {{classname} }}::from{ {{enumName} }}(const { {{datatypeWithEnum} }}& value) const
353+ {
354+ {{{dataType} }} ret;
355+ for (auto it = value.begin(); it != value.end(); it++) {
356+ ret.push_back(from{{{enumName} }}(*it));
357+ }
358+ return ret;
359+ }
360+
361+ { {{baseType} }}<{ {classname} }::{ {{enumName} }}> { {{classname} }}::to{ {{enumName} }}(const { {{dataType} }}& value) const
362+ {
363+ {{{datatypeWithEnum} }} ret;
364+ for (auto it = value.begin(); it != value.end(); it++) {
365+ ret.push_back(to{{{enumName} }}(*it));
366+ }
367+ return ret;
368+ }
369+ { {/isArray} }{ {/isContainer} }{ {/isEnum} }{ {/isInherited} }{ {/vars} }
370+
371+ { {#vars} }{ {^isInherited} }{ {#isContainer} }{ {^isEnum} }
372+ { {{dataType} }} { {classname} }::{ {getter} }() const
287373{
288374 return m_{{name} };
289375}
290- { {/isContainer} }
291- { {^isContainer} }
376+ { {/isEnum} }{ {/isContainer} }{ {^isContainer} }{ {^isEnum} }
292377{ {{dataType} }} { {classname} }::{ {getter} }() const
293378{
294379 return m_{{name} };
295380}
296- { {/isContainer} }
381+ { {/isEnum} }{ {/isContainer} }{ {#isEnum} }
382+ { {^isMap} }{ {#isArray} }{ {{baseType} }}<{ {/isArray} }{ {{classname} }}::{ {{enumName} }}{ {#isArray} }>{ {/isArray} }{ {/isMap} }{ {#isMap} }{ {{dataType} }}{ {/isMap} } { {classname} }::{ {getter} }() const
383+ {
384+ return m_{{name} };
385+ }
386+ { {/isEnum} }
297387
298388{ {#isPrimitiveType} }
299389void { {classname} }::{ {setter} }({ {{dataType} }} value)
300- { {/isPrimitiveType} }
301- { {^isPrimitiveType} }
390+ { {/isPrimitiveType} }{ {^isPrimitiveType} }{ {^isEnum} }
302391void { {classname} }::{ {setter} }(const { {{dataType} }}& value)
303- { {/isPrimitiveType} }
392+ { {/isEnum} }{ {/isPrimitiveType} }{ {#isEnum} }
393+ void { {classname} }::{ {setter} }(const { {^isMap} }{ {{datatypeWithEnum} }}{ {/isMap} }{ {#isMap} }{ {{dataType} }}{ {/isMap} } value)
394+ { {/isEnum} }
304395{
305396 m_{{name} } = value;
306397 m_{ {name} }IsSet = true;
@@ -315,8 +406,7 @@ void {{classname}}::unset{{name}}()
315406{
316407 m_{{name} }IsSet = false;
317408}
318- { {/isInherited} }
319- { {/vars} }
409+ { {/isInherited} }{ {/vars} }
320410{ {/isEnum} }
321411{ {/oneOf} }
322412{ {#modelNamespaceDeclarations} }
0 commit comments