Every type gets additionalProperties set to "false" (#4424)

#4423
This commit is contained in:
schoetbi
2017-08-31 17:56:04 +02:00
committed by Wouter van Oortmerssen
parent d5b4db0692
commit bb736091f3
3 changed files with 29 additions and 18 deletions

View File

@@ -175,13 +175,14 @@ class JsonSchemaGenerator : public BaseGenerator {
} }
code_ += typeLine; code_ += typeLine;
} }
code_ += " },"; // close properties
std::vector<FieldDef *> requiredProperties; std::vector<FieldDef *> requiredProperties;
std::copy_if(properties.begin(), properties.end(), std::copy_if(properties.begin(), properties.end(),
back_inserter(requiredProperties), back_inserter(requiredProperties),
[](FieldDef const *prop) { return prop->required; }); [](FieldDef const *prop) { return prop->required; });
if (requiredProperties.size() > 0) { if (requiredProperties.size() > 0) {
code_ += " },"; // close properties std::string required_string(" \"required\" : [");
std::string required_string(" \"required\" : [ ");
for (auto req_prop = requiredProperties.cbegin(); for (auto req_prop = requiredProperties.cbegin();
req_prop != requiredProperties.cend(); req_prop != requiredProperties.cend();
++req_prop) { ++req_prop) {
@@ -190,12 +191,10 @@ class JsonSchemaGenerator : public BaseGenerator {
required_string.append(", "); required_string.append(", ");
} }
} }
required_string.append("]"); required_string.append("],");
code_ += required_string; code_ += required_string;
} else {
code_ += " }"; // close properties
} }
code_ += " \"additionalProperties\" : false";
std::string closeType(" }"); std::string closeType(" }");
if (*s != parser_.structs_.vec.back()) { if (*s != parser_.structs_.vec.back()) {
closeType.append(","); closeType.append(",");

Binary file not shown.

View File

@@ -16,42 +16,49 @@
"MyGame_OtherNameSpace_Unused" : { "MyGame_OtherNameSpace_Unused" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
} },
"additionalProperties" : false
}, },
"MyGame_OtherNameSpace_TableB" : { "MyGame_OtherNameSpace_TableB" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
"a" : { "$ref" : "#/definitions/TableA" } "a" : { "$ref" : "#/definitions/TableA" }
} },
"additionalProperties" : false
}, },
"TableA" : { "TableA" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
"b" : { "$ref" : "#/definitions/MyGame_OtherNameSpace_TableB" } "b" : { "$ref" : "#/definitions/MyGame_OtherNameSpace_TableB" }
} },
"additionalProperties" : false
}, },
"MyGame_InParentNamespace" : { "MyGame_InParentNamespace" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
} },
"additionalProperties" : false
}, },
"MyGame_Example2_Monster" : { "MyGame_Example2_Monster" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
} },
"additionalProperties" : false
}, },
"MyGame_Example_Test" : { "MyGame_Example_Test" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
"a" : { "type" : "number" }, "a" : { "type" : "number" },
"b" : { "type" : "number" } "b" : { "type" : "number" }
} },
"additionalProperties" : false
}, },
"MyGame_Example_TestSimpleTableWithEnum" : { "MyGame_Example_TestSimpleTableWithEnum" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
"color" : { "$ref" : "#/definitions/MyGame_Example_Color" } "color" : { "$ref" : "#/definitions/MyGame_Example_Color" }
} },
"additionalProperties" : false
}, },
"MyGame_Example_Vec3" : { "MyGame_Example_Vec3" : {
"type" : "object", "type" : "object",
@@ -62,14 +69,16 @@
"test1" : { "type" : "number" }, "test1" : { "type" : "number" },
"test2" : { "$ref" : "#/definitions/MyGame_Example_Color" }, "test2" : { "$ref" : "#/definitions/MyGame_Example_Color" },
"test3" : { "$ref" : "#/definitions/MyGame_Example_Test" } "test3" : { "$ref" : "#/definitions/MyGame_Example_Test" }
} },
"additionalProperties" : false
}, },
"MyGame_Example_Ability" : { "MyGame_Example_Ability" : {
"type" : "object", "type" : "object",
"properties" : { "properties" : {
"id" : { "type" : "number" }, "id" : { "type" : "number" },
"distance" : { "type" : "number" } "distance" : { "type" : "number" }
} },
"additionalProperties" : false
}, },
"MyGame_Example_Stat" : { "MyGame_Example_Stat" : {
"type" : "object", "type" : "object",
@@ -77,7 +86,8 @@
"id" : { "type" : "string" }, "id" : { "type" : "string" },
"val" : { "type" : "number" }, "val" : { "type" : "number" },
"count" : { "type" : "number" } "count" : { "type" : "number" }
} },
"additionalProperties" : false
}, },
"MyGame_Example_Monster" : { "MyGame_Example_Monster" : {
"type" : "object", "type" : "object",
@@ -119,7 +129,8 @@
"vector_of_doubles" : { "type" : "array", "items" : { "type" : "number" } }, "vector_of_doubles" : { "type" : "array", "items" : { "type" : "number" } },
"parent_namespace_test" : { "$ref" : "#/definitions/MyGame_InParentNamespace" } "parent_namespace_test" : { "$ref" : "#/definitions/MyGame_InParentNamespace" }
}, },
"required" : [ "name"] "required" : ["name"],
"additionalProperties" : false
}, },
"MyGame_Example_TypeAliases" : { "MyGame_Example_TypeAliases" : {
"type" : "object", "type" : "object",
@@ -136,7 +147,8 @@
"f64" : { "type" : "number" }, "f64" : { "type" : "number" },
"v8" : { "type" : "array", "items" : { "type" : "number" } }, "v8" : { "type" : "array", "items" : { "type" : "number" } },
"vf64" : { "type" : "array", "items" : { "type" : "number" } } "vf64" : { "type" : "array", "items" : { "type" : "number" } }
} },
"additionalProperties" : false
} }
}, },
"$ref" : "#/definitions/MyGame_Example_Monster" "$ref" : "#/definitions/MyGame_Example_Monster"