From a8c63bcdb5f29e0b63cca7e6bcf9f73b2b479093 Mon Sep 17 00:00:00 2001 From: Yaroslav Lastivka Date: Wed, 21 Jun 2023 15:37:15 +0300 Subject: [PATCH] Refactor creating unique parameter name 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 Signed-off-by: Ivan Hrasko (cherry picked from commit 1782f5af66c06f0df9a942bab22155a1b5835405) --- .../impl/BaseYangOpenApiGenerator.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java b/restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java index 1606831540..ca94e59484 100644 --- a/restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java +++ b/restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java @@ -18,7 +18,6 @@ import static org.opendaylight.restconf.openapi.model.builder.OperationBuilder.b import static org.opendaylight.restconf.openapi.model.builder.OperationBuilder.getTypeParentNode; import static org.opendaylight.restconf.openapi.util.RestDocgenUtil.resolvePathArgumentsName; -import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -37,6 +36,8 @@ import java.util.Optional; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import javax.ws.rs.core.UriInfo; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.dom.api.DOMSchemaService; @@ -380,6 +381,9 @@ public abstract class BaseYangOpenApiGenerator { private String createPath(final DataSchemaNode schemaNode, final ArrayNode pathParams, final String localName) { final StringBuilder path = new StringBuilder(); path.append(localName); + final Set parameters = StreamSupport.stream(pathParams.spliterator(), false) + .map(p -> p.get("name").asText()) + .collect(Collectors.toSet()); if (schemaNode instanceof ListSchemaNode) { String prefix = "="; @@ -387,17 +391,9 @@ public abstract class BaseYangOpenApiGenerator { for (final QName listKey : ((ListSchemaNode) schemaNode).getKeyDefinition()) { final String keyName = listKey.getLocalName(); String paramName = keyName; - for (final JsonNode pathParam : pathParams) { - if (paramName.equals(pathParam.get("name").asText())) { - paramName = keyName + discriminator; - discriminator++; - for (final JsonNode pathParameter : pathParams) { - if (paramName.equals(pathParameter.get("name").asText())) { - paramName = keyName + discriminator; - discriminator++; - } - } - } + while (!parameters.add(paramName)) { + paramName = keyName + discriminator; + discriminator++; } final String pathParamIdentifier = prefix + "{" + paramName + "}"; -- 2.36.6