Eliminate CommonApiObject
[netconf.git] / restconf / sal-rest-docgen / src / main / java / org / opendaylight / netconf / sal / rest / doc / impl / BaseYangOpenApiGenerator.java
index 97a461cbbba60ad3bc40600e11087c9b7c71e4d3..a2af3a3a4e6c39f4281d711f24ac7294196e8799 100644 (file)
@@ -40,17 +40,13 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.SortedSet;
 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.openapi.CommonApiObject;
 import org.opendaylight.netconf.sal.rest.doc.openapi.Components;
 import org.opendaylight.netconf.sal.rest.doc.openapi.Info;
 import org.opendaylight.netconf.sal.rest.doc.openapi.OpenApiObject;
-import org.opendaylight.netconf.sal.rest.doc.openapi.SecurityDefinitions;
 import org.opendaylight.netconf.sal.rest.doc.openapi.SecuritySchemes;
 import org.opendaylight.netconf.sal.rest.doc.openapi.Server;
-import org.opendaylight.netconf.sal.rest.doc.openapi.SwaggerObject;
 import org.opendaylight.netconf.sal.rest.doc.util.JsonUtil;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Revision;
@@ -74,19 +70,14 @@ public abstract class BaseYangOpenApiGenerator {
     private static final Logger LOG = LoggerFactory.getLogger(BaseYangOpenApiGenerator.class);
 
     private static final String API_VERSION = "1.0.0";
-    private static final String SWAGGER_VERSION = "2.0";
     private static final String OPEN_API_VERSION = "3.0.3";
     private static final ObjectMapper MAPPER = new ObjectMapper();
-    private static final List<String> PRODUCES = List.of(MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON);
 
     private final DefinitionGenerator jsonConverter = new DefinitionGenerator();
     private final DOMSchemaService schemaService;
 
     public static final String BASE_PATH = "/";
     public static final String MODULE_NAME_SUFFIX = "_module";
-
-    private static final ObjectNode SWAGGER_BASIC_AUTH = JsonNodeFactory.instance.objectNode()
-            .put("type", "basic");
     private static final ObjectNode OPEN_API_BASIC_AUTH = JsonNodeFactory.instance.objectNode()
             .put("type", "http")
             .put("scheme", "basic");
@@ -101,13 +92,13 @@ public abstract class BaseYangOpenApiGenerator {
         this.schemaService = schemaService.orElse(null);
     }
 
-    public SwaggerObject getAllModulesDoc(final UriInfo uriInfo, final DefinitionNames definitionNames) {
+    public OpenApiObject 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);
     }
 
