Remove depredcated code/classes 11/116311/1
authorniamhcore <niamh.core@est.tech>
Fri, 11 Dec 2020 12:37:35 +0000 (12:37 +0000)
committerniamhcore <niamh.core@est.tech>
Fri, 11 Dec 2020 12:37:35 +0000 (12:37 +0000)
Issue-ID: CPS-93

Signed-off-by: niamhcore <niamh.core@est.tech>
Change-Id: I49db5244400d5eb4206d59e73aaf801b7f90c61c

cps-rest/docs/api/swagger/openapi.yml
cps-rest/src/main/java/org/onap/cps/rest/controller/CpsRestController.java
cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy
cps-service/src/main/java/org/onap/cps/api/CpService.java [deleted file]
cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java
cps-service/src/main/java/org/onap/cps/api/impl/CpServiceImpl.java [deleted file]
cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java
cps-service/src/test/groovy/org/onap/cps/api/impl/CpServiceImplSpec.groovy [deleted file]
cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModulePersistenceServiceImplSpec.groovy

index 441d5e5..2eed7e6 100755 (executable)
@@ -252,49 +252,6 @@ paths:
         404:
           description: Not Found
           content: {}
-    post:
-      tags:
-        - cps-rest
-      summary: Create modules for the given dataspace
-      operationId: createModules
-      parameters:
-        - name: dataspace-name
-          in: path
-          description: dataspace-name
-          required: true
-          schema:
-            type: string
-      requestBody:
-        content:
-          multipart/form-data:
-            schema:
-              required:
-                - file
-              properties:
-                multipartFile:
-                  type: string
-                  description: multipartFile
-                  format: binary
-        required: true
-      responses:
-        200:
-          description: OK
-          content:
-            application/json:
-              schema:
-                type: object
-        201:
-          description: Created
-          content: {}
-        401:
-          description: Unauthorized
-          content: {}
-        403:
-          description: Forbidden
-          content: {}
-        404:
-          description: Not Found
-          content: {}
   /v1/dataspaces/{dataspace-name}/nodes:
     get:
       tags:
index 32ea35c..1802ce7 100755 (executable)
 
 package org.onap.cps.rest.controller;
 
-import com.google.gson.Gson;
-import com.google.gson.JsonSyntaxException;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
 import java.util.Collection;
 import javax.validation.Valid;
 import org.modelmapper.ModelMapper;
-import org.onap.cps.api.CpService;
 import org.onap.cps.api.CpsAdminService;
-import org.onap.cps.api.CpsModuleService;
 import org.onap.cps.rest.api.CpsRestApi;
