Refactor creating unique parameter name 98/106598/14
authorYaroslav Lastivka <yaroslav.lastivka@pantheon.tech>
Wed, 21 Jun 2023 12:37:15 +0000 (15:37 +0300)
committerIvan Hrasko <ivan.hrasko@pantheon.tech>
Thu, 13 Jul 2023 15:08:15 +0000 (17:08 +0200)
Create set containing already existing parameter names and use
simple while loop instead of nested for loops.

JIRA: NETCONF-1060
Change-Id: I34359182cfc1690947cf8ddd4ead297d4039e619
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 8b1d327a8c700520073fd2be3720866b56237966..0e957922387043dd115ec2cced2c7386a7cc3759 100644 (file)
@@ -36,6 +36,7 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.stream.Collectors;
 import javax.ws.rs.core.UriInfo;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
@@ -384,6 +385,9 @@ public abstract class BaseYangOpenApiGenerator {
             final String localName) {
         final StringBuilder path = new StringBuilder();
         path.append(localName);
+        final Set<String> parameters = pathParams.stream()
+            .map(Parameter::name)
+            .collect(Collectors.toSet());
 
         if (schemaNode instanceof ListSchemaNode) {
             String prefix = "=";
@@ -391,17 +395,9 @@ public abstract class BaseYangOpenApiGenerator {
             for (final QName listKey : ((ListSchemaNode) schemaNode).getKeyDefinition()) {
                 final String keyName = listKey.getLocalName();
                 String paramName = keyName;
-                for (final Parameter pathParam : pathParams) {
-                    if (paramName.equals(pathParam.name())) {
-                        paramName = keyName + discriminator;
-                        discriminator++;
-                        for (final Parameter pathParameter : pathParams) {
-                            if (paramName.equals(pathParameter.name())) {
-                                paramName = keyName + discriminator;
-                                discriminator++;
-                            }
-                        }
-                    }
+                while (!parameters.add(paramName)) {
+                    paramName = keyName + discriminator;
+                    discriminator++;
                 }
 
                 final String pathParamIdentifier = prefix + "{" + paramName + "}";