Add ncmp endpoints to swagger-ui 94/123694/11
authorRenu Kumari <renu.kumari@bell.ca>
Mon, 30 Aug 2021 15:50:43 +0000 (11:50 -0400)
committerRenu Kumari <renu.kumari@bell.ca>
Wed, 1 Sep 2021 12:35:15 +0000 (08:35 -0400)
- added ncmp-enpoints to swagger-ui
- removed springfox dependencies
- removed Docket configuration as we are loading ui from openapi.yml
- removed endpoints which are not implemented
- Fixed ncmp basepath as per CPS-616

Issue-ID: CPS-601
Issue-ID: CPS-616
Signed-off-by: Renu Kumari <renu.kumari@bell.ca>
Change-Id: I03c7789f48a12d3ffd5fcb934d7ba6347d4044e4

22 files changed:
cps-application/src/main/resources/application.yml
cps-ncmp-rest/docs/openapi/ncmproxy.yml
cps-ncmp-rest/docs/openapi/openapi.yml
cps-ncmp-rest/pom.xml
cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/config/NetworkCmProxyConfig.java [deleted file]
cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/config/NetworkCmProxyConfigSpec.groovy [deleted file]
cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy
cps-ncmp-rest/src/test/resources/application.yml
cps-ncmp-service/src/test/resources/application.yml [deleted file]
cps-parent/pom.xml
cps-rest/docs/openapi/components.yml [moved from cps-rest/src/main/resources/static/components.yml with 98% similarity]
cps-rest/docs/openapi/cpsAdmin.yml [moved from cps-rest/src/main/resources/static/cpsAdmin.yml with 90% similarity]
cps-rest/docs/openapi/cpsData.yml [moved from cps-rest/src/main/resources/static/cpsData.yml with 90% similarity]
cps-rest/docs/openapi/cpsQuery.yml [moved from cps-rest/src/main/resources/static/cpsQuery.yml with 100% similarity]
cps-rest/docs/openapi/openapi.yml [moved from cps-rest/src/main/resources/static/openapi.yml with 92% similarity]
cps-rest/pom.xml
cps-rest/src/main/java/org/onap/cps/config/CpsConfig.java
cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java
cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java
cps-rest/src/test/groovy/org/onap/cps/config/CpsConfigSpec.groovy
docker-compose/README.md
docs/api/swagger/openapi.yml

index 39309d8..82c6e0a 100644 (file)
@@ -24,7 +24,7 @@ server:
 rest:\r
     api:\r
         cps-base-path: /cps/api\r
-        ncmp-base-path: /cps-ncmp/api\r
+        ncmp-base-path: /ncmp\r
 \r
 spring:\r
     main:\r
@@ -84,12 +84,17 @@ notification:
 \r
 springdoc:\r
     swagger-ui:\r
-        url: /openapi.yml\r
-        path: /swagger-ui/index.html\r
+        disable-swagger-default-url: true\r
+        urlsPrimaryName: cps-core\r
+        urls:\r
+            - name: cps-core\r
+              url: /api-docs/cps-core/openapi.yaml\r
+            - name: cps-ncmp\r
+              url: /api-docs/cps-ncmp/openapi.yaml\r
 \r
 security:\r
     # comma-separated uri patterns which do not require authorization\r
