78aaee933c3c465a194182277387e4607c951b96
[platform/upstream/iotivity.git] / service / simulator / ramlparser / raml / model / RequestResponseBody.h
1 /******************************************************************\r
2  *\r
3  * Copyright 2015 Samsung Electronics All Rights Reserved.\r
4  *\r
5  *\r
6  *\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  *\r
19  ******************************************************************/\r
20 \r
21 /**\r
22  * @file   RequestResponseBody.h\r
23  *\r
24  * @brief   This file provides data Model for RAML RequestResponseBody.\r
25  */\r
26 \r
27 #ifndef REQUEST_RESPONSE_BODY_H\r
28 #define REQUEST_RESPONSE_BODY_H\r
29 \r
30 #include <map>\r
31 #include <list>\r
32 #include "FormParameter.h"\r
33 #include "Utils.h"\r
34 #include "IncludeResolver.h"\r
35 #include "Schema.h"\r
36 \r
37 namespace RAML\r
38 {\r
39     /**\r
40      * @class   RequestResponseBody\r
41      * @brief   This class provides data Model for RAML RequestResponseBody.\r
42      */\r
43     class RequestResponseBody\r
44     {\r
45         public:\r
46             /**\r
47                  * This method is for getting Type from RequestResponseBody.\r
48                  *\r
49                  * @return type as string.\r
50                  */\r
51             virtual std::string getType() const;\r
52 \r
53             /**\r
54                  * This method is for setting Type to RequestResponseBody.\r
55                  *\r
56                  * @param type - type of RequestResponseBody\r
57                  */\r
58             virtual void setType(const std::string &type);\r
59 \r
60             /**\r
61                  * This method is for getting Schema from RequestResponseBody.\r
62                  *\r
63                  * @return pointer to Schema.\r
64                  */\r
65             virtual SchemaPtr const &getSchema() const;\r
66 \r
67             /**\r
68                  * This method is for setting Schema to RequestResponseBody.\r
69                  *\r
70                  * @param schema - pointer to Schema\r
71                  */\r
72             virtual void setSchema(const SchemaPtr &schema);\r
73 \r
74             /**\r
75                  * This method is for getting Example from RequestResponseBody.\r
76                  *\r
77                  * @return Example as string.\r
78                  */\r
79             virtual std::string getExample() const;\r
80 \r
81             /**\r
82                  * This method is for setting Example to RequestResponseBody.\r
83                  *\r
84                  * @param example - Example as string\r
85                  */\r
86             virtual void setExample(const std::string &example);\r
87 \r
88             /**\r
89                  * This method is for getting FormParameter from RequestResponseBody.\r
90                  *\r
91                  * @return map of pointer to param Name and pointer to FormParameter.\r
92                  */\r
93             virtual std::map<std::string, FormParameterPtr> const &getFormParameters() const;\r
94 \r
95             /**\r
96                  * This method is for setting FormParameter to RequestResponseBody.\r
97                  *\r
98                  * @param paramName - Name of FormParameter\r
99                  * @param formParameter - pointer to FormParameter\r
100                  */\r
101             virtual void setFormParameter(const std::string &paramName,\r
102                                           const FormParameterPtr &formParameter);\r
103 \r
104             /**\r
105                   * Constructor of RequestResponseBody.\r
106                   */\r
107             RequestResponseBody(): m_schema(NULL), m_includeResolver(NULL) {}\r
108 \r
109             /**\r
110                    * Constructor of RequestResponseBody.\r
111                    *\r
112                    * @param type - type of request response body\r
113                    *\r
114                    */\r
115             RequestResponseBody(const std::string type) : m_type(type), m_schema(NULL),\r
116                 m_includeResolver(NULL) {}\r
117 \r
118             /**\r
119                    * Constructor of RequestResponseBody.\r
120                    *\r
121                    * @param type - type of request response body\r
122                    * @param yamlNode - Reference to YamlNode for reading the RequestResponseBody\r
123                    * @param includeResolver - Reference to IncludeResolver for reading external files\r
124                    *\r
125                    */\r
126             RequestResponseBody(const std::string type, const YAML::Node &yamlNode,\r
127                                 const IncludeResolverPtr &includeResolver): m_schema(NULL),\r
128                 m_includeResolver(includeResolver)\r
129             { readRequestResponseBody(type, yamlNode); }\r
130 \r
131         private:\r
132             virtual void readRequestResponseBody(const std::string &type,\r
133                                                  const YAML::Node &yamlNode) ;\r
134         private:\r
135             std::string m_type;\r
136             SchemaPtr m_schema;\r
137             std::string m_example;\r
138             std::map<std::string, FormParameterPtr> m_formParameters;\r
139             IncludeResolverPtr m_includeResolver;\r
140     };\r
141 \r
142     /** RequestResponseBodyPtr - shared Ptr to RequestResponseBody.*/\r
143     typedef std::shared_ptr<RequestResponseBody> RequestResponseBodyPtr;\r
144 }\r
145 #endif\r