OpenApi: Refactor inconsistent naming of modelContext 94/111694/5
authorlubos-cicut <lubos.cicut@pantheon.tech>
Tue, 14 May 2024 16:17:32 +0000 (18:17 +0200)
committerRobert Varga <nite@hq.sk>
Sun, 19 May 2024 17:53:25 +0000 (17:53 +0000)
In restconf-openapi is inconsistent naming of EffectiveModelContext,
this patch unify it to modelContext.

JIRA: NETCONF-1313
Change-Id: I64face48ef43b59bc489c3058fa5dfa4bcbb4e41
Signed-off-by: lubos-cicut <lubos.cicut@pantheon.tech>
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/ComponentsStream.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/OpenApiInputStream.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/PathsStream.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/SchemasStream.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/model/PropertyEntity.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/mountpoints/MountPointOpenApi.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/util/RestDocgenUtil.java

index 953917a343aef43a88ef4ea2febb0c75f4ffedd2..ac88c83ad88756c252349dca3ac4f59fe4836c47 100644 (file)
@@ -38,26 +38,26 @@ public abstract class BaseYangOpenApiGenerator {
     }
 
     public OpenApiInputStream getControllerModulesDoc(final UriInfo uriInfo) throws IOException {
-        final var context = requireNonNull(schemaService.getGlobalContext());
+        final var modelContext = requireNonNull(schemaService.getGlobalContext());
         final var schema = createSchemaFromUriInfo(uriInfo);
         final var host = createHostFromUriInfo(uriInfo);
         final var title = "Controller modules of RESTCONF";
         final var url = schema + "://" + host + "/";
         final var basePath = getBasePath();
-        final var modules = getModulesWithoutDuplications(context);
-        return new OpenApiInputStream(context, title, url, SECURITY, CONTROLLER_RESOURCE_NAME, "",false, false,
+        final var modules = getModulesWithoutDuplications(modelContext);
+        return new OpenApiInputStream(modelContext, title, url, SECURITY, CONTROLLER_RESOURCE_NAME, "",false, false,
             modules, basePath);
     }
 
     public OpenApiInputStream getApiDeclaration(final String module, final String revision, final UriInfo uriInfo)
             throws IOException {
-        final EffectiveModelContext schemaContext = schemaService.getGlobalContext();
-        Preconditions.checkState(schemaContext != null);
-        return getApiDeclaration(module, revision, uriInfo, schemaContext, "", CONTROLLER_RESOURCE_NAME);
+        final var modelContext = schemaService.getGlobalContext();
+        Preconditions.checkState(modelContext != null);
+        return getApiDeclaration(module, revision, uriInfo, modelContext, "", CONTROLLER_RESOURCE_NAME);
     }
 
     public OpenApiInputStream getApiDeclaration(final String moduleName, final String revision, final UriInfo uriInfo,
-            final EffectiveModelContext schemaContext, final String urlPrefix, final @NonNull String deviceName)
+            final EffectiveModelContext modelContext, final String urlPrefix, final @NonNull String deviceName)
             throws IOException {
         final Optional<Revision> rev;
 
@@ -67,7 +67,7 @@ public abstract class BaseYangOpenApiGenerator {
             throw new IllegalArgumentException(e);
         }
 
-        final var module = schemaContext.findModule(moduleName, rev).orElse(null);
+        final var module = modelContext.findModule(moduleName, rev).orElse(null);
         Preconditions.checkArgument(module != null,
                 "Could not find module by name,revision: " + moduleName + "," + revision);
 
@@ -77,7 +77,7 @@ public abstract class BaseYangOpenApiGenerator {
         final var url = schema + "://" + host + "/";
         final var basePath = getBasePath();
         final var modules = List.of(module);
-        return new OpenApiInputStream(schemaContext, title, url, SECURITY,  deviceName, urlPrefix, true, false,
+        return new OpenApiInputStream(modelContext, title, url, SECURITY,  deviceName, urlPrefix, true, false,
             modules, basePath);
     }
 
@@ -96,8 +96,8 @@ public abstract class BaseYangOpenApiGenerator {
 
     public abstract String getBasePath();
 
-    public static Set<Module> getModulesWithoutDuplications(final @NonNull EffectiveModelContext schemaContext) {
-        return new LinkedHashSet<>(schemaContext.getModules()
+    public static Set<Module> getModulesWithoutDuplications(final @NonNull EffectiveModelContext modelContext) {
+        return new LinkedHashSet<>(modelContext.getModules()
             .stream()
             .collect(Collectors.toMap(
                 Module::getName,
index 064901cfe1848884c50ff91e919c443192ac88a5..8357a7cce72d2c61ddec8105aea2fd8144c39b51 100644 (file)
@@ -31,7 +31,7 @@ public final class ComponentsStream extends InputStream {
 
     private final Iterator<? extends Module> iterator;
     private final OpenApiBodyWriter writer;
-    private final EffectiveModelContext context;
+    private final EffectiveModelContext modelContext;
     private final JsonGenerator generator;
     private final ByteArrayOutputStream stream;
     private final boolean isForSingleModule;
@@ -41,11 +41,11 @@ public final class ComponentsStream extends InputStream {
     private Reader reader;
     private ReadableByteChannel channel;
 
-    public ComponentsStream(final EffectiveModelContext context, final OpenApiBodyWriter writer,
+    public ComponentsStream(final EffectiveModelContext modelContext, final OpenApiBodyWriter writer,
             final JsonGenerator generator, final ByteArrayOutputStream stream,
             final Iterator<? extends Module> iterator, final boolean isForSingleModule) {
         this.iterator = iterator;
-        this.context = context;
+        this.modelContext = modelContext;
         this.writer = writer;
         this.generator = generator;
         this.stream = stream;
@@ -64,8 +64,8 @@ public final class ComponentsStream extends InputStream {
         var read = reader.read();
         while (read == -1) {
             if (!schemasWritten) {
-                reader = new InputStreamReader(new SchemasStream(context, writer, iterator, isForSingleModule, stream,
-                    generator), StandardCharsets.UTF_8);
+                reader = new InputStreamReader(new SchemasStream(modelContext, writer, iterator, isForSingleModule,
+                    stream, generator), StandardCharsets.UTF_8);
                 read = reader.read();
                 schemasWritten = true;
                 continue;
@@ -98,8 +98,8 @@ public final class ComponentsStream extends InputStream {
         var read = channel.read(ByteBuffer.wrap(array, off, len));
         while (read == -1) {
             if (!schemasWritten) {
-                channel = Channels.newChannel(new SchemasStream(context, writer, iterator, isForSingleModule, stream,
-                    generator));
+                channel = Channels.newChannel(new SchemasStream(modelContext, writer, iterator, isForSingleModule,
+                    stream, generator));
                 read = channel.read(ByteBuffer.wrap(array, off, len));
                 schemasWritten = true;
                 continue;
index 6a158907b6781e42b0c2d5f4282b9f6df055a854..258697194a93905d912df1e5b54f0a0c5b09cdfd 100644 (file)
@@ -44,7 +44,7 @@ public final class OpenApiInputStream extends InputStream {
 
     private boolean eof;
 
-    public OpenApiInputStream(final EffectiveModelContext context, final String title, final String url,
+    public OpenApiInputStream(final EffectiveModelContext modelContext, final String title, final String url,
             final List<Map<String, List<String>>> security, final String deviceName, final String urlPrefix,
             final boolean isForSingleModule, final boolean includeDataStore, final Collection<? extends Module> modules,
             final String basePath) throws IOException {
@@ -52,9 +52,9 @@ public final class OpenApiInputStream extends InputStream {
         stack.add(new OpenApiVersionStream(new OpenApiVersionEntity(), writer));
         stack.add(new InfoStream(new InfoEntity(title), writer));
         stack.add(new ServersStream(new ServersEntity(List.of(new ServerEntity(url))), writer));
-        stack.add(new PathsStream(context, writer, deviceName, urlPrefix, isForSingleModule, includeDataStore,
+        stack.add(new PathsStream(modelContext, writer, deviceName, urlPrefix, isForSingleModule, includeDataStore,
             modules.iterator(), basePath, stream, generator));
-        stack.add(new ComponentsStream(context, writer, generator, stream, modules.iterator(), isForSingleModule));
+        stack.add(new ComponentsStream(modelContext, writer, generator, stream, modules.iterator(), isForSingleModule));
         stack.add(new SecurityStream(writer, new SecurityEntity(security)));
     }
 
index 21e45bd851cb231ba8e3eaf0deb6c009a675d922..3b10b8e80f3123bc28f572773dee2a87574ce5a4 100644 (file)
@@ -65,7 +65,7 @@ public final class PathsStream extends InputStream {
 
     private final Iterator<? extends Module> iterator;
     private final OpenApiBodyWriter writer;
-    private final EffectiveModelContext schemaContext;
+    private final EffectiveModelContext modelContext;
     private final String deviceName;
     private final String urlPrefix;
     private final String basePath;
@@ -80,13 +80,13 @@ public final class PathsStream extends InputStream {
     private ReadableByteChannel channel;
     private boolean eof;
 
-    public PathsStream(final EffectiveModelContext schemaContext, final OpenApiBodyWriter writer,
+    public PathsStream(final EffectiveModelContext modelContext, final OpenApiBodyWriter writer,
             final String deviceName, final String urlPrefix, final boolean isForSingleModule,
             final boolean includeDataStore, final Iterator<? extends Module> iterator, final String basePath,
             final ByteArrayOutputStream stream, final JsonGenerator generator) {
         this.iterator = iterator;
         this.writer = writer;
-        this.schemaContext = schemaContext;
+        this.modelContext = modelContext;
         this.isForSingleModule = isForSingleModule;
         this.deviceName = deviceName;
         this.urlPrefix = urlPrefix;
@@ -191,7 +191,7 @@ public final class PathsStream extends InputStream {
                 final var pathParams = new ArrayList<ParameterEntity>();
                 final var localName = moduleName + ":" + nodeLocalName;
                 final var path = urlPrefix + "/" + processPath(node, pathParams, localName);
-                processChildNode(node, pathParams, moduleName, result, path, nodeLocalName, isConfig, schemaContext,
+                processChildNode(node, pathParams, moduleName, result, path, nodeLocalName, isConfig, modelContext,
                     deviceName, basePath, null, List.of());
             }
         }
@@ -200,10 +200,10 @@ public final class PathsStream extends InputStream {
 
     private static void processChildNode(final DataSchemaNode node, final List<ParameterEntity> pathParams,
             final String moduleName, final Deque<PathEntity> result, final String path, final String refPath,
-            final boolean isConfig, final EffectiveModelContext schemaContext, final String deviceName,
+            final boolean isConfig, final EffectiveModelContext modelContext, final String deviceName,
             final String basePath, final SchemaNode parentNode, final List<SchemaNode> parentNodes) {
         final var resourcePath = basePath + DATA + path;
-        final var fullName = resolveFullNameFromNode(node.getQName(), schemaContext);
+        final var fullName = resolveFullNameFromNode(node.getQName(), modelContext);
         final var firstChild = getListOrContainerChildNode((DataNodeContainer) node);
         if (firstChild != null && node instanceof ContainerSchemaNode) {
             result.add(processTopPathEntity(node, resourcePath, pathParams, moduleName, refPath, isConfig,
@@ -223,7 +223,7 @@ public final class PathsStream extends InputStream {
             final var actionParams = new ArrayList<>(pathParams);
             actionContainer.getActions().forEach(actionDef -> {
                 final var resourceActionPath = path + "/" + resolvePathArgumentsName(actionDef.getQName(),
-                    node.getQName(), schemaContext);
+                    node.getQName(), modelContext);
                 final var childPath = basePath + OPERATIONS + resourceActionPath;
                 result.add(processActionPathEntity(actionDef, childPath, actionParams, moduleName,
                     refPath, deviceName, parentNode, listOfParentsForActions));
@@ -233,11 +233,11 @@ public final class PathsStream extends InputStream {
             if (childNode instanceof ListSchemaNode || childNode instanceof ContainerSchemaNode) {
                 final var childParams = new ArrayList<>(pathParams);
                 final var newRefPath = refPath + "_" + childNode.getQName().getLocalName();
-                final var localName = resolvePathArgumentsName(childNode.getQName(), node.getQName(), schemaContext);
+                final var localName = resolvePathArgumentsName(childNode.getQName(), node.getQName(), modelContext);
                 final var resourceDataPath = path + "/" + processPath(childNode, childParams, localName);
                 final var newConfig = isConfig && childNode.isConfiguration();
                 processChildNode(childNode, childParams, moduleName, result, resourceDataPath, newRefPath, newConfig,
-                    schemaContext, deviceName, basePath, node, listOfParents);
+                    modelContext, deviceName, basePath, node, listOfParents);
             }
         }
     }
index 603c2383b527c5e2be4820c52e2dec1686731b64..2f88a3d545eec258bb4596c436d06d80e358ead2 100644 (file)
@@ -45,7 +45,7 @@ public final class SchemasStream extends InputStream {
 
     private final Iterator<? extends Module> iterator;
     private final OpenApiBodyWriter writer;
-    private final EffectiveModelContext context;
+    private final EffectiveModelContext modelContext;
     private final boolean isForSingleModule;
     private final ByteArrayOutputStream stream;
     private final JsonGenerator generator;
@@ -54,11 +54,11 @@ public final class SchemasStream extends InputStream {
     private ReadableByteChannel channel;
     private boolean eof;
 
-    public SchemasStream(final EffectiveModelContext context, final OpenApiBodyWriter writer,
+    public SchemasStream(final EffectiveModelContext modelContext, final OpenApiBodyWriter writer,
             final Iterator<? extends Module> iterator, final boolean isForSingleModule,
             final ByteArrayOutputStream stream, final JsonGenerator generator) {
         this.iterator = iterator;
-        this.context = context;
+        this.modelContext = modelContext;
         this.writer = writer;
         this.isForSingleModule = isForSingleModule;
         this.stream = stream;
@@ -81,7 +81,7 @@ public final class SchemasStream extends InputStream {
         while (read == -1) {
             if (iterator.hasNext()) {
                 reader = new BufferedReader(new InputStreamReader(
-                    new SchemaStream(toComponents(iterator.next(), context, isForSingleModule), writer),
+                    new SchemaStream(toComponents(iterator.next(), modelContext, isForSingleModule), writer),
                         StandardCharsets.UTF_8));
                 read = reader.read();
                 continue;
@@ -112,7 +112,7 @@ public final class SchemasStream extends InputStream {
         while (read == -1) {
             if (iterator.hasNext()) {
                 channel = Channels.newChannel(
-                    new SchemaStream(toComponents(iterator.next(), context, isForSingleModule), writer));
+                    new SchemaStream(toComponents(iterator.next(), modelContext, isForSingleModule), writer));
                 read = channel.read(ByteBuffer.wrap(array, off, len));
                 continue;
             }
@@ -126,11 +126,11 @@ public final class SchemasStream extends InputStream {
         return read;
     }
 
-    private static Deque<SchemaEntity> toComponents(final Module module, final EffectiveModelContext context,
+    private static Deque<SchemaEntity> toComponents(final Module module, final EffectiveModelContext modelContext,
             final boolean isForSingleModule) {
         final var result = new ArrayDeque<SchemaEntity>();
         final var definitionNames = new DefinitionNames();
-        final var stack = SchemaInferenceStack.of(context);
+        final var stack = SchemaInferenceStack.of(modelContext);
         final var moduleName = module.getName();
         if (isForSingleModule) {
             definitionNames.addUnlinkedName(moduleName + "_module");
index cedf558898ea6252e7625300bf08b73a4305e863..aecf2a4cde3914730de942c6a7fa59976ae8b8ac 100644 (file)
@@ -545,14 +545,14 @@ public class PropertyEntity {
     }
 
     private String processIdentityRefType(final IdentityrefTypeDefinition leafTypeDef,
-            final EffectiveModelContext schemaContext, final TypeDef def) {
+            final EffectiveModelContext modelContext, final TypeDef def) {
         final var schemaNode = leafTypeDef.getIdentities().iterator().next();
         def.setExample(schemaNode.getQName().getLocalName());
 
-        final var derivedIds = schemaContext.getDerivedIdentities(schemaNode);
+        final var derivedIds = modelContext.getDerivedIdentities(schemaNode);
         final var enumPayload = new ArrayList<String>();
         enumPayload.add(schemaNode.getQName().getLocalName());
-        populateEnumWithDerived(derivedIds, enumPayload, schemaContext);
+        populateEnumWithDerived(derivedIds, enumPayload, modelContext);
         final var schemaEnum = new ArrayList<>(enumPayload);
 
         def.setEnums(schemaEnum);
@@ -561,10 +561,10 @@ public class PropertyEntity {
     }
 
     private void populateEnumWithDerived(final Collection<? extends IdentitySchemaNode> derivedIds,
-            final List<String> enumPayload, final EffectiveModelContext context) {
+            final List<String> enumPayload, final EffectiveModelContext modelContext) {
         for (final var derivedId : derivedIds) {
             enumPayload.add(derivedId.getQName().getLocalName());
-            populateEnumWithDerived(context.getDerivedIdentities(derivedId), enumPayload, context);
+            populateEnumWithDerived(modelContext.getDerivedIdentities(derivedId), enumPayload, modelContext);
         }
     }
 
@@ -666,9 +666,9 @@ public class PropertyEntity {
     }
 
     private String processInstanceIdentifierType(final InstanceIdentifierTypeDefinition iidType,
-            final DataSchemaNode schemaNode, final EffectiveModelContext schemaContext,final TypeDef def) {
+            final DataSchemaNode schemaNode, final EffectiveModelContext modelContext,final TypeDef def) {
         // create example instance-identifier to the first container of node's module if exists or leave it empty
-        final var module = schemaContext.findModule(schemaNode.getQName().getModule());
+        final var module = modelContext.findModule(schemaNode.getQName().getModule());
         if (module.isPresent()) {
             final var container = module.orElseThrow().getChildNodes().stream()
                 .filter(n -> n instanceof ContainerSchemaNode)
index 4adccfc5a5a483b141cf76825b293790dea2bb6e..58b3ad008bb1fcf447ef5a451505e7e5fa037bfd 100644 (file)
@@ -37,7 +37,6 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -76,17 +75,17 @@ public class MountPointOpenApi implements DOMMountPointListener, AutoCloseable {
 
     public Map<String, Long> getInstanceIdentifiers() {
         final Map<String, Long> urlToId = new HashMap<>();
-        final SchemaContext context = globalSchema.getGlobalContext();
+        final EffectiveModelContext modelContext = globalSchema.getGlobalContext();
         for (final Entry<YangInstanceIdentifier, Long> entry : instanceIdToLongId.entrySet()) {
-            final String modName = findModuleName(entry.getKey(), context);
+            final String modName = findModuleName(entry.getKey(), modelContext);
             urlToId.put(generateUrlPrefixFromInstanceID(entry.getKey(), modName), entry.getValue());
         }
         return urlToId;
     }
 
-    private static String findModuleName(final YangInstanceIdentifier id, final SchemaContext context) {
+    private static String findModuleName(final YangInstanceIdentifier id, final EffectiveModelContext modelContext) {
         final PathArgument rootQName = id.getPathArguments().iterator().next();
-        for (final Module mod : context.getModules()) {
+        for (final Module mod : modelContext.getModules()) {
             if (mod.findDataChildByName(rootQName.getNodeType()).isPresent()) {
                 return mod.getName();
             }
@@ -118,7 +117,7 @@ public class MountPointOpenApi implements DOMMountPointListener, AutoCloseable {
         return builder.toString();
     }
 
-    private EffectiveModelContext getSchemaContext(final YangInstanceIdentifier id) {
+    private EffectiveModelContext getModelContext(final YangInstanceIdentifier id) {
         if (id == null) {
             return null;
         }
@@ -133,24 +132,24 @@ public class MountPointOpenApi implements DOMMountPointListener, AutoCloseable {
     public OpenApiInputStream getMountPointApi(final UriInfo uriInfo, final Long id, final String module,
             final String revision) throws IOException  {
         final YangInstanceIdentifier iid = longIdToInstanceId.get(id);
-        final EffectiveModelContext context = getSchemaContext(iid);
+        final EffectiveModelContext modelContext = getModelContext(iid);
         final String urlPrefix = getYangMountUrl(iid);
         final String deviceName = extractDeviceName(iid);
 
-        if (context == null) {
+        if (modelContext == null) {
             return null;
         }
 
         if (DATASTORES_LABEL.equals(module) && DATASTORES_REVISION.equals(revision)) {
-            return generateDataStoreOpenApi(context, uriInfo, urlPrefix, deviceName);
+            return generateDataStoreOpenApi(modelContext, uriInfo, urlPrefix, deviceName);
         }
-        return openApiGenerator.getApiDeclaration(module, revision, uriInfo, context, urlPrefix, deviceName);
+        return openApiGenerator.getApiDeclaration(module, revision, uriInfo, modelContext, urlPrefix, deviceName);
     }
 
     public OpenApiInputStream getMountPointApi(final UriInfo uriInfo, final Long id, final @Nullable String strPageNum)
             throws IOException {
         final var iid = longIdToInstanceId.get(id);
-        final var context = getSchemaContext(iid);
+        final var context = getModelContext(iid);
         final var urlPrefix = getYangMountUrl(iid);
         final var deviceName = extractDeviceName(iid);
 
index 92fc4a2792e69d131472db170d4fd784b6b22c44..0a1d677a815449129d37bcf117875270f5eecbe9 100644 (file)
@@ -16,7 +16,6 @@ import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.XMLNamespace;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 public final class RestDocgenUtil {
     private static final Map<XMLNamespace, Map<Optional<Revision>, Module>> NAMESPACE_AND_REVISION_TO_MODULE =
@@ -36,11 +35,11 @@ public final class RestDocgenUtil {
      * @return name of {@code node}
      */
     public static String resolvePathArgumentsName(@NonNull final QName node, @NonNull final QName parent,
-                                                  @NonNull final EffectiveModelContext schemaContext) {
+                                                  @NonNull final EffectiveModelContext modelContext) {
         if (isEqualNamespaceAndRevision(node, parent)) {
             return node.getLocalName();
         } else {
-            return resolveFullNameFromNode(node, schemaContext);
+            return resolveFullNameFromNode(node, modelContext);
         }
     }
 
@@ -49,14 +48,14 @@ public final class RestDocgenUtil {
                 && parent.getRevision().equals(node.getRevision());
     }
 
-    public static String resolveFullNameFromNode(final QName node, final SchemaContext schemaContext) {
+    public static String resolveFullNameFromNode(final QName node, final EffectiveModelContext modelContext) {
         final XMLNamespace namespace = node.getNamespace();
         final Optional<Revision> revision = node.getRevision();
 
         final Map<Optional<Revision>, Module> revisionToModule =
             NAMESPACE_AND_REVISION_TO_MODULE.computeIfAbsent(namespace, k -> new HashMap<>());
         final Module module = revisionToModule.computeIfAbsent(revision,
-                k -> schemaContext.findModule(namespace, k).orElse(null));
+                k -> modelContext.findModule(namespace, k).orElse(null));
         if (module != null) {
             return module.getName() + ":" + node.getLocalName();
         }