Remove OpenAPI v2 76/104776/17
authorYaroslav Lastivka <yaroslav.lastivka@pantheon.tech>
Fri, 3 Mar 2023 14:32:47 +0000 (16:32 +0200)
committerRobert Varga <nite@hq.sk>
Fri, 21 Apr 2023 10:58:48 +0000 (10:58 +0000)
Remove support for OpenAPI version 2, from now on we just support
OpenAPI version 3.

Remove OpenAPI v2 URLs, configuration and constants.

JIRA: NETCONF-981
Change-Id: Idd06ffd2f02b1f42bd9f52c889af7df8aa22853c
Signed-off-by: Yaroslav Lastivka <yaroslav.lastivka@pantheon.tech>
restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/ApiDocServiceImpl.java
restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/BaseYangSwaggerGenerator.java
restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/DefinitionGenerator.java
restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/jaxrs/WebInitializer.java
restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/model/builder/OperationBuilder.java
restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/mountpoints/MountPointSwagger.java
restconf/sal-rest-docgen/src/test/java/org/opendaylight/netconf/sal/rest/doc/impl/ApiDocGeneratorRFC8040Test.java
restconf/sal-rest-docgen/src/test/java/org/opendaylight/netconf/sal/rest/doc/impl/MountPointSwaggerTest.java
restconf/sal-rest-docgen/src/test/java/org/opendaylight/netconf/sal/rest/doc/impl/SwaggerObjectTest.java

index 06cb65fd9af64a0a1f4020db86819ac1dc20f61e..c6d61bf3fcc9e45c6a1f306346b61a189388daef 100644 (file)
@@ -51,8 +51,6 @@ public final class ApiDocServiceImpl implements ApiDocService {
     // Query parameter
     private static final String PAGE_NUM = "pageNum";
 
-    public enum OAversion { V2_0, V3_0 }
-
     private final MountPointSwagger mountPointSwaggerRFC8040;
     private final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040;
 
@@ -73,11 +71,10 @@ public final class ApiDocServiceImpl implements ApiDocService {
 
     @Override
     public synchronized Response getAllModulesDoc(final UriInfo uriInfo) {
-        final OAversion oaversion = identifyOpenApiVersion(uriInfo);
         final DefinitionNames definitionNames = new DefinitionNames();
-        final SwaggerObject doc = apiDocGeneratorRFC8040.getAllModulesDoc(uriInfo, definitionNames, oaversion);
+        final SwaggerObject doc = apiDocGeneratorRFC8040.getAllModulesDoc(uriInfo, definitionNames);
 
-        return Response.ok(BaseYangSwaggerGenerator.getAppropriateDoc(doc, oaversion)).build();
+        return Response.ok(BaseYangSwaggerGenerator.convertToOpenApi(doc)).build();
     }
 
     /**
@@ -86,7 +83,7 @@ public final class ApiDocServiceImpl implements ApiDocService {
     @Override
     public synchronized Response getDocByModule(final String module, final String revision, final UriInfo uriInfo) {
         return Response.ok(
-            apiDocGeneratorRFC8040.getApiDeclaration(module, revision, uriInfo, identifyOpenApiVersion(uriInfo)))
+            apiDocGeneratorRFC8040.getApiDeclaration(module, revision, uriInfo))
             .build();
     }
 
@@ -109,27 +106,18 @@ public final class ApiDocServiceImpl implements ApiDocService {
     @Override
     public synchronized Response getMountDocByModule(final String instanceNum, final String module,
                                                      final String revision, final UriInfo uriInfo) {
-        final OAversion oaversion = identifyOpenApiVersion(uriInfo);
         final CommonApiObject api = mountPointSwaggerRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum),
-            module, revision, oaversion);
+            module, revision);
         return Response.ok(api).build();
     }
 
     @Override
     public synchronized Response getMountDoc(final String instanceNum, final UriInfo uriInfo) {
         final CommonApiObject api;
-        final OAversion oaversion = identifyOpenApiVersion(uriInfo);
         final String stringPageNum = uriInfo.getQueryParameters().getFirst(PAGE_NUM);
         final Optional<Integer> pageNum = stringPageNum != null ? Optional.of(Integer.valueOf(stringPageNum))
                 : Optional.empty();
-        api = mountPointSwaggerRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum), pageNum, oaversion);
+        api = mountPointSwaggerRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum), pageNum);
         return Response.ok(api).build();
     }
-
-    private static OAversion identifyOpenApiVersion(final UriInfo uriInfo) {
-        if (uriInfo.getBaseUri().toString().contains("/swagger2/")) {
-            return OAversion.V2_0;
-        }
-        return OAversion.V3_0;
-    }
 }
index ca99d41a1f519a87b94b00c5ba25d3e92ad1f59e..b45b7798d59af0f6be0c5410d8a790d7221ab667 100644 (file)
@@ -43,7 +43,6 @@ import java.util.TreeSet;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.UriInfo;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
 import org.opendaylight.netconf.sal.rest.doc.swagger.CommonApiObject;
 import org.opendaylight.netconf.sal.rest.doc.swagger.Components;
 import org.opendaylight.netconf.sal.rest.doc.swagger.Info;
@@ -102,17 +101,15 @@ public abstract class BaseYangSwaggerGenerator {
         this.schemaService = schemaService.orElse(null);
     }
 
-    public SwaggerObject getAllModulesDoc(final UriInfo uriInfo, final DefinitionNames definitionNames,
-            final OAversion oaversion) {
+    public SwaggerObject getAllModulesDoc(final UriInfo uriInfo, final DefinitionNames definitionNames) {
         final EffectiveModelContext schemaContext = schemaService.getGlobalContext();
         Preconditions.checkState(schemaContext != null);
-        return getAllModulesDoc(uriInfo, Optional.empty(), schemaContext, Optional.empty(), "", definitionNames,
-                oaversion);
+        return getAllModulesDoc(uriInfo, Optional.empty(), schemaContext, Optional.empty(), "", definitionNames);
     }
 
     public SwaggerObject getAllModulesDoc(final UriInfo uriInfo, final Optional<Range<Integer>> range,
             final EffectiveModelContext schemaContext, final Optional<String> deviceName, final String context,
-            final DefinitionNames definitionNames, final OAversion oaversion) {
+            final DefinitionNames definitionNames) {
         final String schema = createSchemaFromUriInfo(uriInfo);
         final String host = createHostFromUriInfo(uriInfo);
         String name = "Controller";
@@ -125,14 +122,14 @@ public abstract class BaseYangSwaggerGenerator {
         doc.setDefinitions(JsonNodeFactory.instance.objectNode());
         doc.setPaths(JsonNodeFactory.instance.objectNode());
 
-        fillDoc(doc, range, schemaContext, context, deviceName, oaversion, definitionNames);
+        fillDoc(doc, range, schemaContext, context, deviceName, definitionNames);
 
         return doc;
     }
 
     public void fillDoc(final SwaggerObject doc, final Optional<Range<Integer>> range,
-            final EffectiveModelContext schemaContext, final String context,  final Optional<String> deviceName,
-            final OAversion oaversion, final DefinitionNames definitionNames) {
+            final EffectiveModelContext schemaContext, final String context, final Optional<String> deviceName,
+            final DefinitionNames definitionNames) {
         final SortedSet<Module> modules = getSortedModules(schemaContext);
         final Set<Module> filteredModules;
         if (range.isPresent()) {
@@ -146,7 +143,7 @@ public abstract class BaseYangSwaggerGenerator {
 
             LOG.debug("Working on [{},{}]...", module.getName(), revisionString);
 
-            getSwaggerDocSpec(module, context, deviceName, schemaContext, oaversion, definitionNames, doc, false);
+            getSwaggerDocSpec(module, context, deviceName, schemaContext, definitionNames, doc, false);
         }
     }
 
@@ -175,16 +172,15 @@ public abstract class BaseYangSwaggerGenerator {
         }
     }
 
-    public CommonApiObject getApiDeclaration(final String module, final String revision, final UriInfo uriInfo,
-            final OAversion oaversion) {
+    public CommonApiObject getApiDeclaration(final String module, final String revision, final UriInfo uriInfo) {
         final EffectiveModelContext schemaContext = schemaService.getGlobalContext();
         Preconditions.checkState(schemaContext != null);
-        final SwaggerObject doc = getApiDeclaration(module, revision, uriInfo, schemaContext, "", oaversion);
-        return getAppropriateDoc(doc, oaversion);
+        final SwaggerObject doc = getApiDeclaration(module, revision, uriInfo, schemaContext, "");
+        return convertToOpenApi(doc);
     }
 
     public SwaggerObject getApiDeclaration(final String moduleName, final String revision, final UriInfo uriInfo,
-            final EffectiveModelContext schemaContext, final String context, final OAversion oaversion) {
+            final EffectiveModelContext schemaContext, final String context) {
         final Optional<Revision> rev;
 
         try {
@@ -197,15 +193,15 @@ public abstract class BaseYangSwaggerGenerator {
         Preconditions.checkArgument(module != null,
                 "Could not find module by name,revision: " + moduleName + "," + revision);
 
-        return getApiDeclaration(module, uriInfo, context, schemaContext, oaversion);
+        return getApiDeclaration(module, uriInfo, context, schemaContext);
     }
 
     public SwaggerObject getApiDeclaration(final Module module, final UriInfo uriInfo, final String context,
-            final EffectiveModelContext schemaContext, final OAversion oaversion) {
+            final EffectiveModelContext schemaContext) {
         final String schema = createSchemaFromUriInfo(uriInfo);
         final String host = createHostFromUriInfo(uriInfo);
 
-        return getSwaggerDocSpec(module, schema, host, BASE_PATH, context, schemaContext, oaversion);
+        return getSwaggerDocSpec(module, schema, host, BASE_PATH, context, schemaContext);
     }
 
     public String createHostFromUriInfo(final UriInfo uriInfo) {
@@ -222,27 +218,23 @@ public abstract class BaseYangSwaggerGenerator {
     }
 
     public SwaggerObject getSwaggerDocSpec(final Module module, final String schema, final String host,
-            final String basePath, final String context, final EffectiveModelContext schemaContext,
-            final OAversion oaversion) {
+            final String basePath, final String context, final EffectiveModelContext schemaContext) {
         final SwaggerObject doc = createSwaggerObject(schema, host, basePath, module.getName());
         final DefinitionNames definitionNames = new DefinitionNames();
-        return getSwaggerDocSpec(module, context, Optional.empty(), schemaContext, oaversion, definitionNames, doc,
-            true);
+        return getSwaggerDocSpec(module, context, Optional.empty(), schemaContext, definitionNames, doc, true);
     }
 
     public SwaggerObject getSwaggerDocSpec(final Module module, final String context, final Optional<String> deviceName,
-            final EffectiveModelContext schemaContext, final OAversion oaversion, final DefinitionNames definitionNames,
-            final SwaggerObject doc, final boolean isForSingleModule) {
+            final EffectiveModelContext schemaContext, final DefinitionNames definitionNames, final SwaggerObject doc,
+            final boolean isForSingleModule) {
         final ObjectNode definitions;
 
         try {
             if (isForSingleModule) {
-                definitions = jsonConverter.convertToJsonSchema(module, schemaContext, definitionNames, oaversion,
-                        true);
+                definitions = jsonConverter.convertToJsonSchema(module, schemaContext, definitionNames, true);
                 doc.setDefinitions(definitions);
             } else {
-                definitions = jsonConverter.convertToJsonSchema(module, schemaContext, definitionNames, oaversion,
-                        false);
+                definitions = jsonConverter.convertToJsonSchema(module, schemaContext, definitionNames, false);
                 addFields(doc.getDefinitions(), definitions.fields());
             }
             if (LOG.isDebugEnabled()) {
@@ -278,22 +270,22 @@ public abstract class BaseYangSwaggerGenerator {
                      */
                     if (isForSingleModule && !hasAddRootPostLink) {
                         LOG.debug("Has added root post link for module {}", module.getName());
-                        addRootPostLink(module, deviceName, pathParams, resourcePath, paths, oaversion);
+                        addRootPostLink(module, deviceName, pathParams, resourcePath, paths);
 
                         hasAddRootPostLink = true;
                     }
 
-                    final String resolvedPath = resourcePath + "/" + createPath(node, pathParams, oaversion, localName);
+                    final String resolvedPath = resourcePath + "/" + createPath(node, pathParams, localName);
                     addPaths(node, deviceName, moduleName, paths, pathParams, schemaContext, true, module.getName(),
-                        definitionNames, oaversion, resolvedPath);
+                        definitionNames, resolvedPath);
                 }
                 pathParams = JsonNodeFactory.instance.arrayNode();
                 resourcePath = getResourcePath("operational", context);
 
                 if (!node.isConfiguration()) {
-                    final String resolvedPath = resourcePath + "/" + createPath(node, pathParams, oaversion, localName);
+                    final String resolvedPath = resourcePath + "/" + createPath(node, pathParams, localName);
                     addPaths(node, deviceName, moduleName, paths, pathParams, schemaContext, false, moduleName,
-                        definitionNames, oaversion, resolvedPath);
+                        definitionNames, resolvedPath);
                 }
             }
         }
