1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #include <aws/lexv2-models/model/SlotValueElicitationSetting.h>
7 #include <aws/core/utils/json/JsonSerializer.h>
8 
9 #include <utility>
10 
11 using namespace Aws::Utils::Json;
12 using namespace Aws::Utils;
13 
14 namespace Aws
15 {
16 namespace LexModelsV2
17 {
18 namespace Model
19 {
20 
SlotValueElicitationSetting()21 SlotValueElicitationSetting::SlotValueElicitationSetting() :
22     m_defaultValueSpecificationHasBeenSet(false),
23     m_slotConstraint(SlotConstraint::NOT_SET),
24     m_slotConstraintHasBeenSet(false),
25     m_promptSpecificationHasBeenSet(false),
26     m_sampleUtterancesHasBeenSet(false),
27     m_waitAndContinueSpecificationHasBeenSet(false)
28 {
29 }
30 
SlotValueElicitationSetting(JsonView jsonValue)31 SlotValueElicitationSetting::SlotValueElicitationSetting(JsonView jsonValue) :
32     m_defaultValueSpecificationHasBeenSet(false),
33     m_slotConstraint(SlotConstraint::NOT_SET),
34     m_slotConstraintHasBeenSet(false),
35     m_promptSpecificationHasBeenSet(false),
36     m_sampleUtterancesHasBeenSet(false),
37     m_waitAndContinueSpecificationHasBeenSet(false)
38 {
39   *this = jsonValue;
40 }
41 
operator =(JsonView jsonValue)42 SlotValueElicitationSetting& SlotValueElicitationSetting::operator =(JsonView jsonValue)
43 {
44   if(jsonValue.ValueExists("defaultValueSpecification"))
45   {
46     m_defaultValueSpecification = jsonValue.GetObject("defaultValueSpecification");
47 
48     m_defaultValueSpecificationHasBeenSet = true;
49   }
50 
51   if(jsonValue.ValueExists("slotConstraint"))
52   {
53     m_slotConstraint = SlotConstraintMapper::GetSlotConstraintForName(jsonValue.GetString("slotConstraint"));
54 
55     m_slotConstraintHasBeenSet = true;
56   }
57 
58   if(jsonValue.ValueExists("promptSpecification"))
59   {
60     m_promptSpecification = jsonValue.GetObject("promptSpecification");
61 
62     m_promptSpecificationHasBeenSet = true;
63   }
64 
65   if(jsonValue.ValueExists("sampleUtterances"))
66   {
67     Array<JsonView> sampleUtterancesJsonList = jsonValue.GetArray("sampleUtterances");
68     for(unsigned sampleUtterancesIndex = 0; sampleUtterancesIndex < sampleUtterancesJsonList.GetLength(); ++sampleUtterancesIndex)
69     {
70       m_sampleUtterances.push_back(sampleUtterancesJsonList[sampleUtterancesIndex].AsObject());
71     }
72     m_sampleUtterancesHasBeenSet = true;
73   }
74 
75   if(jsonValue.ValueExists("waitAndContinueSpecification"))
76   {
77     m_waitAndContinueSpecification = jsonValue.GetObject("waitAndContinueSpecification");
78 
79     m_waitAndContinueSpecificationHasBeenSet = true;
80   }
81 
82   return *this;
83 }
84 
Jsonize() const85 JsonValue SlotValueElicitationSetting::Jsonize() const
86 {
87   JsonValue payload;
88 
89   if(m_defaultValueSpecificationHasBeenSet)
90   {
91    payload.WithObject("defaultValueSpecification", m_defaultValueSpecification.Jsonize());
92 
93   }
94 
95   if(m_slotConstraintHasBeenSet)
96   {
97    payload.WithString("slotConstraint", SlotConstraintMapper::GetNameForSlotConstraint(m_slotConstraint));
98   }
99 
100   if(m_promptSpecificationHasBeenSet)
101   {
102    payload.WithObject("promptSpecification", m_promptSpecification.Jsonize());
103 
104   }
105 
106   if(m_sampleUtterancesHasBeenSet)
107   {
108    Array<JsonValue> sampleUtterancesJsonList(m_sampleUtterances.size());
109    for(unsigned sampleUtterancesIndex = 0; sampleUtterancesIndex < sampleUtterancesJsonList.GetLength(); ++sampleUtterancesIndex)
110    {
111      sampleUtterancesJsonList[sampleUtterancesIndex].AsObject(m_sampleUtterances[sampleUtterancesIndex].Jsonize());
112    }
113    payload.WithArray("sampleUtterances", std::move(sampleUtterancesJsonList));
114 
115   }
116 
117   if(m_waitAndContinueSpecificationHasBeenSet)
118   {
119    payload.WithObject("waitAndContinueSpecification", m_waitAndContinueSpecification.Jsonize());
120 
121   }
122 
123   return payload;
124 }
125 
126 } // namespace Model
127 } // namespace LexModelsV2
128 } // namespace Aws
129