X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Fsimulator%2Framlparser%2Framl%2FjsonSchemaParser%2FJsonSchema.h;h=15490d1eb8159a3e15f4300c7e1e73ec0e58ff04;hb=c315c87e07c4080ecd0ef488e7a1047bc3c509b2;hp=fb300bae66630ee1c0014f76aea58364217e1111;hpb=6848338aebbe9c639e4e2bb01065e5ccff34092b;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/simulator/ramlparser/raml/jsonSchemaParser/JsonSchema.h b/service/simulator/ramlparser/raml/jsonSchemaParser/JsonSchema.h index fb300ba..15490d1 100755 --- a/service/simulator/ramlparser/raml/jsonSchemaParser/JsonSchema.h +++ b/service/simulator/ramlparser/raml/jsonSchemaParser/JsonSchema.h @@ -31,11 +31,12 @@ #include #include #include "Properties.h" -#include "Items.h" #include "Definitions.h" +#if defined (__TIZENRT__) +#include +#else #include "cJSON.h" -#include "Helpers.h" -#include "AllowedValues.h" +#endif #include #include "IncludeResolver.h" @@ -52,14 +53,15 @@ namespace RAML /** * Constructor of JsonSchema. */ - JsonSchema() : m_cjson(NULL), m_includeResolver(NULL) {} + JsonSchema() : m_additionalProperties(cJSON_True), m_cjson(NULL), m_includeResolver(NULL) {} /** * Constructor of JsonSchema. * * @param includeResolver - Reference to IncludeResolver for reading external files */ - JsonSchema(const IncludeResolverPtr &includeResolver) : m_cjson(NULL), + JsonSchema(const IncludeResolverPtr &includeResolver) : m_additionalProperties(cJSON_True), + m_cjson(NULL), m_includeResolver(includeResolver) {} /** @@ -68,7 +70,8 @@ namespace RAML * @param cjson - pointer to cjson * @param includeResolver - Reference to IncludeResolver for reading external files */ - JsonSchema(cJSON *cjson , const IncludeResolverPtr &includeResolver) : m_cjson(cjson), + JsonSchema(cJSON *cjson , const IncludeResolverPtr &includeResolver) : m_additionalProperties( + cJSON_True), m_cjson(cjson), m_includeResolver(includeResolver) { readJson(); } @@ -96,7 +99,7 @@ namespace RAML * * @return pointer to Properties */ - inline PropertiesPtr getProperty(const std::string &name) + PropertiesPtr getProperty(const std::string &name) { if (m_properties.end() != m_properties.find(name)) { @@ -110,7 +113,7 @@ namespace RAML * * @return map of Properties name and pointer to Properties */ - inline std::map const &getProperties() + std::map const &getProperties() { return m_properties; } @@ -120,7 +123,7 @@ namespace RAML * * @return map of Definitions name and pointer to Definitions */ - inline std::map const &getDefinitions() + std::map const &getDefinitions() { return m_definition; } @@ -252,45 +255,56 @@ namespace RAML return m_additionalProperties; } - /** - * This method is for setting Items to JsonSchema. - * - * @param item -pointer to Items - */ - void setItem(const ItemsPtr &item) - { - m_items.push_back(item); - } - - /** - * This method is for getting Items from JsonSchema. - * - * @return vector of Items - */ - std::vector const &getItems() + private: + class JsonParameters { - return m_items; - } + public: + std::map getProperties() const { return m_properties; } + void addProperties(const std::string &name, const PropertiesPtr &prop) { m_properties[name] = prop; } + void addProperties(const std::map &properties) + { + for (auto prop : properties) + m_properties[prop.first] = prop.second; + } + std::vector getRequired() const { return m_required; } + void addRequired(const std::string &req) { m_required.push_back(req); } + void addRequired(const std::vector &required) + { + for (auto req : required) + m_required.push_back(req); + } + std::string getType() const { return m_type; } + void setType(const std::string &type) + { + if (m_type.empty()) + m_type = type; + } + + private: + std::map m_properties; + std::vector m_required; + std::string m_type; + }; - private: void readJson(); DefinitionsPtr readDef(cJSON *childDefinitions, const std::string &defName); PropertiesPtr readProp(cJSON *childProperties, const std::string &attName ); - void readValues( cJSON *childProperties, PropertiesPtr property , + void readDefaultValue(cJSON *defaultValue, PropertiesPtr &property, const std::string &attType); + void readAllowedValues(cJSON *allowedvalues, PropertiesPtr &property, std::string &attType); + void readValues( cJSON *childProperties, PropertiesPtr &property , const std::string &attType); - void readString( cJSON *childProperties, PropertiesPtr property); - void readArray( cJSON *childProperties, PropertiesPtr property); - void readNumber( cJSON *childProperties, PropertiesPtr property); - DefinitionsPtr readRef(std::string m_ref); - - - void readJsonRef(cJSON *jsonReference); - void readDefRef(cJSON *defReference, DefinitionsPtr definition); - void readAllOf(cJSON *allofValues); - void readDefAllOf(cJSON *allofValues, DefinitionsPtr definition); - ItemsPtr readItems(cJSON *item); - void readItemRef(cJSON *itemReference, ItemsPtr item); - void readItemAllOf(cJSON *allofValues, ItemsPtr item); + void readString( cJSON *childProperties, PropertiesPtr &property); + void readInteger( cJSON *childProperties, PropertiesPtr &property); + void readDouble( cJSON *childProperties, PropertiesPtr &property); + void readArray( cJSON *childProperties, PropertiesPtr &property); + void readItems(cJSON *item, PropertiesPtr &property); + void readObject(cJSON *childProperties, PropertiesPtr &property); + + void readFile(std::string &fileName , JsonParameters ¶m); + void readFile(std::string &fileName , std::string &defName , JsonParameters ¶m); + void readRef(std::string ref , JsonParameters ¶m); + void readJsonRef(cJSON *jsonReference , JsonParameters ¶m); + void readAllOf(cJSON *allofValues , JsonParameters &allParams); private: std::map m_properties; @@ -303,8 +317,9 @@ namespace RAML std::string m_type; cJSON *m_cjson; std::vector m_required; - std::vector m_items; + PropertiesPtr m_property; IncludeResolverPtr m_includeResolver; + }; /** JsonSchemaPtr - shared Ptr to JsonSchema.*/