replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / service / simulator / ramlparser / raml / model / Raml.h
index c3c537c..482919b 100755 (executable)
@@ -8,7 +8,7 @@
  * you may not use this file except in compliance with the License.\r
  * You may obtain a copy of the License at\r
  *\r
- *             http://www.apache.org/licenses/LICENSE-2.0\r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
  *\r
  * Unless required by applicable law or agreed to in writing, software\r
  * distributed under the License is distributed on an "AS IS" BASIS,\r
  *\r
  ******************************************************************/\r
 \r
+/**\r
+ * @file   Raml.h\r
+ *\r
+ * @brief   This file provides data Model for RAML file.\r
+ */\r
+\r
 #ifndef RAML_H\r
 #define RAML_H\r
 \r
 \r
 #include "DocumentationItem.h"\r
 #include "yaml-cpp/yaml.h"\r
-#include "Utils.h"\r
+#include "yaml-cpp/exceptions.h"\r
+#include "RamlExceptions.h"\r
+#include "RamlUtils.h"\r
+#if defined (__TIZENRT__)\r
+#include <apps/netutils/cJSON.h>\r
+#else\r
 #include "cJSON.h"\r
+#endif\r
 \r
 \r
 namespace RAML\r
 {\r
+    /**\r
+     * @class   Raml\r
+     * @brief   This class provides data Model for RAML file.\r
+     */\r
     class Raml\r
     {\r
         public:\r
+            /**\r
+                 * This method is for getting Title from Raml.\r
+                 *\r
+                 * @return Title as string.\r
+                 */\r
             virtual std::string getTitle() const;\r
+\r
+            /**\r
+                 * This method is for setting Title to Raml.\r
+                 *\r
+                 * @param title - Title as string\r
+                 */\r
             virtual void setTitle(const std::string &title);\r
 \r
+            /**\r
+                 * This method is for getting Version from Raml.\r
+                 *\r
+                 * @return Version as string.\r
+                 */\r
             virtual std::string getVersion() const;\r
+\r
+            /**\r
+                 * This method is for setting Version to Raml.\r
+                 *\r
+                 * @param version - Version as string\r
+                 */\r
             virtual void setVersion(const std::string &version);\r
 \r
+            /**\r
+                 * This method is for getting BaseUri from Raml.\r
+                 *\r
+                 * @return BaseUri as string.\r
+                 */\r
             virtual std::string getBaseUri() const;\r
+\r
+            /**\r
+                 * This method is for setting BaseUri to Raml.\r
+                 *\r
+                 * @param baseUri - BaseUri as string\r
+                 */\r
             virtual void setBaseUri(const std::string &baseUri);\r
 \r
-            virtual std::list<std::string> getProtocols() const;\r
+            /**\r
+                 * This method is for getting Protocols from Raml.\r
+                 *\r
+                 * @return list of Protocols as string.\r
+                 */\r
+            virtual std::list<std::string> const &getProtocols() const;\r
+\r
+            /**\r
+                 * This method is for setting Protocols to Raml.\r
+                 *\r
+                 * @param protocol - Protocol as string\r
+                 */\r
             virtual void setProtocol(const std::string &protocol);\r
 \r
 \r
-            virtual std::map<std::string, UriParameter> getBaseUriParameters() const;\r
-            virtual void setBaseUriParameter(const std::string &paramName, const UriParameter &uriParameter);\r
+            /**\r
+                 * This method is for getting BaseUriParameter from Raml.\r
+                 *\r
+                 * @return map of BaseUriParameter name and Pointer to UriParameter.\r
+                 */\r
+            virtual std::map<std::string, UriParameterPtr> const &getBaseUriParameters() const;\r
+\r
+            /**\r
+                 * This method is for setting BaseUriParameter to Raml.\r
+                 *\r
+                 * @param paramName - name of BaseUriParameter as string\r
+                 * @param uriParameter - pointer to UriParameter\r
+                 */\r
+            virtual void setBaseUriParameter(const std::string &paramName,\r
+                                             const UriParameterPtr &uriParameter);\r
+\r
 \r
+            /**\r
+                 * This method is for getting MediaType from Raml.\r
+                 *\r
+                 * @return Title as string.\r
+                 */\r
             virtual std::string getMediaType() const;\r
+\r
+            /**\r
+                 * This method is for setting MediaType to Raml.\r
+                 *\r
+                 * @param mediaType - MediaType as string\r
+                 */\r
             virtual void setMediaType(const std::string &mediaType);\r
 \r
-            virtual std::list<std::pair<std::string, Schema> > getSchemas() const;\r
-            virtual void setSchema(const std::pair<std::string, Schema> &schema);\r
+            /**\r
+                 * This method is for getting Schemas from Raml.\r
+                 *\r
+                 * @return list of Schemas name and Pointer to Schema as pair.\r
+                 */\r
+            virtual std::list<std::pair<std::string, SchemaPtr> > const &getSchemas() const;\r
+\r
+            /**\r
+                 * This method is for setting Schemas to Raml.\r
+                 *\r
+                 * @param schemaName - name of schema as string\r
+                 * @param schema - pointer to Schema\r
+                 */\r
+            virtual void setSchema(const std::string &schemaName, const SchemaPtr &schema);\r
+\r
+            /**\r
+                 * This method is for getting ResourceTypes from Raml.\r
+                 *\r
+                 * @return list of ResourceTypes name and Pointer to RamlResource as pair.\r
+                 */\r
+            virtual std::list<std::pair<std::string, RamlResourcePtr> > const &getResourceTypes() const;\r
+\r
+            /**\r
+                 * This method is for setting ResourceTypes to Raml.\r
+                 *\r
+                 * @param typeName - name of ResourceType as string\r
+                 * @param resourceType - pointer to RamlResource\r
+                 */\r
+            virtual void setResourceType(const std::string &typeName,\r
+                                         const RamlResourcePtr &resourceType);\r
+\r
+            /**\r
+                 * This method is for getting Traits from Raml.\r
+                 *\r
+                 * @return list of Traits name and Pointer to Action as pair.\r
+                 */\r
+            virtual std::list<std::pair<std::string, ActionPtr> > const &getTraits() const;\r
 \r
-            virtual std::list<std::pair<std::string, RamlResource> > getResourceTypes() const;\r
-            virtual void setResourceType(const std::pair<std::string, RamlResource> &resourceType);\r
+            /**\r
+                 * This method is for setting Traits to Raml.\r
+                 *\r
+                 * @param traitName - name of Trait as string\r
+                 * @param trait - pointer to Action\r
+                 */\r
+            virtual void setTrait(const std::string &traitName, const ActionPtr &trait);\r
 \r
-            virtual std::list<std::pair<std::string, Action> > getTraits() const;\r
-            virtual void setTrait(const std::pair<std::string, Action> &trait);\r
+            /**\r
+                 * This method is for getting Resource from Raml.\r
+                 *\r
+                 * @param resourceName - name of Resource as string\r
+                 *\r
+                 * @return Pointer to Resource\r
+                 */\r
+            virtual RamlResourcePtr getResource(const std::string &resourceName);\r
 \r
-            virtual RamlResource &getResource(std::string resourceName);\r
-            virtual std::map<std::string, RamlResource> getResources() const;\r
-            virtual void setResource(const std::string &resourceKey, const RamlResource &resource);\r
+            /**\r
+                 * This method is for getting Resource from Raml.\r
+                 *\r
+                 * @return map of Resource name and Pointer to Resource\r
+                 */\r
+            virtual std::map<std::string, RamlResourcePtr> const &getResources() const;\r
 \r
-            virtual void setDocumentationItem(const DocumentationItem &documentationItem);\r
-            virtual std::list<DocumentationItem> getDocumentation() const;\r
+            /**\r
+                 * This method is for setting Resource to Raml.\r
+                 *\r
+                 * @param resourceKey - name of Resource as string\r
+                 * @param resource - pointer to Resource\r
+                 */\r
+            virtual void setResource(const std::string &resourceKey,\r
+                                     const RamlResourcePtr &resource);\r
 \r
+            /**\r
+                 * This method is for setting DocumentationItem to Raml.\r
+                 *\r
+                 * @param documentationItem - pointer to DocumentationItem\r
+                 */\r
+            virtual void setDocumentationItem(const std::shared_ptr<DocumentationItem> &documentationItem);\r
+\r
+            /**\r
+                 * This method is for getting DocumentationItem from Raml.\r
+                 *\r
+                 * @return list of DocumentationItem\r
+                 */\r
+            virtual std::list<std::shared_ptr<DocumentationItem> > const &getDocumentation() const;\r
+\r
+            /**\r
+                 * This method is for setting Raml object reading from Yaml nodes\r
+                 *\r
+                 * @param yamlNode - Reference to YamlNode for reading into Raml object\r
+                 */\r
             void readRamlFromYaml(const YAML::Node &yamlNode);\r
-            Raml() : m_includeResolver(new IncludeResolver()) {}\r
-            Raml(std::string &resourceLocation) : m_includeResolver(new IncludeResolver(resourceLocation)) {}\r
+\r
+            /**\r
+                  * Constructor of Raml.\r
+                  */\r
+            Raml() : m_includeResolver(std::make_shared<IncludeResolver>()) {}\r
+\r
+            /**\r
+                   * Constructor of Raml.\r
+                   *\r
+                   * @param fileLocation - RAML configuration file path.\r
+                   * @param ramlName - RAML configuration file Name\r
+                   *\r
+                   *  NOTE: Constructor would throw RamlException if any error occured.\r
+                   */\r
+            Raml(const std::string &fileLocation, const std::string &ramlName)\r
+                : m_includeResolver(std::make_shared<IncludeResolver>(fileLocation))\r
+            {\r
+                try\r
+                {\r
+                    YAML::Node yamlRootNode = YAML::LoadFile(fileLocation + ramlName);\r
+                    readRamlFromYaml(yamlRootNode);\r
+                }\r
+                catch (YAML::ParserException &e)\r
+                {\r
+                    throw RamlParserException(e.mark, e.msg);\r
+                }\r
+                catch (YAML::RepresentationException &e)\r
+                {\r
+                    throw RamlRepresentationException(e.mark, e.msg);\r
+                }\r
+                catch (YAML::BadFile &e)\r
+                {\r
+                    throw RamlBadFile(e.mark, e.msg);\r
+                }\r
+                catch (JsonException &e)\r
+                {\r
+                    throw;\r
+                }\r
+            }\r
         private:\r
             std::string m_title;\r
             std::string m_version;\r
             std::string m_baseUri;\r
             std::list<std::string> m_protocols;\r
-            std::map<std::string, UriParameter> m_baseUriParameters;\r
+            std::map<std::string, UriParameterPtr> m_baseUriParameters;\r
             std::string m_mediaType;\r
-            std::list <std::pair<std::string, Schema> > m_schemas;\r
-            std::list <std::pair<std::string, RamlResource> > m_resourceTypes;\r
-            std::list <std::pair<std::string, Action> > m_traits;\r
-            std::map<std::string, RamlResource> m_resources;\r
-            std::list<DocumentationItem> m_documentation;\r
-            IncludeResolver *m_includeResolver;\r
+            std::list <std::pair<std::string, SchemaPtr> > m_schemas;\r
+            std::list <std::pair<std::string, RamlResourcePtr> > m_resourceTypes;\r
+            std::list <std::pair<std::string, ActionPtr> > m_traits;\r
+            std::map<std::string, RamlResourcePtr> m_resources;\r
+            std::list<std::shared_ptr<DocumentationItem> > m_documentation;\r
+            IncludeResolverPtr m_includeResolver;\r
     };\r
 \r
+    /** RamlPtr - shared Ptr to Raml.*/\r
     typedef std::shared_ptr<Raml> RamlPtr;\r
 \r
 }\r