-    public SwaggerObject getAllModulesDoc(final UriInfo uriInfo, final Optional<Range<Integer>> range,
+    public OpenApiObject getAllModulesDoc(final UriInfo uriInfo, final Optional<Range<Integer>> range,
             final EffectiveModelContext schemaContext, final Optional<String> deviceName, final String context,
             final DefinitionNames definitionNames) {
         final String schema = createSchemaFromUriInfo(uriInfo);
@@ -118,7 +109,7 @@ public abstract class BaseYangOpenApiGenerator {
         }
 
         final String title = name + " modules of RESTCONF";
-        final SwaggerObject doc = createSwaggerObject(schema, host, BASE_PATH, title);
+        final OpenApiObject doc = createOpenApiObject(schema, host, BASE_PATH, title);
         doc.setDefinitions(JsonNodeFactory.instance.objectNode());
         doc.setPaths(JsonNodeFactory.instance.objectNode());
 
@@ -127,7 +118,7 @@ public abstract class BaseYangOpenApiGenerator {
         return doc;
     }
 
-    public void fillDoc(final SwaggerObject doc, final Optional<Range<Integer>> range,
+    public void fillDoc(final OpenApiObject doc, final Optional<Range<Integer>> range,
             final EffectiveModelContext schemaContext, final String context, final Optional<String> deviceName,
             final DefinitionNames definitionNames) {
         final SortedSet<Module> modules = getSortedModules(schemaContext);
@@ -143,7 +134,7 @@ public abstract class BaseYangOpenApiGenerator {
 
             LOG.debug("Working on [{},{}]...", module.getName(), revisionString);
 
-            getSwaggerDocSpec(module, context, deviceName, schemaContext, definitionNames, doc, false);
+            getOpenApiDocSpec(module, context, deviceName, schemaContext, definitionNames, doc, false);
         }
     }
 
@@ -172,14 +163,14 @@ public abstract class BaseYangOpenApiGenerator {
         }
     }
 
-    public CommonApiObject getApiDeclaration(final String module, final String revision, final UriInfo uriInfo) {
+    public OpenApiObject 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, "");
-        return convertToOpenApi(doc);
+        final OpenApiObject doc = getApiDeclaration(module, revision, uriInfo, schemaContext, "");
+        return doc;
     }
 
-    public SwaggerObject getApiDeclaration(final String moduleName, final String revision, final UriInfo uriInfo,
+    public OpenApiObject getApiDeclaration(final String moduleName, final String revision, final UriInfo uriInfo,
             final EffectiveModelContext schemaContext, final String context) {
         final Optional<Revision> rev;
 
@@ -196,12 +187,12 @@ public abstract class BaseYangOpenApiGenerator {
         return getApiDeclaration(module, uriInfo, context, schemaContext);
     }
 
-    public SwaggerObject getApiDeclaration(final Module module, final UriInfo uriInfo, final String context,
+    public OpenApiObject getApiDeclaration(final Module module, final UriInfo uriInfo, final String context,
             final EffectiveModelContext schemaContext) {
         final String schema = createSchemaFromUriInfo(uriInfo);
         final String host = createHostFromUriInfo(uriInfo);
 
-        return getSwaggerDocSpec(module, schema, host, BASE_PATH, context, schemaContext);
+        return getOpenApiDocSpec(module, schema, host, BASE_PATH, context, schemaContext);
     }
 
     public String createHostFromUriInfo(final UriInfo uriInfo) {
@@ -217,15 +208,15 @@ public abstract class BaseYangOpenApiGenerator {
         return uriInfo.getBaseUri().getScheme();
     }
 
-    public SwaggerObject getSwaggerDocSpec(final Module module, final String schema, final String host,
+    public OpenApiObject getOpenApiDocSpec(final Module module, final String schema, final String host,
             final String basePath, final String context, final EffectiveModelContext schemaContext) {
-        final SwaggerObject doc = createSwaggerObject(schema, host, basePath, module.getName());
+        final OpenApiObject doc = createOpenApiObject(schema, host, basePath, module.getName());
         final DefinitionNames definitionNames = new DefinitionNames();
-        return getSwaggerDocSpec(module, context, Optional.empty(), schemaContext, definitionNames, doc, true);
+        return getOpenApiDocSpec(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 DefinitionNames definitionNames, final SwaggerObject doc,
+    public OpenApiObject getOpenApiDocSpec(final Module module, final String context, final Optional<String> deviceName,
+            final EffectiveModelContext schemaContext, final DefinitionNames definitionNames, final OpenApiObject doc,
             final boolean isForSingleModule) {
         final ObjectNode definitions;
 
@@ -314,35 +305,20 @@ public abstract class BaseYangOpenApiGenerator {
         }
     }
 
-    public SwaggerObject createSwaggerObject(final String schema, final String host, final String basePath,
-            final String title) {
-        final SwaggerObject doc = new SwaggerObject();
-        doc.setSwagger(SWAGGER_VERSION);
+    public OpenApiObject createOpenApiObject(final String schema, final String host, final String basePath,
+                final String title) {
+        final OpenApiObject doc = new OpenApiObject();
+        doc.setOpenapi(OPEN_API_VERSION);
         final Info info = new Info();
         info.setTitle(title);
         info.setVersion(API_VERSION);
         doc.setInfo(info);
-        doc.setSchemes(ImmutableList.of(schema));
-        doc.setHost(host);
-        doc.setBasePath(basePath);
-        doc.setProduces(PRODUCES);
-        doc.setSecurityDefinitions(new SecurityDefinitions(SWAGGER_BASIC_AUTH));
+        doc.setServers(convertToServers(ImmutableList.of(schema), host, basePath));
+        doc.setComponents(new Components(doc.getDefinitions(), new SecuritySchemes(OPEN_API_BASIC_AUTH)));
         doc.setSecurity(SECURITY);
         return doc;
     }
 
-    public static OpenApiObject convertToOpenApi(final SwaggerObject swaggerObject) {
-        final OpenApiObject doc = new OpenApiObject();
-        doc.setOpenapi(OPEN_API_VERSION);
-        doc.setInfo(swaggerObject.getInfo());
-        doc.setServers(convertToServers(swaggerObject.getSchemes(), swaggerObject.getHost(),
-                swaggerObject.getBasePath()));
-        doc.setPaths(swaggerObject.getPaths());
-        doc.setComponents(new Components(swaggerObject.getDefinitions(), new SecuritySchemes(OPEN_API_BASIC_AUTH)));
-        doc.setSecurity(swaggerObject.getSecurity());
-        return doc;
-    }
-
     private static List<Server> convertToServers(final List<String> schemes, final String host, final String basePath) {
         return ImmutableList.of(new Server(schemes.get(0) + "://" + host + basePath));
     }