* 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 ¶mName, 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 ¶mName,\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