-    permit-uri: /manage/**,/swagger-ui/**,/swagger-resources/**,/v3/api-docs\r
+    permit-uri: /manage/**,/swagger-ui/**,/swagger-resources/**,/api-docs\r
     auth:\r
         username: ${CPS_USERNAME}\r
         password: ${CPS_PASSWORD}\r
index 8eed9b3..138337d 100755 (executable)
@@ -181,7 +181,7 @@ listNodeByCmHandleAndXpath:
 
 updateDmiRegistration:
   post:
-    description: Register a DMI Plugin with any new CM Handles.
+    description: Register a DMI Plugin with any new, updated or removed CM Handles.
     tags:
       - network-cm-proxy
     summary: DMI notifies NCMP of new CM Handles
index 0dfe3c8..8d8684a 100755 (executable)
@@ -1,6 +1,7 @@
 #  ============LICENSE_START=======================================================
 #  Copyright (C) 2021 Nordix Foundation
 #  Modifications Copyright (C) 2021 Pantheon.tech
+#  Modifications Copyright (C) 2021 Bell Canada
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -23,7 +24,7 @@ info:
   description: NCMP to CPS Proxy API
   version: "1.0"
 servers:
-  - url: //localhost:8088/
+  - url: /ncmp
 paths:
   /v1/cm-handles/{cm-handle}/node:
     $ref: 'ncmproxy.yml#/nodeByCmHandleAndXpath'
@@ -37,7 +38,7 @@ paths:
   /v1/cm-handles/{cm-handle}/nodes:
     $ref: 'ncmproxy.yml#/nodesByCmHandleAndXpath'
 
-  /ncmp-dmi/v1/ch:
+  /v1/ch:
     $ref: 'ncmproxy.yml#/updateDmiRegistration'
 
   /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-operational/{resourceIdentifier}:
index dbe1af0..d3de688 100644 (file)
@@ -2,6 +2,7 @@
 <!--
   ============LICENSE_START=======================================================
   Copyright (C) 2021 Nordix Foundation
+  Modifications Copyright (C) 2021 Bell Canada
   ================================================================================
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
         <groupId>io.swagger.core.v3</groupId>
         <artifactId>swagger-annotations</artifactId>
     </dependency>
-    <dependency>
-        <groupId>io.springfox</groupId>
-        <artifactId>springfox-boot-starter</artifactId>
-    </dependency>
     <!-- T E S T   D E P E N D E N C I E S -->
     <dependency>
         <groupId>org.codehaus.groovy</groupId>
             <artifactId>swagger-codegen-maven-plugin</artifactId>
             <executions>
                 <execution>
+                    <id>code-gen</id>
                     <goals>
                         <goal>generate</goal>
                     </goals>
                 </execution>
             </executions>
         </plugin>
+        <plugin>
+            <artifactId>maven-resources-plugin</artifactId>
+            <executions>
+                <execution>
+                    <id>copy-resources</id>
+                    <phase>compile</phase>
+                    <goals>
+                        <goal>copy-resources</goal>
+                    </goals>
+                    <configuration>
+                        <outputDirectory>${project.basedir}/target/classes/static/api-docs/cps-ncmp</outputDirectory>
+                        <resources>
+                            <resource>
+                                <directory>${project.basedir}/target/generated-sources/swagger/</directory>
+                                <includes>
+                                    <include>openapi.yaml</include>
+                                </includes>
+                            </resource>
+                        </resources>
+                    </configuration>
+                </execution>
+            </executions>
+        </plugin>
     </plugins>
 </build>
 </project>
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/config/NetworkCmProxyConfig.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/config/NetworkCmProxyConfig.java
deleted file mode 100644 (file)
index 300765d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 Pantheon.tech
- *  Modifications (C) 2021 Nordix Foundation
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.cps.ncmp.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-
-@Configuration
-public class NetworkCmProxyConfig {
-
-    /**
-     * Swagger-ui configuration.
-     */
-    @Bean("ncmp-docket")
-    public Docket api() {
-        return new Docket(DocumentationType.OAS_30)
-            .groupName("ncmp-docket")
-            .select()
-            .apis(RequestHandlerSelectors.any())
-            .paths(PathSelectors.any())
-            .build();
-    }
-
-}
\ No newline at end of file
diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/config/NetworkCmProxyConfigSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/config/NetworkCmProxyConfigSpec.groovy
deleted file mode 100644 (file)
index 4b0e256..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 highstreet technologies GmbH
- *  Modification Copyright (C) 2021 Nordix Foundation
- *  ================================================================================
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *  SPDX-License-Identifier: Apache-2.0
- *  ============LICENSE_END=========================================================
- */
-
-package org.onap.cps.ncmp.config
-
-import spock.lang.Specification
-import springfox.documentation.spring.web.plugins.Docket
-
-class NetworkCmProxyConfigSpec extends Specification {
-    def objectUnderTest = new NetworkCmProxyConfig()
-
-    def 'NetworkCmProxy configuration has a Docket API.'() {
-        expect: 'the NetworkCmProxy configuration has a Docket API'
-            objectUnderTest.api() instanceof Docket
-    }
-}
index 1a2d3a2..4ff0ca4 100644 (file)
@@ -3,6 +3,7 @@
  *  Copyright (C) 2021 Pantheon.tech
  *  Modification Copyright (C) 2021 highstreet technologies GmbH
  *  Modification Copyright (C) 2021 Nordix Foundation
+ *  Modification Copyright (C) 2021 Bell Canada.
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -42,7 +43,7 @@ import org.springframework.http.MediaType
 import org.springframework.test.web.servlet.MockMvc
 import spock.lang.Specification
 