-import org.onap.cps.spi.exceptions.CpsException;
-import org.onap.cps.spi.exceptions.DataValidationException;
 import org.onap.cps.spi.model.Anchor;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 @RestController
 public class CpsRestController implements CpsRestApi {
 
-    @Autowired
-    private CpService cpService;
-
-    @Autowired
-    private CpsModuleService cpsModuleService;
-
     @Autowired
     private CpsAdminService cpsAdminService;
 
@@ -79,14 +57,6 @@ public class CpsRestController implements CpsRestApi {
         return new ResponseEntity<>(anchorName, HttpStatus.CREATED);
     }
 
-    @Override
-    public ResponseEntity<Object> createModules(@Valid final MultipartFile multipartFile, final String dataspaceName) {
-        final File fileToParse = saveToFile(multipartFile);
-        final SchemaContext schemaContext = cpsModuleService.parseAndValidateModel(fileToParse);
-        cpsModuleService.storeSchemaContext(schemaContext, dataspaceName);
-        return new ResponseEntity<>("Resource successfully created", HttpStatus.CREATED);
-    }
-
     @Override
     public ResponseEntity<Object> createNode(@Valid final MultipartFile multipartFile, final String dataspaceName) {
         return null;
@@ -129,78 +99,4 @@ public class CpsRestController implements CpsRestApi {
     public ResponseEntity<Object> getNodeByDataspaceAndAnchor(final String dataspaceName, final String anchorName) {
         return null;
     }
-
-    /*
-    Old rest endpoints before contract first approach (Need to be removed).
-     */
-
-    /**
-     * Upload a JSON file.
-     *
-     * @param uploadedFile the JSON Multipart file.
-     * @return a ResponseEntity.
-     */
-    @PostMapping("/upload-yang-json-data-file")
-    public final ResponseEntity<String> uploadYangJsonDataFile(@RequestParam("file") final MultipartFile uploadedFile) {
-        validateJsonStructure(uploadedFile);
-        final int persistenceObjectId = cpService.storeJsonStructure(getJsonString(uploadedFile));
-        return new ResponseEntity<>(
-            "Object stored in CPS with identity: " + persistenceObjectId, HttpStatus.OK);
-    }
-
-    /**
-     * Read a JSON Object using the object identifier.
-     *
-     * @param jsonObjectId the JSON object identifier.
-     * @return a ResponseEntity.
-     */
-    @GetMapping("/json-object/{id}")
-    public final ResponseEntity<String> getJsonObjectById(
-        @PathVariable("id") final int jsonObjectId) {
-        return new ResponseEntity<>(cpService.getJsonById(jsonObjectId), HttpStatus.OK);
-    }
-
-    /**
-     * Delete a JSON Object using the object identifier.
-     *
-     * @param jsonObjectId the JSON object identifier.
-     * @return a ResponseEntity.
-     */
-    @DeleteMapping("json-object/{id}")
-    public final ResponseEntity<Object> deleteJsonObjectById(
-        @PathVariable("id") final int jsonObjectId) {
-        cpService.deleteJsonById(jsonObjectId);
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-    }
-
-    private static void validateJsonStructure(final MultipartFile multipartFile) {
-        try {
-            final Gson gson = new Gson();
-            gson.fromJson(getJsonString(multipartFile), Object.class);
-        } catch (final JsonSyntaxException e) {
-            throw new DataValidationException("Not a valid JSON file.", e.getMessage(), e);
-        }
-    }
-
-    private static File saveToFile(final MultipartFile multipartFile) {
-        try {
-            final File file = File.createTempFile("tempFile", ".yang");
-            file.deleteOnExit();
-            try (final OutputStream outputStream = new FileOutputStream(file)) {
-                outputStream.write(multipartFile.getBytes());
-            }
-            return file;
-
-        } catch (final IOException e) {
-            throw new CpsException(e);
-        }
-    }
-
-    private static String getJsonString(final MultipartFile multipartFile) {
-        try {
-            return new String(multipartFile.getBytes());
-        } catch (final IOException e) {
-            throw new CpsException(e);
-        }
-    }
 }
index d951cbe..e427c60 100644 (file)
@@ -20,7 +20,7 @@
 package org.onap.cps.rest.exceptions
 
 import groovy.json.JsonSlurper
-import org.onap.cps.api.CpService
+import org.onap.cps.api.CpsAdminService
 import org.onap.cps.spi.exceptions.AnchorAlreadyDefinedException
 import org.onap.cps.spi.exceptions.CpsException
 import org.onap.cps.spi.exceptions.DataValidationException
@@ -50,12 +50,12 @@ class CpsRestExceptionHandlerSpec extends Specification {
     def existingObjectName = 'MyAdminObject'
 
     def cpsRestController = new CpsRestController()
-    def mockCpService = Mock(CpService.class)
+    def mockCpsAdminService = Mock(CpsAdminService.class)
     def objectUnderTest = new CpsRestExceptionHandler()
     def mockMvc = standaloneSetup(cpsRestController).setControllerAdvice(objectUnderTest).build()
 
     def setup() {
-        cpsRestController.cpService = mockCpService
+        cpsRestController.cpsAdminService = mockCpsAdminService
     }
 
     def 'Get request with runtime exception returns HTTP Status Internal Server Error'() {
@@ -130,11 +130,11 @@ class CpsRestExceptionHandlerSpec extends Specification {
      */
 
     def setupTestException(exception) {
-        mockCpService.getJsonById(_) >> { throw exception }
+        mockCpsAdminService.getAnchors(_) >> { throw exception}
     }
 
     def performTestRequest() {
-        return mockMvc.perform(get('/json-object/1')).andReturn().response
+        return mockMvc.perform(get('/v1/dataspaces/dataspace-name/anchors')).andReturn().response
     }
 
     void assertTestResponse(response, expectedStatus, expectedErrorMessage, expectedErrorDetails) {
diff --git a/cps-service/src/main/java/org/onap/cps/api/CpService.java b/cps-service/src/main/java/org/onap/cps/api/CpService.java
deleted file mode 100755 (executable)
index 29e164d..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Nordix Foundation
- *  Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
- *  ================================================================================
- *  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.api;
-
-/**
- * Configuration and persistency service interface which holds methods for parsing and storing yang models and data.
- */
-public interface CpService {
-
-    /**
-     * Store the JSON structure in the database.
-     *
-     * @param jsonStructure the JSON structure.
-     * @return entity ID.
-     */
-    Integer storeJsonStructure(String jsonStructure);
-
-    /**
-     * Read a JSON Object using the object identifier.
-     *
-     * @param jsonObjectId the JSON object identifier.
-     * @return the JSON structure.
-     */
-    String getJsonById(int jsonObjectId);
-
-    /**
-     * Delete a JSON Object using the object identifier.
-     *
-     * @param jsonObjectId the JSON object identifier.
-     */
-    void deleteJsonById(int jsonObjectId);
-
-}
index 94ebea2..325893d 100644 (file)
@@ -19,7 +19,6 @@
 
 package org.onap.cps.api;
 
-import java.io.File;
 import org.onap.cps.spi.exceptions.CpsException;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
@@ -28,22 +27,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
  */
 public interface CpsModuleService {
 
-    /**
-     * Parse and validate a string representing a yang model to generate a schema context.
-     *
-     * @param yangModelContent the input stream
-     * @return the schema context
-     */
-    SchemaContext parseAndValidateModel(String yangModelContent);
-
-    /**
-     * Parse and validate a file representing a yang model to generate a schema context.
-     *
-     * @param yangModelFile the yang file
-     * @return the schema context
-     */
-    SchemaContext parseAndValidateModel(File yangModelFile);
-
     /**
      * Store schema context for a yang model.
      *
diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpServiceImpl.java b/cps-service/src/main/java/org/onap/cps/api/impl/CpServiceImpl.java
deleted file mode 100755 (executable)
index 3ec08cd..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Nordix Foundation
- *  Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
- *  ================================================================================
- *  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.api.impl;
-
-import org.onap.cps.api.CpService;
-import org.onap.cps.spi.DataPersistenceService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-public class CpServiceImpl implements CpService {
-
-    @Autowired
-    private DataPersistenceService dataPersistenceService;
-
-
-    @Override
-    public final Integer storeJsonStructure(final String jsonStructure) {
-        return dataPersistenceService.storeJsonStructure(jsonStructure);
-    }
-
-    @Override
-    public final String getJsonById(final int jsonObjectId) {
-        return dataPersistenceService.getJsonById(jsonObjectId);
-    }
-
-    @Override
-    public void deleteJsonById(final int jsonObjectId) {
-        dataPersistenceService.deleteJsonById(jsonObjectId);
-    }
-}
\ No newline at end of file
index c7fa047..2c600b5 100644 (file)
 package org.onap.cps.api.impl;
 
 
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
 import java.util.Optional;
 import org.onap.cps.api.CpsModuleService;
 import org.onap.cps.spi.CpsModulePersistenceService;
-import org.onap.cps.spi.exceptions.CpsException;
-import org.onap.cps.spi.exceptions.ModelValidationException;
-import org.onap.cps.utils.YangUtils;
 import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.parser.api.YangParserException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -43,30 +35,6 @@ public class CpsModuleServiceImpl implements CpsModuleService {
     @Autowired
     private CpsModulePersistenceService cpsModulePersistenceService;
 
-    @Override
-    public SchemaContext parseAndValidateModel(final String yangModelContent) {
-        try {
-            final File tempFile = File.createTempFile("yang", ".yang");
-            try (final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile))) {
-                writer.write(yangModelContent);
-            }
-            return parseAndValidateModel(tempFile);
-        } catch (final IOException e) {
-            throw new CpsException(e);
-        }
-    }
-
-    @Override
-    public SchemaContext parseAndValidateModel(final File yangModelFile) {
-        try {
-            return YangUtils.parseYangModelFile(yangModelFile);
-        } catch (final YangParserException e) {
-            throw new ModelValidationException("Yang file validation failed", e.getMessage(), e);
-        } catch (final IOException e) {
-            throw new CpsException(e);
-        }
-    }
-
     @Override
     public void storeSchemaContext(final SchemaContext schemaContext, final String dataspaceName) {
         for (final Module module : schemaContext.getModules()) {
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpServiceImplSpec.groovy
deleted file mode 100755 (executable)
index 873aba7..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Nordix Foundation
- *  Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
- *  ================================================================================
- *  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.api.impl
-
-
-import org.onap.cps.spi.DataPersistenceService
-import spock.lang.Specification
-
-class CpServiceImplSpec extends Specification {
-
-    def mockDataPersistenceService = Mock(DataPersistenceService)
-    def objectUnderTest = new CpServiceImpl()
-
-    def setup() {
-        objectUnderTest.dataPersistenceService = mockDataPersistenceService
-    }
-
-    def 'Cps Service provides to its client the id assigned by the system when storing a data structure'() {
-        given: 'that data persistence service is giving id 123 to a data structure it is asked to store'
-            mockDataPersistenceService.storeJsonStructure(_) >> 123
-        expect: 'Cps service returns the same id when storing data structure'
-            objectUnderTest.storeJsonStructure('') == 123
-    }
-
-    def 'Read a JSON object with a valid identifier'(){
-        given: 'that the data persistence service returns a JSON structure for identifier 1'
-            mockDataPersistenceService.getJsonById(1) >> '{name : hello}'
-        expect: 'that the same JSON structure is returned by CPS'
-            objectUnderTest.getJsonById(1) == '{name : hello}'
-    }
-
-    def 'Read a JSON object with an identifier that does not exist'(){
-        given: 'that the data persistence service throws an exception'
-            def exceptionThrownByPersistenceService = new IllegalStateException()
-            mockDataPersistenceService.getJsonById(_) >> {throw exceptionThrownByPersistenceService}
-        when: 'we try to get the JSON structure'
-            objectUnderTest.getJsonById(1);
-        then: 'the same exception is thrown by CPS'
-            thrown(IllegalStateException)
-    }
-
-    def 'Delete a JSON object with a valid identifier'(){
-        given: 'that the data persistence service can delete a JSON structure for identifier 1'
-            mockDataPersistenceService.deleteJsonById(1)
-        expect: 'No exception is thrown when we delete a JSON structure with identifier 1'
-            objectUnderTest.deleteJsonById(1)
-    }
-
-    def 'Delete a JSON object with an identifier that does not exist'(){
-        given: 'that the data persistence service throws an exception'
-            mockDataPersistenceService.deleteJsonById(_) >> {throw new IllegalStateException()}
-        when: 'we try to delete a JSON structure'
-            objectUnderTest.deleteJsonById(100);
-        then: 'the same exception is thrown by CPS'
-            thrown(IllegalStateException)
-    }
-}
index da2df40..d2a69d6 100644 (file)
@@ -35,39 +35,11 @@ class CpsModulePersistenceServiceImplSpec extends Specification {
         objectUnderTest.cpsModulePersistenceService = mockModuleStoreService
     }
 
-    def 'Parse and Validate a Yang Model with a Valid Yang Model'() {
-        given: 'a yang model (file)'
-            def yangModel = TestUtils.getResourceFileContent('bookstore.yang')
-        when: 'a valid model is parsed and validated'
-            def result = objectUnderTest.parseAndValidateModel(yangModel)
-        then: 'Verify a schema context for that model is created with the correct identity'
-            assertModule(result)
-    }
-
-    def 'Parse and Validate a Yang Model Using a File'() {
-        given: 'a yang file that contains a yang model'
-            File file = new File(ClassLoader.getSystemClassLoader().getResource('bookstore.yang').getFile())
-        when: 'a model is parsed and validated'
-            def result = objectUnderTest.parseAndValidateModel(file)
-        then: 'Verify a schema context for that model is created with the correct identity'
-            assertModule(result)
-
-    }
-
     def assertModule(SchemaContext schemaContext) {
         def optionalModule = schemaContext.findModule('stores', Revision.of('2020-09-15'))
         return schemaContext.modules.size() == 1 && optionalModule.isPresent()
     }
 
-    def 'Parse and Validate an Invalid Model'() {
-        given: 'a yang file that contains a invalid yang model'
-            File file = new File(ClassLoader.getSystemClassLoader().getResource('invalid.yang').getFile())
-        when: 'the model is parsed and validated'
-            objectUnderTest.parseAndValidateModel(file)
-        then: 'a CpsValidationException is thrown'
-            thrown(CpsException)
-    }
-
     def 'Store a SchemaContext'() {
         expect: 'No exception to be thrown when a valid model (schema) is stored'
             objectUnderTest.storeSchemaContext(Stub(SchemaContext.class), "sampleDataspace")