Add mandatory node to _post element in OpenApi 37/106737/2
authorPeter Suna <peter.suna@pantheon.tech>
Wed, 28 Jun 2023 08:58:38 +0000 (10:58 +0200)
committerIvan Hrasko <ivan.hrasko@pantheon.tech>
Fri, 14 Jul 2023 14:39:12 +0000 (14:39 +0000)
Previous cherry-pick to fix mandatory fields did not account
for the presence of _post elements, which were removed in the master
branch. The change can be found at:
[https://git.opendaylight.org/gerrit/c/netconf/+/106636]

Additionally, this commit addresses the mandatory fields
in _post nodes, ensuring they are fixed as well.

JIRA: NETCONF-976
Change-Id: Ibbaf9dbc0a449b5928be2a528965205bb92ce70a
Signed-off-by: Peter Suna <peter.suna@pantheon.tech>
restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/DefinitionGenerator.java
restconf/sal-rest-docgen/src/test/java/org/opendaylight/netconf/sal/rest/doc/impl/ApiDocGeneratorRFC8040Test.java

index 3a1015e7dc2d70357dff25dae95da2331ff41930..b622fa2627d2ba3c87cd010e82ce77238a9bfb0c 100644 (file)
@@ -437,7 +437,11 @@ public class DefinitionGenerator {
             }
 
             if (isConfig) {
+                final JsonNode required = childSchema.get(REQUIRED_KEY);
                 final ObjectNode postSchema = createPostJsonSchema(schemaNode, properties, postNodeName, description);
+                if (required != null && required.size() > 0) {
+                    postSchema.set(REQUIRED_KEY, required);
+                }
                 String truePostNodeName = postNodeName + discriminator;
                 definitions.set(truePostNodeName, postSchema);
 
index b87024c2d061ff1f5af488dba85df4ff2c256940..67d68881d37329ae81edc9d3f70cc7ee6463ef84 100644 (file)
@@ -36,10 +36,14 @@ public final class ApiDocGeneratorRFC8040Test extends AbstractApiDocTest {
     private static final String PATH_PARAMS_TEST_MODULE = "path-params-test";
     private static final String MANDATORY_TEST = "mandatory-test";
     private static final String CONFIG_ROOT_CONTAINER = "mandatory-test_config_root-container";
+    private static final String CONFIG_ROOT_CONTAINER_POST = "mandatory-test_config_root-container_post";
     private static final String ROOT_CONTAINER = "mandatory-test_root-container";
     private static final String CONFIG_MANDATORY_CONTAINER = "mandatory-test_root-container_config_mandatory-container";
+    private static final String CONFIG_MANDATORY_CONTAINER_POST
+        = "mandatory-test_root-container_config_mandatory-container_post";
     private static final String MANDATORY_CONTAINER = "mandatory-test_root-container_mandatory-container";
     private static final String CONFIG_MANDATORY_LIST = "mandatory-test_root-container_config_mandatory-list";
+    private static final String CONFIG_MANDATORY_LIST_POST = "mandatory-test_root-container_config_mandatory-list_post";
     private static final String MANDATORY_LIST = "mandatory-test_root-container_mandatory-list";
     private static final String MANDATORY_TEST_MODULE = "mandatory-test_module";
     private static final String CHOICE_TEST_MODULE = "choice-test";
@@ -184,18 +188,24 @@ public final class ApiDocGeneratorRFC8040Test extends AbstractApiDocTest {
         containersWithRequired.add(CONFIG_ROOT_CONTAINER);
         verifyRequiredField(definitions.get(ROOT_CONTAINER), reqRootContainerElements);
         containersWithRequired.add(ROOT_CONTAINER);
+        verifyRequiredField(definitions.get(CONFIG_ROOT_CONTAINER_POST), reqRootContainerElements);
+        containersWithRequired.add(CONFIG_ROOT_CONTAINER_POST);
 
         final var reqMandatoryContainerElements = Set.of("mandatory-leaf", "leaf-list-with-min-elements");
         verifyRequiredField(definitions.get(CONFIG_MANDATORY_CONTAINER), reqMandatoryContainerElements);
         containersWithRequired.add(CONFIG_MANDATORY_CONTAINER);
         verifyRequiredField(definitions.get(MANDATORY_CONTAINER), reqMandatoryContainerElements);
         containersWithRequired.add(MANDATORY_CONTAINER);
+        verifyRequiredField(definitions.get(CONFIG_MANDATORY_CONTAINER_POST), reqMandatoryContainerElements);
+        containersWithRequired.add(CONFIG_MANDATORY_CONTAINER_POST);
 
         final var reqMandatoryListElements = Set.of("mandatory-list-field");
         verifyRequiredField(definitions.get(CONFIG_MANDATORY_LIST), reqMandatoryListElements);
         containersWithRequired.add(CONFIG_MANDATORY_LIST);
         verifyRequiredField(definitions.get(MANDATORY_LIST), reqMandatoryListElements);
         containersWithRequired.add(MANDATORY_LIST);
+        verifyRequiredField(definitions.get(CONFIG_MANDATORY_LIST_POST), reqMandatoryListElements);
+        containersWithRequired.add(CONFIG_MANDATORY_LIST_POST);
 
         final var testModuleMandatoryArray = Set.of("root-container", "root-mandatory-list");
         verifyRequiredField(definitions.get(MANDATORY_TEST_MODULE), testModuleMandatoryArray);