-@WebMvcTest
+@WebMvcTest(NetworkCmProxyController)
 class NetworkCmProxyControllerSpec extends Specification {
 
     @Autowired
@@ -54,17 +55,8 @@ class NetworkCmProxyControllerSpec extends Specification {
     @SpringBean
     ObjectMapper objectMapper = new ObjectMapper()
 
-    @Value('${rest.api.ncmp-base-path}')
-    def basePath
-
-    def deprecatedDataNodeBaseEndPoint
-
-    def ncmpDmiEndpoint
-
-    def setup() {
-        deprecatedDataNodeBaseEndPoint = "$basePath/v1"
-        ncmpDmiEndpoint = "$basePath/ncmp-dmi/v1"
-    }
+    @Value('${rest.api.ncmp-base-path}/v1')
+    def ncmpBasePathV1
 
     def cmHandle = 'some handle'
     def xpath = 'some xpath'
@@ -75,7 +67,7 @@ class NetworkCmProxyControllerSpec extends Specification {
             def cpsPath = 'some cps-path'
             mockNetworkCmProxyDataService.queryDataNodes(cmHandle, cpsPath, expectedCpsDataServiceOption) >> [dataNode]
         and: 'the query endpoint'
-            def dataNodeEndpoint = "$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/nodes/query"
+            def dataNodeEndpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes/query"
         when: 'query data nodes API is invoked'
             def response = mvc.perform(get(dataNodeEndpoint)
                     .param('cps-path', cpsPath)
@@ -97,7 +89,7 @@ class NetworkCmProxyControllerSpec extends Specification {
             def jsonData = 'json data'
         when: 'post request is performed'
             def response = mvc.perform(
-                    post("$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/nodes")
+                    post("$ncmpBasePathV1/cm-handles/$cmHandle/nodes")
                             .contentType(MediaType.APPLICATION_JSON)
                             .content(jsonData)
                             .param('xpath', reqXpath)
@@ -119,7 +111,7 @@ class NetworkCmProxyControllerSpec extends Specification {
             def parentNodeXpath = 'parent node xpath'
         when: 'post request is performed'
             def response = mvc.perform(
-                    post("$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/list-node")
+                    post("$ncmpBasePathV1/cm-handles/$cmHandle/list-node")
                             .contentType(MediaType.APPLICATION_JSON)
                             .content(jsonData)
                             .param('xpath', parentNodeXpath)
@@ -134,7 +126,7 @@ class NetworkCmProxyControllerSpec extends Specification {
         given: 'json data'
             def jsonData = 'json data'
         and: 'the query endpoint'
-            def endpoint = "$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/nodes"
+            def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes"
         when: 'patch request is performed'
             def response = mvc.perform(
                     patch(endpoint)
@@ -152,7 +144,7 @@ class NetworkCmProxyControllerSpec extends Specification {
         given: 'json data'
             def jsonData = 'json data'
         and: 'the query endpoint'
-            def endpoint = "$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/nodes"
+            def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/nodes"
         when: 'put request is performed'
             def response = mvc.perform(
                     put(endpoint)
@@ -172,7 +164,7 @@ class NetworkCmProxyControllerSpec extends Specification {
             def dataNode = new DataNodeBuilder().withXpath(xpath).withLeaves(["leaf": "value"]).build()
             mockNetworkCmProxyDataService.getDataNode(cmHandle, xpath, OMIT_DESCENDANTS) >> dataNode
         and: 'the query endpoint'
-            def endpoint = "$deprecatedDataNodeBaseEndPoint/cm-handles/$cmHandle/node"
+            def endpoint = "$ncmpBasePathV1/cm-handles/$cmHandle/node"
         when: 'get request is performed through REST API'
             def response = mvc.perform(get(endpoint).param('xpath', xpath)).andReturn().response
         then: 'a success response is returned'
@@ -186,7 +178,7 @@ class NetworkCmProxyControllerSpec extends Specification {
             def jsonData = TestUtils.getResourceFileContent('dmi-registration.json')
         when: 'post request is performed'
             def response = mvc.perform(
-                post("$ncmpDmiEndpoint/ch")
+                post("$ncmpBasePathV1/ch")
                 .contentType(MediaType.APPLICATION_JSON)
                 .content(jsonData)
             ).andReturn().response
@@ -198,7 +190,7 @@ class NetworkCmProxyControllerSpec extends Specification {
 
     def 'Get Resource Data from pass-through operational.' () {
         given: 'resource data url'
-            def getUrl = "$basePath/v1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-operational" +
+            def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-operational" +
                     "/testResourceIdentifier?fields=testFields&depth=5"
         when: 'get data resource request is performed'
             def response = mvc.perform(
@@ -218,7 +210,7 @@ class NetworkCmProxyControllerSpec extends Specification {
 
     def 'Get Resource Data from pass-through running.' () {
         given: 'resource data url'
-            def getUrl = "$basePath/v1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
+            def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
                     "/testResourceIdentifier?fields=testFields&depth=5"
         and: 'ncmp service returns json object'
             mockNetworkCmProxyDataService.getResourceDataPassThroughRunningForCmHandle('testCmHandle',
@@ -240,7 +232,7 @@ class NetworkCmProxyControllerSpec extends Specification {
 
     def 'Create Resource Data from pass-through running using POST.' () {
         given: 'resource data url'
-            def getUrl = "$basePath/v1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
+            def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" +
                     "/testResourceIdentifier"
         when: 'get data resource request is performed'
             def response = mvc.perform(
index 8ffb882..848738a 100644 (file)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
 #  Copyright (C) 2021 Nordix Foundation
+#  Modifications Copyright (C) 2021 Bell Canada.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -18,5 +19,5 @@
 
 rest:
     api:
-        ncmp-base-path: /cps-ncmp/api
+        ncmp-base-path: /ncmp
 spring:
diff --git a/cps-ncmp-service/src/test/resources/application.yml b/cps-ncmp-service/src/test/resources/application.yml
deleted file mode 100644 (file)
index 8ffb882..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#  ============LICENSE_START=======================================================
-#  Copyright (C) 2021 Nordix Foundation
-#  ================================================================================
-#  Licensed under the Apache License, Version 2.0 (the "License");
-#  you may not use this file except in compliance with the License.
-#  You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-#
-#  SPDX-License-Identifier: Apache-2.0
-#  ============LICENSE_END=========================================================
-
-rest:
-    api:
-        ncmp-base-path: /cps-ncmp/api
-spring:
index 46594da..e886100 100755 (executable)
                     <groupId>io.swagger.codegen.v3</groupId>
                     <artifactId>swagger-codegen-maven-plugin</artifactId>
                     <version>3.0.27</version>
+                    <executions>
+                        <execution>
+                            <id>openapi-yaml-gen</id>
+                            <goals>
+                                <goal>generate</goal>
+                            </goals>
+                            <phase>compile</phase>
+                            <configuration>
+                                <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
+                                <language>openapi-yaml</language>
+                            </configuration>
+                        </execution>
+                    </executions>
                 </plugin>
                 <plugin>
                     <groupId>com.github.spotbugs</groupId>
similarity index 98%
rename from cps-rest/src/main/resources/static/components.yml
rename to cps-rest/docs/openapi/components.yml
index 75a6f99..3d2eb57 100644 (file)
@@ -12,6 +12,8 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
 # ============LICENSE_END=========================================================
 
 components:
@@ -46,10 +48,11 @@ components:
           example: Dataspace with name D1 does not exist.
 
     MultipartFile:
+      type: object
       required:
         - file
       properties:
-        multipartFile:
+        file:
           type: string
           description: multipartFile
           format: binary
similarity index 90%
rename from cps-rest/src/main/resources/static/cpsAdmin.yml
rename to cps-rest/docs/openapi/cpsAdmin.yml
index 35b2e4c..a022ef1 100644 (file)
@@ -12,6 +12,8 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
 # ============LICENSE_END=========================================================
 
 dataspaces:
@@ -33,28 +35,6 @@ dataspaces:
       '403':
         $ref: 'components.yml#/components/responses/Forbidden'
 
-dataspaceByDataspaceName:
-  delete:
-    description: Delete the given dataspace - DRAFT
-    tags:
-      - cps-admin
-    summary: Delete a dataspace
-    operationId: deleteDataspace
-    parameters:
-      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
-    responses:
-      '200':
-        $ref: 'components.yml#/components/responses/Ok'
-      '204':
-        $ref: 'components.yml#/components/responses/NoContent'
-      '400':
-        $ref: 'components.yml#/components/responses/BadRequest'
-      '401':
-        $ref: 'components.yml#/components/responses/Unauthorized'
-      '403':
-        $ref: 'components.yml#/components/responses/Forbidden'
-
-
 schemaSet:
   post:
     description: Create a new schema set in the given dataspace
similarity index 90%
rename from cps-rest/src/main/resources/static/cpsData.yml
rename to cps-rest/docs/openapi/cpsData.yml
index 77673cb..d456f44 100644 (file)
@@ -12,6 +12,8 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
 # ============LICENSE_END=========================================================
 
 nodeByDataspaceAndAnchor:
@@ -200,27 +202,4 @@ nodesByDataspaceAndAnchor:
       '401':
         $ref: 'components.yml#/components/responses/Unauthorized'
       '403':
-        $ref: 'components.yml#/components/responses/Forbidden'
-
-
-nodesByDataspace:
-  get:
-    description: Get all nodes for a given dataspace using an xpath or schema node identifier - DRAFT
-    tags:
-      - cps-data
-    summary: Get nodes
-    operationId: getNodesByDataspace
-    parameters:
-      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
-    responses:
-      '200':
-        $ref: 'components.yml#/components/responses/Ok'
-      '400':
-        $ref: 'components.yml#/components/responses/BadRequest'
-      '401':
-        $ref: 'components.yml#/components/responses/Unauthorized'
-      '403':
-        $ref: 'components.yml#/components/responses/Forbidden'
-      '404':
-        $ref: 'components.yml#/components/responses/NotFound'
-    x-codegen-request-body-name: requestBody
+        $ref: 'components.yml#/components/responses/Forbidden'
\ No newline at end of file
similarity index 92%
rename from cps-rest/src/main/resources/static/openapi.yml
rename to cps-rest/docs/openapi/openapi.yml
index 922cabb..f9881fb 100644 (file)
@@ -1,6 +1,7 @@
 #  ============LICENSE_START=======================================================
 #  Copyright (C) 2021 Nordix Foundation
 #  Modifications Copyright (C) 2021 Pantheon.tech
+#  Modifications Copyright (C) 2021 Bell Canada.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -40,15 +41,12 @@ tags:
   - name: cps-admin
     description: cps Admin
   - name: cps-data
-    description: cps Data 
+    description: cps Data
 paths:
 
   /v1/dataspaces:
     $ref: 'cpsAdmin.yml#/dataspaces'
 
-  /v1/dataspaces/{dataspace-name}:
-    $ref: 'cpsAdmin.yml#/dataspaceByDataspaceName'
-
   /v1/dataspaces/{dataspace-name}/anchors:
     $ref: 'cpsAdmin.yml#/anchorsByDataspace'
 
@@ -70,8 +68,5 @@ paths:
   /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/list-nodes:
     $ref: 'cpsData.yml#/listNodeByDataspaceAndAnchor'
 
-  /v1/dataspaces/{dataspace-name}/nodes:
-    $ref: 'cpsData.yml#/nodesByDataspace'
-
   /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes/query:
     $ref: 'cpsQuery.yml#/nodesByDataspaceAndAnchorAndCpsPath'
index 9e29074..c4af380 100755 (executable)
@@ -15,6 +15,8 @@
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
+
+  SPDX-License-Identifier: Apache-2.0
   ============LICENSE_END=========================================================
 -->
 
             <groupId>io.swagger.core.v3</groupId>
             <artifactId>swagger-annotations</artifactId>
         </dependency>
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-boot-starter</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.springdoc</groupId>
             <artifactId>springdoc-openapi-ui</artifactId>
                 <artifactId>swagger-codegen-maven-plugin</artifactId>
                 <executions>
                     <execution>
+                        <id>code-gen</id>
                         <goals>
                             <goal>generate</goal>
                         </goals>
                         <configuration>
-                            <inputSpec>${project.basedir}/src/main/resources/static/openapi.yml</inputSpec>
+                            <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
                             <invokerPackage>org.onap.cps.rest.controller</invokerPackage>
                             <modelPackage>org.onap.cps.rest.model</modelPackage>
                             <apiPackage>org.onap.cps.rest.api</apiPackage>
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-resources</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.basedir}/target/classes/static/api-docs/cps-core</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>${project.basedir}/target/generated-sources/swagger/</directory>
+                                    <includes>
+                                      <include>openapi.yaml</include>
+                                    </includes>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 </project>
index 5793d95..4f4501a 100755 (executable)
@@ -26,27 +26,11 @@ import org.modelmapper.ModelMapper;
 import org.springframework.context.annotation.Bean;\r
 import org.springframework.context.annotation.Configuration;\r
 import org.springframework.retry.annotation.EnableRetry;\r
-import springfox.documentation.builders.PathSelectors;\r
-import springfox.documentation.builders.RequestHandlerSelectors;\r
-import springfox.documentation.spi.DocumentationType;\r
-import springfox.documentation.spring.web.plugins.Docket;\r
 \r
 @Configuration\r
 @EnableRetry\r
 public class CpsConfig {\r
 \r
-    /**\r
-     * Swagger configuration.\r
-     */\r
-    @Bean("cps-docket")\r
-    public Docket api() {\r
-        return new Docket(DocumentationType.OAS_30)\r
-            .groupName("cps-docket")\r
-            .select()\r
-            .apis(RequestHandlerSelectors.any())\r
-            .paths(PathSelectors.any()).build();\r
-    }\r
-\r
     /**\r
      * ModelMapper configuration.\r
      */\r
index a1287b2..55fdbbe 100755 (executable)
@@ -1,7 +1,7 @@
 /*
  *  ============LICENSE_START=======================================================
  *  Copyright (C) 2020 Nordix Foundation
- *  Modifications Copyright (C) 2020 Bell Canada.
+ *  Modifications Copyright (C) 2020-2021 Bell Canada.
  *  Modifications Copyright (C) 2021 Pantheon.tech
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
@@ -70,17 +70,6 @@ public class AdminRestController implements CpsAdminApi {
         return new ResponseEntity<>(dataspaceName, HttpStatus.CREATED);
     }
 
-    /**
-     * Delete a dataspace based on a given name.
-     *
-     * @param dataspaceName dataspace name
-     * @return a {@Link ResponseEntity} of {@link HttpStatus} NOT_IMPLEMENTED
-     */
-    @Override
-    public ResponseEntity<Object> deleteDataspace(final String dataspaceName) {
-        return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
-    }
-
     /**
      * Create a {@link SchemaSet}.
      *
index 0e2050e..7db4e5a 100755 (executable)
@@ -67,11 +67,6 @@ public class DataRestController implements CpsDataApi {
         return new ResponseEntity<>(HttpStatus.CREATED);
     }
 
-    @Override
-    public ResponseEntity<Object> getNodesByDataspace(final String dataspaceName) {
-        return null;
-    }
-
     @Override
     public ResponseEntity<Object> getNodeByDataspaceAndAnchor(final String dataspaceName, final String anchorName,
         final String xpath, final Boolean includeDescendants) {
index 6c589b1..fc96f04 100644 (file)
@@ -1,6 +1,7 @@
 /*
  *  ============LICENSE_START=======================================================
  *  Copyright (C) 2021 Nordix Foundation
+ *  Modifications Copyright (C) 2021 Bell Canada.
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -22,7 +23,6 @@ package org.onap.cps.config
 
 import org.modelmapper.ModelMapper
 import spock.lang.Specification
-import springfox.documentation.spring.web.plugins.Docket
 
 class CpsConfigSpec extends Specification {
     def objectUnderTest = new CpsConfig()
@@ -31,9 +31,4 @@ class CpsConfigSpec extends Specification {
         expect: 'the CPS configuration has a Model Mapper'
             objectUnderTest.modelMapper() instanceof ModelMapper
     }
-
-    def 'CPS configuration has a Docket API'() {
-        expect: 'the CPS configuration has a Docket API'
-            objectUnderTest.api() instanceof Docket
-    }
 }
index ceb0544..ae26868 100644 (file)
@@ -103,8 +103,9 @@ Here are the steps to run or debug the application from Intellij:
 
 Swagger UI and Open API specifications are available to discover service endpoints and send requests.
 
-* `http://localhost:<port-number>/swagger-ui/index.html`
-* `http://localhost:<port-number>/v3/api-docs?group=cps-docket`
+* `http://localhost:<port-number>/swagger-ui.html`
+* `http://localhost:<port-number>/api-docs/cps-core/openapi.yaml`
+* `http://localhost:<port-number>/api-docs/cps-ncmp/openapi.yaml`
 
 with <port-number> being either `8080` if running the plain Java build or retrieved using following command
 if running from `docker-compose`:
index c00d6ff..4d64b01 100755 (executable)
@@ -1,5 +1,6 @@
 #  ============LICENSE_START=======================================================
 #  Copyright (C) 2021 Nordix Foundation
+#  Modifications Copyright (C) 2021 Bell Canada.
 #  ================================================================================
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -339,10 +340,11 @@ paths:
         content:
           multipart/form-data:
             schema:
+              type: object
               required:
                 - file
               properties:
-                multipartFile:
+                file:
                   type: string
                   description: multipartFile
                   format: binary