Merge "Chsnge to OpenApi 3.0"
[cps.git] / cps-rest / src / main / java / org / onap / cps / rest / controller / AdminRestController.java
index a29f8d2..369c94d 100755 (executable)
@@ -1,6 +1,6 @@
 /*
  *  ============LICENSE_START=======================================================
- *  Copyright (C) 2020-2022 Nordix Foundation
+ *  Copyright (C) 2020-2023 Nordix Foundation
  *  Modifications Copyright (C) 2020-2021 Bell Canada.
  *  Modifications Copyright (C) 2021 Pantheon.tech
  *  Modifications Copyright (C) 2022 TechMahindra Ltd.
@@ -26,6 +26,7 @@ package org.onap.cps.rest.controller;
 import static org.onap.cps.rest.utils.MultipartFileUtil.extractYangResourcesMap;
 import static org.onap.cps.spi.CascadeDeleteAllowed.CASCADE_DELETE_PROHIBITED;
 
+import io.micrometer.core.annotation.Timed;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -68,6 +69,18 @@ public class AdminRestController implements CpsAdminApi {
         return new ResponseEntity<>(dataspaceName, HttpStatus.CREATED);
     }
 
+    /**
+     * Create a dataspace without returning any response body.
+     *
+     * @param dataspaceName dataspace name
+     * @return a {@Link ResponseEntity} of created dataspace name & {@link HttpStatus} CREATED
+     */
+    @Override
+    public ResponseEntity<Void> createDataspaceV2(@NotNull @Valid final String dataspaceName) {
+        cpsAdminService.createDataspace(dataspaceName);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
     /**
      * Delete a dataspace.
      *
@@ -75,7 +88,7 @@ public class AdminRestController implements CpsAdminApi {
      * @return a {@Link ResponseEntity} of {@link HttpStatus} NO_CONTENT
      */
     @Override
-    public ResponseEntity<Void> deleteDataspace(final String dataspaceName) {
+    public ResponseEntity<Void> deleteDataspace(final String apiVersion, final String dataspaceName) {
         cpsAdminService.deleteDataspace(dataspaceName);
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
@@ -83,41 +96,79 @@ public class AdminRestController implements CpsAdminApi {
     /**
      * Create a {@link SchemaSet}.
      *
-     * @param multipartFile multipart file
-     * @param schemaSetName schemaset name
      * @param dataspaceName dataspace name
+     * @param schemaSetName schemaset name
+     * @param multipartFile multipart file
      * @return a {@Link ResponseEntity} of created schemaset name & {@link HttpStatus} CREATED
      */
     @Override
-    public ResponseEntity<String> createSchemaSet(@NotNull @Valid final String schemaSetName,
-        final String dataspaceName, @Valid final MultipartFile multipartFile) {
+    public ResponseEntity<String> createSchemaSet(final String dataspaceName,
+                                                  @NotNull @Valid final String schemaSetName,
+                                                  final MultipartFile multipartFile) {
         cpsModuleService.createSchemaSet(dataspaceName, schemaSetName, extractYangResourcesMap(multipartFile));
         return new ResponseEntity<>(schemaSetName, HttpStatus.CREATED);
     }
 
+    /**
+     * Create a {@link SchemaSet}.
+     *
+     * @param dataspaceName dataspace name
+     * @param schemaSetName schemaset name
+     * @param multipartFile multipart file
+     * @return a {@Link ResponseEntity} of created schema set without any response body & {@link HttpStatus} CREATED
+     */
+    @Override
+    @Timed(value = "cps.rest.admin.controller.schemaset.create",
+        description = "Time taken to create schemaset from controller")
+    public ResponseEntity<Void> createSchemaSetV2(final String dataspaceName,
+                                                  @NotNull @Valid final String schemaSetName,
+                                                  final MultipartFile multipartFile) {
+        cpsModuleService.createSchemaSet(dataspaceName, schemaSetName, extractYangResourcesMap(multipartFile));
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
     /**
      * Get {@link SchemaSetDetails} based on dataspace name & {@link SchemaSet} name.
      *
+     * @param apiVersion api version
      * @param dataspaceName dataspace name
      * @param schemaSetName schemaset name
      * @return a {@Link ResponseEntity} of {@Link SchemaSetDetails} & {@link HttpStatus} OK
      */
     @Override
-    public ResponseEntity<SchemaSetDetails> getSchemaSet(final String dataspaceName, final String schemaSetName) {
+    public ResponseEntity<SchemaSetDetails> getSchemaSet(final String apiVersion,
+            final String dataspaceName, final String schemaSetName) {
         final var schemaSet = cpsModuleService.getSchemaSet(dataspaceName, schemaSetName);
         final var schemaSetDetails = cpsRestInputMapper.toSchemaSetDetails(schemaSet);
         return new ResponseEntity<>(schemaSetDetails, HttpStatus.OK);
     }
 
+    /**
+     * Get list of schema sets for a given dataspace name.
+     *
+     * @param apiVersion api version
+     * @param dataspaceName dataspace name
+     * @return a {@Link ResponseEntity} of schema sets & {@link HttpStatus} OK
+     */
+    @Override
+    public ResponseEntity<List<SchemaSetDetails>> getSchemaSets(final String apiVersion, final String dataspaceName) {
+        final Collection<SchemaSet> schemaSets = cpsModuleService.getSchemaSets(dataspaceName);
+        final List<SchemaSetDetails> schemaSetDetails = schemaSets.stream().map(cpsRestInputMapper::toSchemaSetDetails)
+                .collect(Collectors.toList());
+        return new ResponseEntity<>(schemaSetDetails, HttpStatus.OK);
+    }
+
     /**
      * Delete a {@link SchemaSet} based on given dataspace name & schemaset name.
      *
+     * @param apiVersion api version
      * @param dataspaceName dataspace name
      * @param schemaSetName schemaset name
      * @return a {@Link ResponseEntity} of {@link HttpStatus} NO_CONTENT
      */
     @Override
-    public ResponseEntity<Void> deleteSchemaSet(final String dataspaceName, final String schemaSetName) {
+    public ResponseEntity<Void> deleteSchemaSet(final String apiVersion,
+            final String dataspaceName, final String schemaSetName) {
         cpsModuleService.deleteSchemaSet(dataspaceName, schemaSetName, CASCADE_DELETE_PROHIBITED);
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
@@ -137,15 +188,32 @@ public class AdminRestController implements CpsAdminApi {
         return new ResponseEntity<>(anchorName, HttpStatus.CREATED);
     }
 
+    /**
+     * Create an anchor.
+     *
+     * @param dataspaceName dataspace name
+     * @param schemaSetName schema set name
+     * @param anchorName    anchorName
+     * @return a ResponseEntity without response body & {@link HttpStatus} CREATED
+     */
+    @Override
+    public ResponseEntity<Void> createAnchorV2(final String dataspaceName, @NotNull @Valid final String schemaSetName,
+        @NotNull @Valid final String anchorName) {
+        cpsAdminService.createAnchor(dataspaceName, schemaSetName, anchorName);
+        return new ResponseEntity<>(HttpStatus.CREATED);
+    }
+
     /**
      * Delete an {@link Anchor} based on given dataspace name & anchor name.
      *
+     * @param apiVersion api version
      * @param dataspaceName dataspace name
      * @param anchorName anchor name
      * @return a {@Link ResponseEntity} of {@link HttpStatus} NO_CONTENT
      */
     @Override
-    public ResponseEntity<Void> deleteAnchor(final String dataspaceName, final String anchorName) {
+    public ResponseEntity<Void> deleteAnchor(final String apiVersion,
+            final String dataspaceName, final String anchorName) {
         cpsAdminService.deleteAnchor(dataspaceName, anchorName);
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
@@ -153,12 +221,14 @@ public class AdminRestController implements CpsAdminApi {
     /**
      * Get an {@link Anchor} based on given dataspace name & anchor name.
      *
+     * @param apiVersion api version
      * @param dataspaceName dataspace name
      * @param anchorName anchor name
      * @return a {@Link ResponseEntity} of an {@Link AnchorDetails} & {@link HttpStatus} OK
      */
     @Override
-    public ResponseEntity<AnchorDetails> getAnchor(final String dataspaceName, final String anchorName) {
+    public ResponseEntity<AnchorDetails> getAnchor(final String apiVersion,
+            final String dataspaceName, final String anchorName) {
         final var anchor = cpsAdminService.getAnchor(dataspaceName, anchorName);
         final var anchorDetails = cpsRestInputMapper.toAnchorDetails(anchor);
         return new ResponseEntity<>(anchorDetails, HttpStatus.OK);
@@ -167,11 +237,13 @@ public class AdminRestController implements CpsAdminApi {
     /**
      *  Get all {@link Anchor} based on given dataspace name.
      *
+     * @param apiVersion api version
      * @param dataspaceName dataspace name
      * @return a {@Link ResponseEntity} of all {@Link AnchorDetails} & {@link HttpStatus} OK
      */
     @Override
-    public ResponseEntity<List<AnchorDetails>> getAnchors(final String dataspaceName) {
+    public ResponseEntity<List<AnchorDetails>> getAnchors(final String apiVersion,
+            final String dataspaceName) {
         final Collection<Anchor> anchors = cpsAdminService.getAnchors(dataspaceName);
         final List<AnchorDetails> anchorDetails = anchors.stream().map(cpsRestInputMapper::toAnchorDetails)
             .collect(Collectors.toList());
@@ -179,7 +251,7 @@ public class AdminRestController implements CpsAdminApi {
     }
 
     @Override
-    public ResponseEntity<List<DataspaceDetails>> getAllDataspaces() {
+    public ResponseEntity<List<DataspaceDetails>> getAllDataspaces(final String apiVersion) {
         final Collection<Dataspace> dataspaces = cpsAdminService.getAllDataspaces();
         final List<DataspaceDetails> dataspaceDetails = dataspaces.stream().map(cpsRestInputMapper::toDataspaceDetails)
                 .collect(Collectors.toList());
@@ -187,7 +259,7 @@ public class AdminRestController implements CpsAdminApi {
     }
 
     @Override
-    public ResponseEntity<DataspaceDetails> getDataspace(final String dataspaceName) {
+    public ResponseEntity<DataspaceDetails> getDataspace(final String apiVersion, final String dataspaceName) {
         final Dataspace dataspace = cpsAdminService.getDataspace(dataspaceName);
         final DataspaceDetails dataspaceDetails = cpsRestInputMapper.toDataspaceDetails(dataspace);
         return new ResponseEntity<>(dataspaceDetails, HttpStatus.OK);