Eliminate createUniquePathParamName method 02/106402/3
authorYaroslav Lastivka <yaroslav.lastivka@pantheon.tech>
Wed, 7 Jun 2023 13:00:57 +0000 (16:00 +0300)
committerIvan Hrasko <ivan.hrasko@pantheon.tech>
Mon, 19 Jun 2023 06:55:48 +0000 (08:55 +0200)
The method 'createUniquePathParamName' has been eliminated.

Instead, use a new logic using a variable named 'discriminator'.
This variable increments on each occurrence of parameter name.

JIRA: NETCONF-1047
Change-Id: I512bed32f27e4eb4ad51afc6e90fd484793cb2fb
Signed-off-by: Yaroslav Lastivka <yaroslav.lastivka@pantheon.tech>
Signed-off-by: Ivan Hrasko <ivan.hrasko@pantheon.tech>
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java

index 0f6688f5317a3c0dcc325801e8c31cc9a2f312a1..68edca63dd1203e83c8ae932ae45d8b3047fa009 100644 (file)
@@ -384,8 +384,17 @@ public abstract class BaseYangOpenApiGenerator {
 
         if (schemaNode instanceof ListSchemaNode) {
             final ListPathBuilder keyBuilder = newListPathBuilder();
+            int discriminator = 1;
             for (final QName listKey : ((ListSchemaNode) schemaNode).getKeyDefinition()) {
-                final String paramName = createUniquePathParamName(listKey.getLocalName(), pathParams);
+                final String keyName = listKey.getLocalName();
+                String paramName = keyName;
+                for (final JsonNode pathParam : pathParams) {
+                    if (paramName.equals(pathParam.get("name").asText())) {
+                        paramName = keyName + discriminator;
+                        discriminator++;
+                    }
+                }
+
                 final String pathParamIdentifier = keyBuilder.nextParamIdentifier(paramName);
 
                 path.append(pathParamIdentifier);
@@ -408,30 +417,6 @@ public abstract class BaseYangOpenApiGenerator {
         return path.toString();
     }
 
-    private String createUniquePathParamName(final String clearName, final ArrayNode pathParams) {
-        for (final JsonNode pathParam : pathParams) {
-            if (isNamePicked(clearName, pathParam)) {
-                return createUniquePathParamName(clearName, pathParams, 1);
-            }
-        }
-        return clearName;
-    }
-
-    private String createUniquePathParamName(final String clearName, final ArrayNode pathParams,
-            final int discriminator) {
-        final String newName = clearName + discriminator;
-        for (final JsonNode pathParam : pathParams) {
-            if (isNamePicked(newName, pathParam)) {
-                return createUniquePathParamName(clearName, pathParams, discriminator + 1);
-            }
-        }
-        return newName;
-    }
-
-    private static boolean isNamePicked(final String name, final JsonNode pathParam) {
-        return name.equals(pathParam.get("name").asText());
-    }
-
     public SortedSet<Module> getSortedModules(final EffectiveModelContext schemaContext) {
         if (schemaContext == null) {
             return Collections.emptySortedSet();