@@ -301,8 +293,8 @@ public abstract class BaseYangSwaggerGenerator {
         for (final RpcDefinition rpcDefinition : module.getRpcs()) {
             final String resolvedPath = getResourcePath("operations", context) + "/" + moduleName + ":"
                     + rpcDefinition.getQName().getLocalName();
-            addOperations(rpcDefinition, moduleName, deviceName, paths, module.getName(), definitionNames, oaversion,
-                    resolvedPath);
+            addOperations(rpcDefinition, moduleName, deviceName, paths, module.getName(), definitionNames,
+                resolvedPath);
         }
 
         LOG.debug("Number of Paths found [{}]", paths.size());
@@ -317,13 +309,13 @@ public abstract class BaseYangSwaggerGenerator {
     }
 
     private static void addRootPostLink(final Module module, final Optional<String> deviceName,
-            final ArrayNode pathParams, final String resourcePath, final ObjectNode paths, final OAversion oaversion) {
+            final ArrayNode pathParams, final String resourcePath, final ObjectNode paths) {
         if (containsListOrContainer(module.getChildNodes())) {
             final ObjectNode post = JsonNodeFactory.instance.objectNode();
             final String moduleName = module.getName();
             final String name = moduleName + MODULE_NAME_SUFFIX;
             post.set("post", buildPost("", name, "", moduleName, deviceName,
-                    module.getDescription().orElse(""), pathParams, oaversion));
+                    module.getDescription().orElse(""), pathParams));
             paths.set(resourcePath, post);
         }
     }
@@ -345,14 +337,7 @@ public abstract class BaseYangSwaggerGenerator {
         return doc;
     }
 
-    public static CommonApiObject getAppropriateDoc(final SwaggerObject swaggerObject, final OAversion oaversion) {
-        if (oaversion.equals(OAversion.V3_0)) {
-            return convertToOpenApi(swaggerObject);
-        }
-        return swaggerObject;
-    }
-
-    private static OpenApiObject convertToOpenApi(final SwaggerObject swaggerObject) {
+    public static OpenApiObject convertToOpenApi(final SwaggerObject swaggerObject) {
         final OpenApiObject doc = new OpenApiObject();
         doc.setOpenapi(OPEN_API_VERSION);
         doc.setInfo(swaggerObject.getInfo());
@@ -375,7 +360,7 @@ public abstract class BaseYangSwaggerGenerator {
     private void addPaths(final DataSchemaNode node, final Optional<String> deviceName, final String moduleName,
             final ObjectNode paths, final ArrayNode parentPathParams, final EffectiveModelContext schemaContext,
             final boolean isConfig, final String parentName, final DefinitionNames definitionNames,
-            final OAversion oaversion, final String resourcePath) {
+            final String resourcePath) {
         LOG.debug("Adding path: [{}]", resourcePath);
 
         final ArrayNode pathParams = JsonUtil.copy(parentPathParams);
@@ -386,16 +371,14 @@ public abstract class BaseYangSwaggerGenerator {
         }
 
         final ObjectNode path = JsonNodeFactory.instance.objectNode();
-        path.setAll(operations(node, moduleName, deviceName, pathParams, isConfig, parentName, definitionNames,
-                oaversion));
+        path.setAll(operations(node, moduleName, deviceName, pathParams, isConfig, parentName, definitionNames));
         paths.set(resourcePath, path);
 
         if (node instanceof ActionNodeContainer) {
             ((ActionNodeContainer) node).getActions().forEach(actionDef -> {
                 final String resolvedPath = "rests/operations" + resourcePath.substring(11)
                         + "/" + resolvePathArgumentsName(actionDef.getQName(), node.getQName(), schemaContext);
-                addOperations(actionDef, moduleName, deviceName, paths, parentName, definitionNames, oaversion,
-                        resolvedPath);
+                addOperations(actionDef, moduleName, deviceName, paths, parentName, definitionNames, resolvedPath);
             });
         }
 
@@ -403,11 +386,10 @@ public abstract class BaseYangSwaggerGenerator {
             if (childNode instanceof ListSchemaNode || childNode instanceof ContainerSchemaNode) {
                 final String newParent = parentName + "_" + node.getQName().getLocalName();
                 final String localName = resolvePathArgumentsName(childNode.getQName(), node.getQName(), schemaContext);
-                final String newResourcePath = resourcePath + "/" + createPath(childNode, pathParams, oaversion,
-                        localName);
+                final String newResourcePath = resourcePath + "/" + createPath(childNode, pathParams, localName);
                 final boolean newIsConfig = isConfig && childNode.isConfiguration();
                 addPaths(childNode, deviceName, moduleName, paths, pathParams, schemaContext,
-                    newIsConfig, newParent, definitionNames, oaversion, newResourcePath);
+                    newIsConfig, newParent, definitionNames, newResourcePath);
             }
         }
     }
@@ -423,39 +405,38 @@ public abstract class BaseYangSwaggerGenerator {
 
     private static Map<String, ObjectNode> operations(final DataSchemaNode node, final String moduleName,
             final Optional<String> deviceName, final ArrayNode pathParams, final boolean isConfig,
-            final String parentName, final DefinitionNames definitionNames, final OAversion oaversion) {
+            final String parentName, final DefinitionNames definitionNames) {
         final Map<String, ObjectNode> operations = new HashMap<>();
         final String discriminator = definitionNames.getDiscriminator(node);
 
         final String nodeName = node.getQName().getLocalName();
 
         final String defName = parentName + "_" + nodeName + TOP + discriminator;
-        final ObjectNode get = buildGet(node, moduleName, deviceName, pathParams, defName, isConfig, oaversion);
+        final ObjectNode get = buildGet(node, moduleName, deviceName, pathParams, defName, isConfig);
         operations.put("get", get);
 
 
         if (isConfig) {
             final ObjectNode put = buildPut(parentName, nodeName, discriminator, moduleName, deviceName,
-                    node.getDescription().orElse(""), pathParams, oaversion);
+                    node.getDescription().orElse(""), pathParams);
             operations.put("put", put);
 
             final ObjectNode patch = buildPatch(parentName, nodeName, moduleName, deviceName,
-                    node.getDescription().orElse(""), pathParams, oaversion);
+                    node.getDescription().orElse(""), pathParams);
             operations.put("patch", patch);
 
-            final ObjectNode delete = buildDelete(node, moduleName, deviceName, pathParams, oaversion);
+            final ObjectNode delete = buildDelete(node, moduleName, deviceName, pathParams);
             operations.put("delete", delete);
 
             operations.put("post", buildPost(parentName, nodeName, discriminator, moduleName, deviceName,
-                    node.getDescription().orElse(""), pathParams, oaversion));
+                    node.getDescription().orElse(""), pathParams));
         }
         return operations;
     }
 
     protected abstract ListPathBuilder newListPathBuilder();
 
