Adding JsonSchema parser implementation for simulator and Updating Raml Parser.
[platform/upstream/iotivity.git] / service / simulator / ramlparser / raml / model / Action.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 #ifndef ACTION_H\r
22 #define ACTION_H\r
23 \r
24 #include <map>\r
25 #include <list>\r
26 #include <string>\r
27 #include "ActionType.h"\r
28 #include "Header.h"\r
29 #include "QueryParameter.h"\r
30 #include "RequestResponseBody.h"\r
31 #include "UriParameter.h"\r
32 #include "Response.h"\r
33 #include "Utils.h"\r
34 #include "IncludeResolver.h"\r
35 \r
36 namespace RAML\r
37 {\r
38     class Action\r
39     {\r
40         public:\r
41             virtual ActionType getType() const;\r
42             virtual void setType(const ActionType &type);\r
43             virtual std::string getDescription() const;\r
44             virtual void setDescription(const std::string &description);\r
45             virtual std::map<std::string, HeaderPtr > const &getHeaders() const;\r
46             virtual void setHeader(const std::string &headerName, const HeaderPtr &header);\r
47             virtual std::map<std::string, QueryParameterPtr > const &getQueryParameters()const;\r
48             virtual void setQueryParameter(const std::string &paramName,\r
49                                            const QueryParameterPtr &queryParameter);\r
50 \r
51             virtual RequestResponseBodyPtr getRequestBody(const std::string &bodyType);\r
52             virtual std::map<std::string, RequestResponseBodyPtr> const &getRequestBody() const;\r
53             virtual void setRequestBody(const std::string &typeName);\r
54             virtual void setRequestBody(const std::string &typeName , const RequestResponseBodyPtr &body);\r
55 \r
56             virtual ResponsePtr getResponse(const std::string &responseCode);\r
57             virtual std::map<std::string, ResponsePtr> const &getResponses() const;\r
58             virtual void setResponse(const std::string &responseCode, const ResponsePtr &response);\r
59             virtual std::list<std::string> const &getProtocols() const;\r
60             virtual void setProtocol(const std::string &protocol);\r
61             virtual std::map< std::string, UriParameterPtr > const &getBaseUriParameters() const;\r
62             virtual void setBaseUriParameter(const std::string &paramName ,\r
63                                              const UriParameterPtr &baseUriParameter);\r
64             virtual std::list<std::string> const &getTraits() const;\r
65             virtual void setTrait(const std::string &trait);\r
66 \r
67 \r
68             Action(): m_includeResolver(NULL) { }\r
69             Action(const ActionType actionType, const YAML::Node &yamlNode,\r
70                    const IncludeResolverPtr &includeResolver)\r
71                 : m_includeResolver(includeResolver)\r
72             {\r
73                 readAction(actionType, yamlNode);\r
74             }\r
75             Action(const Action &action) = default;\r
76         private:\r
77             virtual void readAction(const ActionType actionType, const YAML::Node &yamlNode);\r
78 \r
79 \r
80         private:\r
81             ActionType m_type;\r
82             std::string m_description;\r
83             std::map<std::string, HeaderPtr> m_headers;\r
84             std::map<std::string, QueryParameterPtr> m_queryParameters;\r
85             std::map<std::string, RequestResponseBodyPtr> m_requestBody;\r
86             std::map<std::string, ResponsePtr> m_responses;\r
87             std::list<std::string> m_protocols;\r
88             std::map< std::string, UriParameterPtr > m_baseUriParameters;\r
89             std::list<std::string> m_trait;\r
90 \r
91         private:\r
92             IncludeResolverPtr m_includeResolver;\r
93     };\r
94 \r
95     typedef std::shared_ptr<Action> ActionPtr;\r
96 }\r
97 #endif\r