-    private String createPath(final DataSchemaNode schemaNode, final ArrayNode pathParams,
-            final OAversion oaversion, final String localName) {
+    private String createPath(final DataSchemaNode schemaNode, final ArrayNode pathParams, final String localName) {
         final StringBuilder path = new StringBuilder();
         path.append(localName);
 
@@ -473,7 +454,7 @@ public abstract class BaseYangSwaggerGenerator {
                 ((DataNodeContainer) schemaNode).findDataChildByName(listKey).flatMap(DataSchemaNode::getDescription)
                         .ifPresent(desc -> pathParam.put("description", desc));
 
-                final ObjectNode typeParent = getTypeParentNode(pathParam, oaversion);
+                final ObjectNode typeParent = getTypeParentNode(pathParam);
 
                 typeParent.put("type", "string");
                 pathParam.put("in", "path");
@@ -534,10 +515,9 @@ public abstract class BaseYangSwaggerGenerator {
 
     private static void addOperations(final OperationDefinition operDef, final String moduleName,
             final Optional<String> deviceName, final ObjectNode paths, final String parentName,
-            final DefinitionNames definitionNames, final OAversion oaversion, final String resourcePath) {
+            final DefinitionNames definitionNames, final String resourcePath) {
         final ObjectNode operations = JsonNodeFactory.instance.objectNode();
-        operations.set("post", buildPostOperation(operDef, moduleName, deviceName, parentName, definitionNames,
-                oaversion));
+        operations.set("post", buildPostOperation(operDef, moduleName, deviceName, parentName, definitionNames));
         paths.set(resourcePath, operations);
     }
 
index a63d3afb5d9cfd025e07bb3f01e1c31cba219171..abaa7204e014c82d8a160015575658cd53f56ffa 100644 (file)
@@ -8,13 +8,13 @@
 package org.opendaylight.netconf.sal.rest.doc.impl;
 
 import static org.opendaylight.netconf.sal.rest.doc.impl.BaseYangSwaggerGenerator.MODULE_NAME_SUFFIX;
+import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.COMPONENTS_PREFIX;
 import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.CONFIG;
 import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.NAME_KEY;
 import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.POST_SUFFIX;
 import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.TOP;
 import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.XML_KEY;
 import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.XML_SUFFIX;
-import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.getAppropriateModelPrefix;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
@@ -34,7 +34,6 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
 import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
@@ -144,33 +143,33 @@ public class DefinitionGenerator {
 
 
     public ObjectNode convertToJsonSchema(final Module module, final EffectiveModelContext schemaContext,
-            final ObjectNode definitions, final DefinitionNames definitionNames,  final OAversion oaversion,
-            final boolean isForSingleModule) throws IOException {
+            final ObjectNode definitions, final DefinitionNames definitionNames, final boolean isForSingleModule)
+            throws IOException {
         topLevelModule = module;
 
         processIdentities(module, definitions, definitionNames, schemaContext);
-        processContainersAndLists(module, definitions, definitionNames, schemaContext, oaversion);
-        processRPCs(module, definitions, definitionNames, schemaContext, oaversion);
+        processContainersAndLists(module, definitions, definitionNames, schemaContext);
+        processRPCs(module, definitions, definitionNames, schemaContext);
 
         if (isForSingleModule) {
-            processModule(module, definitions, definitionNames, schemaContext, oaversion);
+            processModule(module, definitions, definitionNames, schemaContext);
         }
 
         return definitions;
     }
 
     public ObjectNode convertToJsonSchema(final Module module, final EffectiveModelContext schemaContext,
-            final DefinitionNames definitionNames, final OAversion oaversion, final boolean isForSingleModule)
+            final DefinitionNames definitionNames, final boolean isForSingleModule)
             throws IOException {
         final ObjectNode definitions = JsonNodeFactory.instance.objectNode();
         if (isForSingleModule) {
             definitionNames.addUnlinkedName(module.getName() + MODULE_NAME_SUFFIX);
         }
-        return convertToJsonSchema(module, schemaContext, definitions, definitionNames, oaversion, isForSingleModule);
+        return convertToJsonSchema(module, schemaContext, definitions, definitionNames, isForSingleModule);
     }
 
     private void processModule(final Module module, final ObjectNode definitions, final DefinitionNames definitionNames,
-            final EffectiveModelContext schemaContext, final OAversion oaversion) {
+            final EffectiveModelContext schemaContext) {
         final ObjectNode definition = JsonNodeFactory.instance.objectNode();
         final ObjectNode properties = JsonNodeFactory.instance.objectNode();
         final ArrayNode required = JsonNodeFactory.instance.arrayNode();
@@ -185,7 +184,7 @@ public class DefinitionGenerator {
                     for (final DataSchemaNode childNode : ((DataNodeContainer) node).getChildNodes()) {
                         final ObjectNode childNodeProperties = JsonNodeFactory.instance.objectNode();
 
-                        final String ref = getAppropriateModelPrefix(oaversion)
+                        final String ref = COMPONENTS_PREFIX
                                 + moduleName + CONFIG
                                 + "_" + localName
                                 + definitionNames.getDiscriminator(node);
@@ -213,7 +212,7 @@ public class DefinitionGenerator {
                         of processLeafNode).
                      */
                     processLeafNode((LeafSchemaNode) node, localName, properties, required, stack,
-                            definitions, definitionNames, oaversion);
+                            definitions, definitionNames);
                 }
             }
             stack.exit();
@@ -228,8 +227,7 @@ public class DefinitionGenerator {
     }
 
     private void processContainersAndLists(final Module module, final ObjectNode definitions,
-            final DefinitionNames definitionNames, final EffectiveModelContext schemaContext,
-            final OAversion oaversion)  throws IOException {
+            final DefinitionNames definitionNames, final EffectiveModelContext schemaContext)  throws IOException {
         final String moduleName = module.getName();
         final SchemaInferenceStack stack = SchemaInferenceStack.of(schemaContext);
         for (final DataSchemaNode childNode : module.getChildNodes()) {
@@ -238,57 +236,57 @@ public class DefinitionGenerator {
             if (childNode instanceof ContainerSchemaNode || childNode instanceof ListSchemaNode) {
                 if (childNode.isConfiguration()) {
                     processDataNodeContainer((DataNodeContainer) childNode, moduleName, definitions, definitionNames,
-                            true, stack, oaversion);
+                            true, stack);
                 }
                 processDataNodeContainer((DataNodeContainer) childNode, moduleName, definitions, definitionNames,
-                        false, stack, oaversion);
-                processActionNodeContainer(childNode, moduleName, definitions, definitionNames, stack, oaversion);
+                        false, stack);
+                processActionNodeContainer(childNode, moduleName, definitions, definitionNames, stack);
             }
             stack.exit();
         }
     }
 
     private void processActionNodeContainer(final DataSchemaNode childNode, final String moduleName,
-            final ObjectNode definitions, final DefinitionNames definitionNames, final SchemaInferenceStack stack,
-            final OAversion oaversion) throws IOException {
+            final ObjectNode definitions, final DefinitionNames definitionNames, final SchemaInferenceStack stack)
+            throws IOException {
         for (final ActionDefinition actionDef : ((ActionNodeContainer) childNode).getActions()) {
             stack.enterSchemaTree(actionDef.getQName());
-            processOperations(actionDef, moduleName, definitions, definitionNames, stack, oaversion);
+            processOperations(actionDef, moduleName, definitions, definitionNames, stack);
             stack.exit();
         }
     }
 
     private void processRPCs(final Module module, final ObjectNode definitions, final DefinitionNames definitionNames,
-            final EffectiveModelContext schemaContext, final OAversion oaversion) throws IOException {
+            final EffectiveModelContext schemaContext) throws IOException {
         final String moduleName = module.getName();
         final SchemaInferenceStack stack = SchemaInferenceStack.of(schemaContext);
         for (final RpcDefinition rpcDefinition : module.getRpcs()) {
             stack.enterSchemaTree(rpcDefinition.getQName());
-            processOperations(rpcDefinition, moduleName, definitions, definitionNames, stack, oaversion);
+            processOperations(rpcDefinition, moduleName, definitions, definitionNames, stack);
             stack.exit();
         }
     }
 
     private void processOperations(final OperationDefinition operationDef, final String parentName,
-            final ObjectNode definitions, final DefinitionNames definitionNames,
-            final SchemaInferenceStack stack, final OAversion oaversion) throws IOException {
+            final ObjectNode definitions, final DefinitionNames definitionNames, final SchemaInferenceStack stack)
+            throws IOException {
         final String operationName = operationDef.getQName().getLocalName();
         processOperationInputOutput(operationDef.getInput(), operationName, parentName, true, definitions,
-                definitionNames, stack, oaversion);
+                definitionNames, stack);
         processOperationInputOutput(operationDef.getOutput(), operationName, parentName, false, definitions,
-                definitionNames, stack, oaversion);
+                definitionNames, stack);
     }
 
     private void processOperationInputOutput(final ContainerLike container, final String operationName,
             final String parentName, final boolean isInput, final ObjectNode definitions,
-            final DefinitionNames definitionNames, final SchemaInferenceStack stack, final OAversion oaversion)
+            final DefinitionNames definitionNames, final SchemaInferenceStack stack)
             throws IOException {
         stack.enterSchemaTree(container.getQName());
         if (!container.getChildNodes().isEmpty()) {
             final String filename = parentName + "_" + operationName + (isInput ? INPUT_SUFFIX : OUTPUT_SUFFIX);
             final ObjectNode childSchema = JsonNodeFactory.instance.objectNode();
             processChildren(childSchema, container.getChildNodes(), parentName, definitions, definitionNames,
-                    false, stack, oaversion);
+                    false, stack);
 
             childSchema.put(TYPE_KEY, OBJECT_TYPE);
             final ObjectNode xml = JsonNodeFactory.instance.objectNode();
@@ -299,16 +297,16 @@ public class DefinitionGenerator {
                     definitionNames.pickDiscriminator(container, List.of(filename, filename + TOP));
             definitions.set(filename + discriminator, childSchema);
 
-            processTopData(filename, discriminator, definitions, container, oaversion);
+            processTopData(filename, discriminator, definitions, container);
         }
         stack.exit();
     }
 
     private static ObjectNode processTopData(final String filename, final String discriminator,
-            final ObjectNode definitions, final SchemaNode schemaNode, final OAversion oaversion) {
+            final ObjectNode definitions, final SchemaNode schemaNode) {
         final ObjectNode dataNodeProperties = JsonNodeFactory.instance.objectNode();
         final String name = filename + discriminator;
-        final String ref = getAppropriateModelPrefix(oaversion) + name;
+        final String ref = COMPONENTS_PREFIX + name;
         final String topName = filename + TOP;
 
         if (schemaNode instanceof ListSchemaNode) {
@@ -373,7 +371,7 @@ public class DefinitionGenerator {
 
     private ObjectNode processDataNodeContainer(final DataNodeContainer dataNode, final String parentName,
             final ObjectNode definitions, final DefinitionNames definitionNames, final boolean isConfig,
-            final SchemaInferenceStack stack, final OAversion oaversion) throws IOException {
+            final SchemaInferenceStack stack) throws IOException {
         if (dataNode instanceof ListSchemaNode || dataNode instanceof ContainerSchemaNode) {
             final Collection<? extends DataSchemaNode> containerChildren = dataNode.getChildNodes();
             final SchemaNode schemaNode = (SchemaNode) dataNode;
@@ -382,7 +380,7 @@ public class DefinitionGenerator {
             final String nameAsParent = parentName + "_" + localName;
             final ObjectNode properties =
                     processChildren(childSchema, containerChildren, parentName + "_" + localName, definitions,
-                            definitionNames, isConfig, stack, oaversion);
+                            definitionNames, isConfig, stack);
 
             final String nodeName = parentName + (isConfig ? CONFIG : "") + "_" + localName;
             final String postNodeName = parentName + CONFIG + "_" + localName + POST_SUFFIX;
@@ -410,7 +408,7 @@ public class DefinitionGenerator {
                 definitions.set(truePostNodeName, postSchema);
 
                 final ObjectNode postXmlSchema = JsonNodeFactory.instance.objectNode();
-                postXmlSchema.put(REF_KEY, getAppropriateModelPrefix(oaversion) + truePostNodeName);
+                postXmlSchema.put(REF_KEY, COMPONENTS_PREFIX + truePostNodeName);
                 definitions.set(postXmlNodeName + discriminator, postXmlSchema);
             }
 
@@ -423,7 +421,7 @@ public class DefinitionGenerator {
             childSchema.set(XML_KEY, buildXmlParameter(schemaNode));
             definitions.set(defName, childSchema);
 
-            return processTopData(nodeName, discriminator, definitions, schemaNode, oaversion);
+            return processTopData(nodeName, discriminator, definitions, schemaNode);
         }
         return null;
     }
@@ -469,13 +467,12 @@ public class DefinitionGenerator {
      */
     private ObjectNode processChildren(final ObjectNode parentNode, final Collection<? extends DataSchemaNode> nodes,
             final String parentName, final ObjectNode definitions, final DefinitionNames definitionNames,
-            final boolean isConfig, final SchemaInferenceStack stack, final OAversion oaversion) throws IOException {
+            final boolean isConfig, final SchemaInferenceStack stack) throws IOException {
         final ObjectNode properties = JsonNodeFactory.instance.objectNode();
         final ArrayNode required = JsonNodeFactory.instance.arrayNode();
         for (final DataSchemaNode node : nodes) {
             if (!isConfig || node.isConfiguration()) {
-                processChildNode(node, parentName, definitions, definitionNames, isConfig, stack, properties,
-                        oaversion);
+                processChildNode(node, parentName, definitions, definitionNames, isConfig, stack, properties);
             }
         }
         parentNode.set(PROPERTIES_KEY, properties);
@@ -485,7 +482,7 @@ public class DefinitionGenerator {
 
     private void processChildNode(final DataSchemaNode node, final String parentName, final ObjectNode definitions,
             final DefinitionNames definitionNames, final boolean isConfig, final SchemaInferenceStack stack,
-            final ObjectNode properties, final OAversion oaversion) throws IOException {
+            final ObjectNode properties) throws IOException {
 
         stack.enterSchemaTree(node.getQName());
 
@@ -497,7 +494,7 @@ public class DefinitionGenerator {
 
         if (node instanceof LeafSchemaNode leaf) {
             processLeafNode(leaf, name, properties, JsonNodeFactory.instance.arrayNode(), stack, definitions,
-                    definitionNames, oaversion);
+                    definitionNames);
 
         } else if (node instanceof AnyxmlSchemaNode anyxml) {
             processAnyXMLNode(anyxml, name, properties, JsonNodeFactory.instance.arrayNode());
@@ -510,12 +507,12 @@ public class DefinitionGenerator {
             final ObjectNode property;
             if (node instanceof ListSchemaNode || node instanceof ContainerSchemaNode) {
                 property = processDataNodeContainer((DataNodeContainer) node, parentName, definitions,
-                        definitionNames, isConfig, stack, oaversion);
+                        definitionNames, isConfig, stack);
                 if (!isConfig) {
-                    processActionNodeContainer(node, parentName, definitions, definitionNames, stack, oaversion);
+                    processActionNodeContainer(node, parentName, definitions, definitionNames, stack);
                 }
             } else if (node instanceof LeafListSchemaNode leafList) {
-                property = processLeafListNode(leafList, stack, definitions, definitionNames, oaversion);
+                property = processLeafListNode(leafList, stack, definitions, definitionNames);
 
             } else if (node instanceof ChoiceSchemaNode choice) {
                 if (!choice.getCases().isEmpty()) {
@@ -525,7 +522,7 @@ public class DefinitionGenerator {
                     stack.enterSchemaTree(caseSchemaNode.getQName());
                     for (final DataSchemaNode childNode : caseSchemaNode.getChildNodes()) {
                         processChildNode(childNode, parentName, definitions, definitionNames, isConfig, stack,
-                                properties, oaversion);
+                                properties);
                     }
                     stack.exit();
                 }
@@ -543,7 +540,7 @@ public class DefinitionGenerator {
     }
 
     private ObjectNode processLeafListNode(final LeafListSchemaNode listNode, final SchemaInferenceStack stack,
-            final ObjectNode definitions, final DefinitionNames definitionNames, final OAversion oaversion) {
+            final ObjectNode definitions, final DefinitionNames definitionNames) {
         final ObjectNode props = JsonNodeFactory.instance.objectNode();
         props.put(TYPE_KEY, ARRAY_TYPE);
 
@@ -551,7 +548,7 @@ public class DefinitionGenerator {
         final Optional<ElementCountConstraint> optConstraint = listNode.getElementCountConstraint();
         processElementCount(optConstraint, props);
 
-        processTypeDef(listNode.getType(), listNode, itemsVal, stack, definitions, definitionNames, oaversion);
+        processTypeDef(listNode.getType(), listNode, itemsVal, stack, definitions, definitionNames);
         props.set(ITEMS_KEY, itemsVal);
 
         props.put(DESCRIPTION_KEY, listNode.getDescription().orElse(""));
@@ -581,7 +578,7 @@ public class DefinitionGenerator {
 
     private ObjectNode processLeafNode(final LeafSchemaNode leafNode, final String jsonLeafName,
             final ObjectNode properties, final ArrayNode required, final SchemaInferenceStack stack,
-            final ObjectNode definitions, final DefinitionNames definitionNames, final OAversion oaversion) {
+            final ObjectNode definitions, final DefinitionNames definitionNames) {
         final ObjectNode property = JsonNodeFactory.instance.objectNode();
 
         final String leafDescription = leafNode.getDescription().orElse("");
@@ -593,7 +590,7 @@ public class DefinitionGenerator {
             property.put(DESCRIPTION_KEY, leafDescription);
         }
 
-        processTypeDef(leafNode.getType(), leafNode, property, stack, definitions, definitionNames, oaversion);
+        processTypeDef(leafNode.getType(), leafNode, property, stack, definitions, definitionNames);
         properties.set(jsonLeafName, property);
         property.set(XML_KEY, buildXmlParameter(leafNode));
         processMandatory(leafNode, jsonLeafName, required);
@@ -637,7 +634,7 @@ public class DefinitionGenerator {
 
     private String processTypeDef(final TypeDefinition<?> leafTypeDef, final DataSchemaNode node,
             final ObjectNode property, final SchemaInferenceStack stack, final ObjectNode definitions,
-            final DefinitionNames definitionNames, final OAversion oaversion) {
+            final DefinitionNames definitionNames) {
         final String jsonType;
         if (leafTypeDef instanceof BinaryTypeDefinition) {
             jsonType = processBinaryType(property);
@@ -650,7 +647,7 @@ public class DefinitionGenerator {
 
         } else if (leafTypeDef instanceof IdentityrefTypeDefinition) {
             jsonType = processIdentityRefType((IdentityrefTypeDefinition) leafTypeDef, property, definitions,
-                    definitionNames, oaversion, stack.getEffectiveModelContext());
+                    definitionNames, stack.getEffectiveModelContext());
 
         } else if (leafTypeDef instanceof StringTypeDefinition) {
             jsonType = processStringType(leafTypeDef, property, node.getQName().getLocalName());
@@ -662,7 +659,7 @@ public class DefinitionGenerator {
             jsonType = OBJECT_TYPE;
         } else if (leafTypeDef instanceof LeafrefTypeDefinition) {
             return processTypeDef(stack.resolveLeafref((LeafrefTypeDefinition) leafTypeDef), node, property,
-                stack, definitions, definitionNames, oaversion);
+                stack, definitions, definitionNames);
         } else if (leafTypeDef instanceof BooleanTypeDefinition) {
             jsonType = BOOLEAN_TYPE;
             setDefaultValue(property, true);
@@ -707,8 +704,7 @@ public class DefinitionGenerator {
         return STRING_TYPE;
     }
 
-    private static String processEnumType(final EnumTypeDefinition enumLeafType,
-            final ObjectNode property) {
+    private static String processEnumType(final EnumTypeDefinition enumLeafType, final ObjectNode property) {
         final List<EnumPair> enumPairs = enumLeafType.getValues();
         final ArrayNode enumNames = new ArrayNode(JsonNodeFactory.instance);
         for (final EnumPair enumPair : enumPairs) {
@@ -721,7 +717,7 @@ public class DefinitionGenerator {
     }
 
     private String processIdentityRefType(final IdentityrefTypeDefinition leafTypeDef, final ObjectNode property,
-            final ObjectNode definitions, final DefinitionNames definitionNames, final OAversion oaversion,
+            final ObjectNode definitions, final DefinitionNames definitionNames,
             final EffectiveModelContext schemaContext) {
         final String definitionName;
         if (isImported(leafTypeDef)) {
@@ -730,7 +726,7 @@ public class DefinitionGenerator {
             final SchemaNode node = leafTypeDef.getIdentities().iterator().next();
             definitionName = node.getQName().getLocalName() + definitionNames.getDiscriminator(node);
         }
-        property.put(REF_KEY, getAppropriateModelPrefix(oaversion) + definitionName);
+        property.put(REF_KEY, COMPONENTS_PREFIX + definitionName);
         return STRING_TYPE;
     }
 
index 457acdd95c59af8f2ae0d65f3ee7a82654b23ee2..f44e6012082f6f35223ff17e0fa6993780942a15 100644 (file)
@@ -45,12 +45,11 @@ public final class WebInitializer implements AutoCloseable {
             .supportsSessions(true)
             .addServlet(ServletDetails.builder()
                 .servlet(servletSupport.createHttpServletBuilder(new ApiDocApplication(apiDocService)).build())
-                .addUrlPattern("/swagger2/apis/*")
                 .addUrlPattern("/openapi3/apis/*")
                 .build())
             .addResource(ResourceDetails.builder().name("/explorer").build());
 
-        webContextSecurer.requireAuthentication(webContextBuilder, "/swagger2/*", "/openapi3/*");
+        webContextSecurer.requireAuthentication(webContextBuilder, "/openapi3/*");
 
         registration = webServer.registerWebContext(webContextBuilder.build());
     }
index 40c4382308cf0902efa3ac80f05feafa7db6e949..b1254ade93bb5f85d6a7d631e4ed0e0d75b356bb 100644 (file)
@@ -22,7 +22,6 @@ import java.util.Optional;
 import javax.ws.rs.HttpMethod;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
 import org.opendaylight.netconf.sal.rest.doc.impl.DefinitionNames;
 import org.opendaylight.netconf.sal.rest.doc.util.JsonUtil;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -31,13 +30,10 @@ import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
 import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
 
 public final class OperationBuilder {
-    public static final String BODY = "body";
     public static final String CONFIG = "_config";
     public static final String CONFIG_QUERY_PARAM = "config";
-    public static final String CONSUMES_KEY = "consumes";
     public static final String CONTENT_KEY = "content";
     public static final String COMPONENTS_PREFIX = "#/components/schemas/";
-    public static final String DEFINITIONS_PREFIX = "#/definitions/";
     public static final String DESCRIPTION_KEY = "description";
     public static final String IN_KEY = "in";
     public static final String INPUT_KEY = "input";
@@ -80,7 +76,7 @@ public final class OperationBuilder {
 
     public static ObjectNode buildPost(final String parentName, final String nodeName, final String discriminator,
             final String moduleName, final Optional<String> deviceName, final String description,
-            final ArrayNode pathParams, final OAversion oaversion) {
+            final ArrayNode pathParams) {
         final ObjectNode value = JsonNodeFactory.instance.objectNode();
         value.put(DESCRIPTION_KEY, description);
         value.put(SUMMARY_KEY, buildSummaryValue(HttpMethod.POST, moduleName, deviceName, nodeName));
@@ -90,22 +86,21 @@ public final class OperationBuilder {
         final String cleanDefName = parentName + CONFIG + "_" + nodeName + POST_SUFFIX;
         final String defName = cleanDefName + discriminator;
         final String xmlDefName = cleanDefName + XML_SUFFIX + discriminator;
-        ref.put(REF_KEY, getAppropriateModelPrefix(oaversion) + defName);
-        insertRequestBodyParameter(parameters, value, defName, xmlDefName, nodeName + CONFIG, oaversion);
+        ref.put(REF_KEY, COMPONENTS_PREFIX + defName);
+        insertRequestBodyParameter(value, defName, xmlDefName, nodeName + CONFIG);
         value.set(PARAMETERS_KEY, parameters);
 
         final ObjectNode responses = JsonNodeFactory.instance.objectNode();
         responses.set(String.valueOf(Response.Status.CREATED.getStatusCode()),
-                buildResponse(Response.Status.CREATED.getReasonPhrase(), Optional.empty(), oaversion));
+                buildResponse(Response.Status.CREATED.getReasonPhrase(), Optional.empty()));
 
         value.set(RESPONSES_KEY, responses);
-        setConsumesIfNeeded(value, oaversion);
         return value;
     }
 
     public static ObjectNode buildGet(final DataSchemaNode node, final String moduleName,
             final Optional<String> deviceName, final ArrayNode pathParams, final String defName,
-            final boolean isConfig, final OAversion oaversion) {
+            final boolean isConfig) {
         final ObjectNode value = JsonNodeFactory.instance.objectNode();
         value.put(DESCRIPTION_KEY, node.getDescription().orElse(""));
         value.put(SUMMARY_KEY, buildSummaryValue(HttpMethod.GET, moduleName, deviceName,
@@ -113,22 +108,21 @@ public final class OperationBuilder {
         value.set(TAGS_KEY, buildTagsValue(deviceName, moduleName));
         final ArrayNode parameters = JsonUtil.copy(pathParams);
 
-        addQueryParameters(parameters, isConfig, oaversion);
+        addQueryParameters(parameters, isConfig);
 
         value.set(PARAMETERS_KEY, parameters);
 
         final ObjectNode responses = JsonNodeFactory.instance.objectNode();
         final ObjectNode schema = JsonNodeFactory.instance.objectNode();
-        schema.put(REF_KEY, getAppropriateModelPrefix(oaversion) + defName);
+        schema.put(REF_KEY, COMPONENTS_PREFIX + defName);
         responses.set(String.valueOf(Response.Status.OK.getStatusCode()),
-                buildResponse(Response.Status.OK.getReasonPhrase(), Optional.of(schema), oaversion));
+                buildResponse(Response.Status.OK.getReasonPhrase(), Optional.of(schema)));
 
         value.set(RESPONSES_KEY, responses);
         return value;
     }
 
-    private static void addQueryParameters(final ArrayNode parameters, final boolean isConfig,
-            final OAversion oaversion) {
+    private static void addQueryParameters(final ArrayNode parameters, final boolean isConfig) {
         final ObjectNode contentParam = JsonNodeFactory.instance.objectNode();
         final ArrayNode cases = JsonNodeFactory.instance.arrayNode();
         cases.add(NONCONFIG_QUERY_PARAM);
@@ -140,7 +134,7 @@ public final class OperationBuilder {
         contentParam.put(IN_KEY, QUERY);
         contentParam.put(NAME_KEY, CONTENT);
 
-        final ObjectNode typeParent = getTypeParentNode(contentParam, oaversion);
+        final ObjectNode typeParent = getTypeParentNode(contentParam);
         typeParent.put(TYPE_KEY, STRING);
         typeParent.set(ENUM_KEY, cases);
 
@@ -149,7 +143,7 @@ public final class OperationBuilder {
 
     public static ObjectNode buildPut(final String parentName, final String nodeName, final String discriminator,
             final String moduleName, final Optional<String> deviceName, final String description,
-            final ArrayNode pathParams, final OAversion oaversion) {
+            final ArrayNode pathParams) {
         final ObjectNode value = JsonNodeFactory.instance.objectNode();
         value.put(DESCRIPTION_KEY, description);
         value.put(SUMMARY_KEY, buildSummaryValue(HttpMethod.PUT, moduleName, deviceName, nodeName));
@@ -157,23 +151,21 @@ public final class OperationBuilder {
         final ArrayNode parameters = JsonUtil.copy(pathParams);
         final String defName = parentName + CONFIG + "_" + nodeName + TOP;
         final String xmlDefName = parentName + CONFIG + "_" + nodeName;
-        insertRequestBodyParameter(parameters, value, defName, xmlDefName, nodeName + CONFIG, oaversion);
+        insertRequestBodyParameter(value, defName, xmlDefName, nodeName + CONFIG);
         value.set(PARAMETERS_KEY, parameters);
 
         final ObjectNode responses = JsonNodeFactory.instance.objectNode();
         responses.set(String.valueOf(Response.Status.CREATED.getStatusCode()),
-                buildResponse(Response.Status.CREATED.getReasonPhrase(), Optional.empty(), oaversion));
+                buildResponse(Response.Status.CREATED.getReasonPhrase(), Optional.empty()));
         responses.set(String.valueOf(Response.Status.NO_CONTENT.getStatusCode()),
-                buildResponse("Updated", Optional.empty(), oaversion));
+                buildResponse("Updated", Optional.empty()));
 
         value.set(RESPONSES_KEY, responses);
-        setConsumesIfNeeded(value, oaversion);
         return value;
     }
 
     public static ObjectNode buildPatch(final String parentName, final String nodeName, final String moduleName,
-            final Optional<String> deviceName, final String description, final ArrayNode pathParams,
-            final OAversion oaversion) {
+            final Optional<String> deviceName, final String description, final ArrayNode pathParams) {
         final ObjectNode value = JsonNodeFactory.instance.objectNode();
         value.put(DESCRIPTION_KEY, description);
         value.put(SUMMARY_KEY, buildSummaryValue(HttpMethod.PATCH, moduleName, deviceName, nodeName));
@@ -181,22 +173,21 @@ public final class OperationBuilder {
         final ArrayNode parameters = JsonUtil.copy(pathParams);
         final String defName = parentName + CONFIG + "_" + nodeName + TOP;
         final String xmlDefName = parentName + CONFIG + "_" + nodeName;
-        insertRequestBodyParameter(parameters, value, defName, xmlDefName, nodeName + CONFIG, oaversion);
+        insertRequestBodyParameter(value, defName, xmlDefName, nodeName + CONFIG);
         value.set(PARAMETERS_KEY, parameters);
 
         final ObjectNode responses = JsonNodeFactory.instance.objectNode();
         responses.set(String.valueOf(Response.Status.OK.getStatusCode()),
-                buildResponse(Response.Status.OK.getReasonPhrase(), Optional.empty(), oaversion));
+                buildResponse(Response.Status.OK.getReasonPhrase(), Optional.empty()));
         responses.set(String.valueOf(Response.Status.NO_CONTENT.getStatusCode()),
-                buildResponse("Updated", Optional.empty(), oaversion));
+                buildResponse("Updated", Optional.empty()));
 
         value.set(RESPONSES_KEY, responses);
-        setConsumesIfNeeded(value, oaversion);
         return value;
     }
 
     public static ObjectNode buildDelete(final DataSchemaNode node, final String moduleName,
-            final Optional<String> deviceName, final ArrayNode pathParams, final OAversion oaversion) {
+            final Optional<String> deviceName, final ArrayNode pathParams) {
         final ObjectNode value = JsonNodeFactory.instance.objectNode();
         value.put(SUMMARY_KEY, buildSummaryValue(HttpMethod.DELETE, moduleName, deviceName,
                 node.getQName().getLocalName()));
@@ -207,15 +198,14 @@ public final class OperationBuilder {
 
         final ObjectNode responses = JsonNodeFactory.instance.objectNode();
         responses.set(String.valueOf(Response.Status.NO_CONTENT.getStatusCode()),
-                buildResponse("Deleted", Optional.empty(), oaversion));
+                buildResponse("Deleted", Optional.empty()));
 
         value.set(RESPONSES_KEY, responses);
         return value;
     }
 
     public static ObjectNode buildPostOperation(final OperationDefinition operDef, final String moduleName,
-            final Optional<String> deviceName, final String parentName, final DefinitionNames definitionNames,
-            final OAversion oaversion) {
+            final Optional<String> deviceName, final String parentName, final DefinitionNames definitionNames) {
         final ObjectNode postOperation = JsonNodeFactory.instance.objectNode();
         final ArrayNode parameters = JsonNodeFactory.instance.arrayNode();
         final String operName = operDef.getQName().getLocalName();
@@ -228,7 +218,7 @@ public final class OperationBuilder {
             final String clearDefName = parentName + "_" + operName + INPUT_SUFFIX;
             final String defName = clearDefName + discriminator;
             final String defTopName = clearDefName + TOP + discriminator;
-            insertRequestBodyParameter(parameters, postOperation, defTopName, defName, inputName, oaversion);
+            insertRequestBodyParameter(postOperation, defTopName, defName, inputName);
         } else {
             final ObjectNode payload = JsonNodeFactory.instance.objectNode();
             final ObjectNode jsonSchema = JsonNodeFactory.instance.objectNode();
@@ -238,33 +228,24 @@ public final class OperationBuilder {
             properties.set(INPUT_KEY, inputSchema);
             jsonSchema.put(TYPE_KEY, OBJECT);
             jsonSchema.set(PROPERTIES_KEY, properties);
-            if (oaversion.equals(OAversion.V3_0)) {
-                final ObjectNode content = JsonNodeFactory.instance.objectNode();
-                final ObjectNode jsonTypeValue = JsonNodeFactory.instance.objectNode();
-                jsonTypeValue.set(SCHEMA_KEY, jsonSchema);
-                content.set(MediaType.APPLICATION_JSON, jsonTypeValue);
-
-                final ObjectNode xmlSchema = JsonNodeFactory.instance.objectNode();
-                xmlSchema.put(TYPE_KEY, OBJECT);
-                final ObjectNode xml = JsonNodeFactory.instance.objectNode();
-                xml.put(NAME_KEY, INPUT);
-                xmlSchema.set(XML_KEY, xml);
-                final ObjectNode xmlTypeValue = JsonNodeFactory.instance.objectNode();
-                xmlTypeValue.set(SCHEMA_KEY, xmlSchema);
-                content.set(MediaType.APPLICATION_XML, xmlTypeValue);
-
-                payload.set(CONTENT_KEY, content);
-                payload.put(DESCRIPTION_KEY, inputName);
-                postOperation.set(REQUEST_BODY_KEY, payload);
-            } else {
-                payload.put(IN_KEY, BODY);
-                payload.put(NAME_KEY, inputName);
-                payload.set(SCHEMA_KEY, jsonSchema);
-                parameters.add(payload);
-            }
+            final ObjectNode content = JsonNodeFactory.instance.objectNode();
+            final ObjectNode jsonTypeValue = JsonNodeFactory.instance.objectNode();
+            jsonTypeValue.set(SCHEMA_KEY, jsonSchema);
+            content.set(MediaType.APPLICATION_JSON, jsonTypeValue);
+
+            final ObjectNode xmlSchema = JsonNodeFactory.instance.objectNode();
+            xmlSchema.put(TYPE_KEY, OBJECT);
+            final ObjectNode xml = JsonNodeFactory.instance.objectNode();
+            xml.put(NAME_KEY, INPUT);
+            xmlSchema.set(XML_KEY, xml);
+            final ObjectNode xmlTypeValue = JsonNodeFactory.instance.objectNode();
+            xmlTypeValue.set(SCHEMA_KEY, xmlSchema);
+            content.set(MediaType.APPLICATION_XML, xmlTypeValue);
 
+            payload.set(CONTENT_KEY, content);
+            payload.put(DESCRIPTION_KEY, inputName);
+            postOperation.set(REQUEST_BODY_KEY, payload);
         }
-        setConsumesIfNeeded(postOperation, oaversion);
         postOperation.set(PARAMETERS_KEY, parameters);
         final ObjectNode responses = JsonNodeFactory.instance.objectNode();
         final String description = String.format("RPC %s success", operName);
@@ -273,12 +254,12 @@ public final class OperationBuilder {
             final ObjectNode schema = JsonNodeFactory.instance.objectNode();
             final String defName = parentName + "_" + operName + OUTPUT_SUFFIX + TOP
                     + definitionNames.getDiscriminator(output);
-            schema.put(REF_KEY, getAppropriateModelPrefix(oaversion) + defName);
+            schema.put(REF_KEY, COMPONENTS_PREFIX + defName);
             responses.set(String.valueOf(Response.Status.OK.getStatusCode()), buildResponse(description,
-                    Optional.of(schema), oaversion));
+                    Optional.of(schema)));
         } else {
             responses.set(String.valueOf(Response.Status.NO_CONTENT.getStatusCode()), buildResponse(description,
-                    Optional.empty(), oaversion));
+                    Optional.empty()));
         }
         postOperation.set(RESPONSES_KEY, responses);
         postOperation.put(DESCRIPTION_KEY, operDef.getDescription().orElse(""));
@@ -287,70 +268,52 @@ public final class OperationBuilder {
         return postOperation;
     }
 
-    private static void insertRequestBodyParameter(final ArrayNode parameters, final ObjectNode operation,
-            final String defName, final String xmlDefName, final String name, final OAversion oaversion) {
+    private static void insertRequestBodyParameter(final ObjectNode operation, final String defName,
+            final String xmlDefName, final String name) {
         final ObjectNode payload = JsonNodeFactory.instance.objectNode();
-        if (oaversion.equals(OAversion.V3_0)) {
-            final ObjectNode content = JsonNodeFactory.instance.objectNode();
-            final JsonNode node = operation.get(SUMMARY_KEY);
-            if (node != null && node.asText().contains(HttpMethod.PATCH)) {
-                content.set("application/yang-data+json", buildMimeTypeValue(defName));
-                content.set("application/yang-data+xml", buildMimeTypeValue(xmlDefName));
-            } else {
-                content.set(MediaType.APPLICATION_JSON, buildMimeTypeValue(defName));
-                content.set(MediaType.APPLICATION_XML, buildMimeTypeValue(xmlDefName));
-            }
-            payload.set(CONTENT_KEY, content);
-            payload.put(DESCRIPTION_KEY, name);
-            operation.set(REQUEST_BODY_KEY, payload);
+        final ObjectNode content = JsonNodeFactory.instance.objectNode();
+        final JsonNode node = operation.get(SUMMARY_KEY);
+        if (node != null && node.asText().contains(HttpMethod.PATCH)) {
+            content.set("application/yang-data+json", buildMimeTypeValue(defName));
+            content.set("application/yang-data+xml", buildMimeTypeValue(xmlDefName));
         } else {
-            payload.put(IN_KEY, BODY);
-            payload.put(NAME_KEY, name);
-            payload.set(SCHEMA_KEY, buildRefSchema(defName, OAversion.V2_0));
-            parameters.add(payload);
+            content.set(MediaType.APPLICATION_JSON, buildMimeTypeValue(defName));
+            content.set(MediaType.APPLICATION_XML, buildMimeTypeValue(xmlDefName));
         }
+        payload.set(CONTENT_KEY, content);
+        payload.put(DESCRIPTION_KEY, name);
+        operation.set(REQUEST_BODY_KEY, payload);
     }
 
-    private static ObjectNode buildRefSchema(final String defName, final OAversion oaversion) {
+    private static ObjectNode buildRefSchema(final String defName) {
         final ObjectNode schema = JsonNodeFactory.instance.objectNode();
-        schema.put(REF_KEY, getAppropriateModelPrefix(oaversion) + defName);
+        schema.put(REF_KEY, COMPONENTS_PREFIX + defName);
         return schema;
     }
 
     private static ObjectNode buildMimeTypeValue(final String defName) {
         final ObjectNode mimeTypeValue = JsonNodeFactory.instance.objectNode();
-        mimeTypeValue.set(SCHEMA_KEY, buildRefSchema(defName, OAversion.V3_0));
+        mimeTypeValue.set(SCHEMA_KEY, buildRefSchema(defName));
         return mimeTypeValue;
     }
 
-    public static ObjectNode buildResponse(final String description, final Optional<ObjectNode> schema,
-            final OAversion oaversion) {
+    public static ObjectNode buildResponse(final String description, final Optional<ObjectNode> schema) {
         final ObjectNode response = JsonNodeFactory.instance.objectNode();
 
         if (schema.isPresent()) {
             final ObjectNode schemaValue = schema.get();
-            if (oaversion.equals(OAversion.V3_0)) {
-                final ObjectNode content = JsonNodeFactory.instance.objectNode();
-                final ObjectNode body = JsonNodeFactory.instance.objectNode();
-                for (final String mimeType : MIME_TYPES) {
-                    content.set(mimeType, body);
-                }
-                body.set(SCHEMA_KEY, schemaValue);
-                response.set(CONTENT_KEY, content);
-            } else {
-                response.set(SCHEMA_KEY, schemaValue);
+            final ObjectNode content = JsonNodeFactory.instance.objectNode();
+            final ObjectNode body = JsonNodeFactory.instance.objectNode();
+            for (final String mimeType : MIME_TYPES) {
+                content.set(mimeType, body);
             }
+            body.set(SCHEMA_KEY, schemaValue);
+            response.set(CONTENT_KEY, content);
         }
         response.put(DESCRIPTION_KEY, description);
         return response;
     }
 
-    private static void setConsumesIfNeeded(final ObjectNode operation, final OAversion oaversion) {
-        if (oaversion.equals(OAversion.V2_0)) {
-            operation.set(CONSUMES_KEY, CONSUMES_PUT_POST);
-        }
-    }
-
     private static String buildSummaryValue(final String httpMethod, final String moduleName,
             final Optional<String> deviceName, final String nodeName) {
         return httpMethod + SUMMARY_SEPARATOR + deviceName.map(s -> s + SUMMARY_SEPARATOR).orElse("")
@@ -363,19 +326,9 @@ public final class OperationBuilder {
         return tagsValue;
     }
 
-    public static String getAppropriateModelPrefix(final OAversion oaversion) {
-        if (oaversion.equals(OAversion.V3_0)) {
-            return COMPONENTS_PREFIX;
-        }
-        return DEFINITIONS_PREFIX;
-    }
-
-    public static ObjectNode getTypeParentNode(final ObjectNode parameter, final OAversion oaversion) {
-        if (oaversion.equals(OAversion.V3_0)) {
-            final ObjectNode schema = JsonNodeFactory.instance.objectNode();
-            parameter.set(SCHEMA_KEY, schema);
-            return schema;
-        }
-        return parameter;
+    public static ObjectNode getTypeParentNode(final ObjectNode parameter) {
+        final ObjectNode schema = JsonNodeFactory.instance.objectNode();
+        parameter.set(SCHEMA_KEY, schema);
+        return schema;
     }
 }
index 5287d7e675026acfee1e5f551d523f15f8bb3ffe..069171cc75f1c985cb5aa1066db75c3b570091be 100644 (file)
@@ -34,7 +34,6 @@ import javax.ws.rs.core.UriInfo;
 import org.opendaylight.mdsal.dom.api.DOMMountPointListener;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
 import org.opendaylight.netconf.sal.rest.doc.impl.BaseYangSwaggerGenerator;
 import org.opendaylight.netconf.sal.rest.doc.impl.DefinitionNames;
 import org.opendaylight.netconf.sal.rest.doc.swagger.CommonApiObject;
@@ -135,7 +134,7 @@ public class MountPointSwagger implements DOMMountPointListener, AutoCloseable {
     }
 
     public CommonApiObject getMountPointApi(final UriInfo uriInfo, final Long id, final String module,
-            final String revision, final OAversion oaversion) {
+            final String revision) {
         final YangInstanceIdentifier iid = getInstanceId(id);
         final EffectiveModelContext context = getSchemaContext(iid);
         final String urlPrefix = getYangMountUrl(iid);
@@ -149,12 +148,11 @@ public class MountPointSwagger implements DOMMountPointListener, AutoCloseable {
             return generateDataStoreApiDoc(uriInfo, urlPrefix, deviceName);
         }
         final SwaggerObject swaggerObject = swaggerGenerator.getApiDeclaration(module, revision, uriInfo, context,
-                urlPrefix, oaversion);
-        return BaseYangSwaggerGenerator.getAppropriateDoc(swaggerObject, oaversion);
+                urlPrefix);
+        return BaseYangSwaggerGenerator.convertToOpenApi(swaggerObject);
     }
 
-    public CommonApiObject getMountPointApi(final UriInfo uriInfo, final Long id, final Optional<Integer> pageNum,
-            final OAversion oaversion) {
+    public CommonApiObject getMountPointApi(final UriInfo uriInfo, final Long id, final Optional<Integer> pageNum) {
         final YangInstanceIdentifier iid = getInstanceId(id);
         final EffectiveModelContext context = getSchemaContext(iid);
         final String urlPrefix = getYangMountUrl(iid);
@@ -183,7 +181,7 @@ public class MountPointSwagger implements DOMMountPointListener, AutoCloseable {
         final SwaggerObject doc;
 
         final SwaggerObject swaggerObject = swaggerGenerator.getAllModulesDoc(uriInfo, range, context,
-                Optional.of(deviceName), urlPrefix, definitionNames, oaversion);
+                Optional.of(deviceName), urlPrefix, definitionNames);
 
         if (includeDataStore) {
             doc = generateDataStoreApiDoc(uriInfo, urlPrefix, deviceName);
@@ -194,7 +192,7 @@ public class MountPointSwagger implements DOMMountPointListener, AutoCloseable {
             doc = swaggerObject;
         }
 
-        return BaseYangSwaggerGenerator.getAppropriateDoc(doc, oaversion);
+        return BaseYangSwaggerGenerator.convertToOpenApi(doc);
     }
 
     private static String extractDeviceName(final YangInstanceIdentifier iid) {
index e749bea0143bda00eb8eb088a218c519a355c93a..bf98f8b90ada429492af8133e6bdf4965ef18295 100644 (file)
@@ -35,8 +35,7 @@ public final class ApiDocGeneratorRFC8040Test extends AbstractApiDocTest {
     @Test
     public void testPaths() {
         final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
-            ApiDocServiceImpl.OAversion.V2_0);
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT);
 
         assertEquals(List.of("/rests/data",
             "/rests/data/toaster2:toaster",
@@ -65,8 +64,7 @@ public final class ApiDocGeneratorRFC8040Test extends AbstractApiDocTest {
                 "/rests/data/toaster2:lst/lst1={key1},{key2}");
 
         final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
-            ApiDocServiceImpl.OAversion.V2_0);
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT);
 
         for (final String path : configPaths) {
             final JsonNode node = doc.getPaths().get(path);
@@ -84,48 +82,50 @@ public final class ApiDocGeneratorRFC8040Test extends AbstractApiDocTest {
     @Test
     public void testDefinitions() {
         final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
-            ApiDocServiceImpl.OAversion.V2_0);
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT);
 
         final ObjectNode definitions = doc.getDefinitions();
         assertNotNull(definitions);
 
         final JsonNode configLstTop = definitions.get("toaster2_config_lst_TOP");
         assertNotNull(configLstTop);
-        DocGenTestHelper.containsReferences(configLstTop, "lst", "#/definitions/toaster2_config_lst");
+        DocGenTestHelper.containsReferences(configLstTop, "lst", "#/components/schemas/toaster2_config_lst");
 
         final JsonNode configLst = definitions.get("toaster2_config_lst");
         assertNotNull(configLst);
-        DocGenTestHelper.containsReferences(configLst, "lst1", "#/definitions/toaster2_lst_config_lst1");
-        DocGenTestHelper.containsReferences(configLst, "cont1", "#/definitions/toaster2_lst_config_cont1");
+        DocGenTestHelper.containsReferences(configLst, "lst1", "#/components/schemas/toaster2_lst_config_lst1");
+        DocGenTestHelper.containsReferences(configLst, "cont1", "#/components/schemas/toaster2_lst_config_cont1");
 
         final JsonNode configLst1Top = definitions.get("toaster2_lst_config_lst1_TOP");
         assertNotNull(configLst1Top);
-        DocGenTestHelper.containsReferences(configLst1Top, "lst1", "#/definitions/toaster2_lst_config_lst1");
+        DocGenTestHelper.containsReferences(configLst1Top, "lst1", "#/components/schemas/toaster2_lst_config_lst1");
 
         final JsonNode configLst1 = definitions.get("toaster2_lst_config_lst1");
         assertNotNull(configLst1);
 
         final JsonNode configCont1Top = definitions.get("toaster2_lst_config_cont1_TOP");
         assertNotNull(configCont1Top);
-        DocGenTestHelper.containsReferences(configCont1Top, "cont1", "#/definitions/toaster2_lst_config_cont1");
+        DocGenTestHelper.containsReferences(configCont1Top, "cont1", "#/components/schemas/toaster2_lst_config_cont1");
 
         final JsonNode configCont1 = definitions.get("toaster2_lst_config_cont1");
         assertNotNull(configCont1);
-        DocGenTestHelper.containsReferences(configCont1, "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
-        DocGenTestHelper.containsReferences(configCont1, "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
+        DocGenTestHelper.containsReferences(configCont1, "cont11",
+            "#/components/schemas/toaster2_lst_cont1_config_cont11");
+        DocGenTestHelper.containsReferences(configCont1, "lst11",
+            "#/components/schemas/toaster2_lst_cont1_config_lst11");
 
         final JsonNode configCont11Top = definitions.get("toaster2_lst_cont1_config_cont11_TOP");
         assertNotNull(configCont11Top);
         DocGenTestHelper.containsReferences(configCont11Top,
-            "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
+            "cont11", "#/components/schemas/toaster2_lst_cont1_config_cont11");
 
         final JsonNode configCont11 = definitions.get("toaster2_lst_cont1_config_cont11");
         assertNotNull(configCont11);
 
         final JsonNode configLst11Top = definitions.get("toaster2_lst_cont1_config_lst11_TOP");
         assertNotNull(configLst11Top);
-        DocGenTestHelper.containsReferences(configLst11Top, "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
+        DocGenTestHelper.containsReferences(configLst11Top, "lst11",
+            "#/components/schemas/toaster2_lst_cont1_config_lst11");
 
         final JsonNode configLst11 = definitions.get("toaster2_lst_cont1_config_lst11");
         assertNotNull(configLst11);
@@ -137,14 +137,13 @@ public final class ApiDocGeneratorRFC8040Test extends AbstractApiDocTest {
     @Test
     public void testRPC() {
         final var module = CONTEXT.findModule(NAME_2, Revision.of(REVISION_DATE_2)).orElseThrow();
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
-            ApiDocServiceImpl.OAversion.V2_0);
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT);
         assertNotNull(doc);
 
         final ObjectNode definitions = doc.getDefinitions();
         final JsonNode inputTop = definitions.get("toaster_make-toast_input_TOP");
         assertNotNull(inputTop);
-        final String testString = "{\"input\":{\"$ref\":\"#/definitions/toaster_make-toast_input\"}}";
+        final String testString = "{\"input\":{\"$ref\":\"#/components/schemas/toaster_make-toast_input\"}}";
         assertEquals(testString, inputTop.get("properties").toString());
         final JsonNode input = definitions.get("toaster_make-toast_input");
         final JsonNode properties = input.get("properties");
@@ -155,8 +154,7 @@ public final class ApiDocGeneratorRFC8040Test extends AbstractApiDocTest {
     @Test
     public void testChoice() {
         final var module = CONTEXT.findModule(CHOICE_TEST_MODULE).orElseThrow();
-        final var doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
-                ApiDocServiceImpl.OAversion.V2_0);
+        final var doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT);
         assertNotNull(doc);
 
         final var definitions = doc.getDefinitions();
index 84feac48542ecb699104d1455329de867efdeb79..5c8c5605cdf04ef9c3dd65d3c542813ffcaf5733 100644 (file)
@@ -25,7 +25,6 @@ import org.junit.Test;
 import org.opendaylight.mdsal.dom.api.DOMMountPoint;
 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
 import org.opendaylight.netconf.sal.rest.doc.mountpoints.MountPointSwagger;
 import org.opendaylight.netconf.sal.rest.doc.swagger.SwaggerObject;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -73,8 +72,7 @@ public final class MountPointSwaggerTest extends AbstractApiDocTest {
         final UriInfo mockInfo = DocGenTestHelper.createMockUriInfo(HTTP_URL);
         swagger.onMountPointCreated(INSTANCE_ID); // add this ID into the list of mount points
 
-        final SwaggerObject mountPointApi = (SwaggerObject) swagger.getMountPointApi(mockInfo, 1L, "Datastores", "-",
-            OAversion.V2_0);
+        final SwaggerObject mountPointApi = (SwaggerObject) swagger.getMountPointApi(mockInfo, 1L, "Datastores", "-");
         assertNotNull("failed to find Datastore API", mountPointApi);
 
         final ObjectNode pathsObject = mountPointApi.getPaths();
index 461422ba9ea72dfbce562d62001f973de3312ea6..7287fed535eb813e2e8a3bb21756c5059705f890 100644 (file)
@@ -19,8 +19,7 @@ public final class SwaggerObjectTest extends AbstractApiDocTest {
     public void testConvertToJsonSchema() throws IOException {
         final var module = CONTEXT.findModule("opflex", Revision.of("2014-05-28")).orElseThrow();
         final DefinitionGenerator generator = new DefinitionGenerator();
-        final ObjectNode jsonObject = generator.convertToJsonSchema(module, CONTEXT, new DefinitionNames(),
-            ApiDocServiceImpl.OAversion.V2_0, true);
+        final ObjectNode jsonObject = generator.convertToJsonSchema(module, CONTEXT, new DefinitionNames(), true);
         assertNotNull(jsonObject);
     }
 
@@ -28,8 +27,7 @@ public final class SwaggerObjectTest extends AbstractApiDocTest {
     public void testActionTypes() throws IOException {
         final var module = CONTEXT.findModule("action-types").orElseThrow();
         final DefinitionGenerator generator = new DefinitionGenerator();
-        final ObjectNode jsonObject = generator.convertToJsonSchema(module, CONTEXT, new DefinitionNames(),
-            ApiDocServiceImpl.OAversion.V2_0, true);
+        final ObjectNode jsonObject = generator.convertToJsonSchema(module, CONTEXT, new DefinitionNames(), true);
         assertNotNull(jsonObject);
     }
 
@@ -37,8 +35,7 @@ public final class SwaggerObjectTest extends AbstractApiDocTest {
     public void testStringTypes() throws IOException {
         final var module = CONTEXT.findModule("string-types").orElseThrow();
         final DefinitionGenerator generator = new DefinitionGenerator();
-        final ObjectNode jsonObject = generator.convertToJsonSchema(module, CONTEXT, new DefinitionNames(),
-            ApiDocServiceImpl.OAversion.V2_0, true);
+        final ObjectNode jsonObject = generator.convertToJsonSchema(module, CONTEXT, new DefinitionNames(), true);
         assertNotNull(jsonObject);
     }
 }