Removed ExtendedModuleReference Object 93/127493/12
authorsourabh_sourabh <sourabh.sourabh@est.tech>
Thu, 3 Mar 2022 19:01:07 +0000 (00:31 +0530)
committersourabh_sourabh <sourabh.sourabh@est.tech>
Thu, 10 Mar 2022 16:24:41 +0000 (21:54 +0530)
-Introduced ModuleReference with 2 prop name and revision
-Removed default constructor of ModuleReference

Issue-ID: CPS-592
Signed-off-by: sourabh_sourabh <sourabh.sourabh@est.tech>
Change-Id: I27a8a521f133c0773ef0aa0b9700ac42f6bc613b

14 files changed:
cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java
cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/models/moduleReferenceSpec.groovy [deleted file]
cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceConcurrencySpec.groovy
cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceIntegrationSpec.groovy
cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java
cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java
cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java
cps-service/src/main/java/org/onap/cps/spi/model/DataNode.java
cps-service/src/main/java/org/onap/cps/spi/model/ExtendedModuleReference.java [deleted file]
cps-service/src/main/java/org/onap/cps/spi/model/ModuleReference.java
cps-service/src/main/java/org/onap/cps/spi/model/SchemaSet.java
cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSet.java
cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSetBuilder.java
cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy

index 86f4460..2a336d5 100755 (executable)
@@ -205,7 +205,7 @@ public class NetworkCmProxyController implements NetworkCmProxyApi {
      * Return module references for a cm handle.
      *
      * @param cmHandle the cm handle
-     * @return module references for cm handle
+     * @return module references for cm handle. Namespace will be always blank because restConf does not include this.
      */
     public ResponseEntity<List<ModuleReference>> getModuleReferencesByCmHandle(final String cmHandle) {
         final List<ModuleReference> moduleReferences =
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/models/moduleReferenceSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/models/moduleReferenceSpec.groovy
deleted file mode 100644 (file)
index 444a258..0000000
+++ /dev/null
@@ -1,39 +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=========================================================
- */
-package org.onap.cps.ncmp.api.models
-
-import org.onap.cps.spi.model.ExtendedModuleReference
-import spock.lang.Specification
-
-class moduleReferenceSpec extends Specification {
-
-    def 'lombok data annotation correctly implements toString() and hashCode() methods'() {
-        given: 'two moduleReference objects'
-            def moduleReference1 = new ExtendedModuleReference('module1', "some namespace", '1')
-            def moduleReference2 = new ExtendedModuleReference('module1', "some namespace", '1')
-        when: 'lombok generated methods are called'
-        then: 'the methods exist and behaviour is accurate'
-            assert moduleReference1.toString() == moduleReference2.toString()
-            assert moduleReference1.hashCode() == moduleReference2.hashCode()
-        and: 'therefore equals works as expected'
-            assert moduleReference1.equals(moduleReference2)
-    }
-
-}
index 085bb33..214fd69 100644 (file)
@@ -21,29 +21,20 @@ package org.onap.cps.spi.impl
 
 import com.fasterxml.jackson.databind.ObjectMapper
 import org.hibernate.exception.ConstraintViolationException
-import org.mockito.InjectMocks
-import org.mockito.Mock
 import org.onap.cps.spi.CpsAdminPersistenceService
 import org.onap.cps.spi.CpsModulePersistenceService
 import org.onap.cps.spi.entities.DataspaceEntity
-import org.onap.cps.spi.entities.YangResourceEntity
 import org.onap.cps.spi.exceptions.DuplicatedYangResourceException
-import org.onap.cps.spi.model.ExtendedModuleReference
 import org.onap.cps.spi.model.ModuleReference
 import org.onap.cps.spi.repository.AnchorRepository
 import org.onap.cps.spi.repository.DataspaceRepository
-import org.onap.cps.spi.repository.FragmentRepository
 import org.onap.cps.spi.repository.SchemaSetRepository
 import org.onap.cps.spi.repository.YangResourceRepository
 import org.onap.cps.utils.JsonObjectMapper
 import org.spockframework.spring.SpringBean
 import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.boot.test.context.SpringBootTest
-import org.springframework.boot.test.mock.mockito.MockBean
 import org.springframework.dao.DataIntegrityViolationException
-import org.springframework.test.context.jdbc.Sql
 import spock.lang.Shared
-import spock.lang.Specification
 
 import java.sql.SQLException
 
index 1b37bef..c4cfa3d 100644 (file)
@@ -27,9 +27,7 @@ import org.onap.cps.spi.exceptions.AlreadyDefinedException
 import org.onap.cps.spi.exceptions.DataspaceNotFoundException
 import org.onap.cps.spi.exceptions.SchemaSetNotFoundException
 import org.onap.cps.spi.model.ModuleReference
-import org.onap.cps.spi.model.ExtendedModuleReference
 import org.onap.cps.spi.repository.AnchorRepository
-import org.onap.cps.spi.repository.ModuleReferenceRepository
 import org.onap.cps.spi.repository.SchemaSetRepository
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.test.context.jdbc.Sql
@@ -68,7 +66,7 @@ class CpsModulePersistenceServiceIntegrationSpec extends CpsPersistenceSpecBase
     static final String NEW_RESOURCE_CHECKSUM = 'b13faef573ed1374139d02c40d8ce09c80ea1dc70e63e464c1ed61568d48d539'
     static final String NEW_RESOURCE_MODULE_NAME = 'stores'
     static final String NEW_RESOURCE_REVISION = '2020-09-15'
-    static final ExtendedModuleReference newModuleReference = ExtendedModuleReference.builder().name(NEW_RESOURCE_MODULE_NAME)
+    static final ModuleReference newModuleReference = ModuleReference.builder().moduleName(NEW_RESOURCE_MODULE_NAME)
             .revision(NEW_RESOURCE_REVISION).build()
 
     def newYangResourcesNameToContentMap = [(NEW_RESOURCE_NAME):NEW_RESOURCE_CONTENT]
index 6ae28fe..ecc9bf0 100644 (file)
@@ -96,9 +96,10 @@ public interface CpsModuleService {
 
     /**
      * Identify previously unknown Yang Resource module references.
+     * The system will ignore the namespace of all module references.
      *
      * @param moduleReferencesToCheck the moduleReferencesToCheck
-     * @returns collection of module references
+     * @returns collection of module references (namespace will be always blank)
      */
     Collection<ModuleReference> identifyNewModuleReferences(
         Collection<ModuleReference> moduleReferencesToCheck);
index 7267f22..f0e79c6 100644 (file)
@@ -68,7 +68,7 @@ public class CpsModuleServiceImpl implements CpsModuleService {
         final var yangTextSchemaSourceSet = yangTextSchemaSourceSetCache
             .get(dataspaceName, schemaSetName);
         return SchemaSet.builder().name(schemaSetName).dataspaceName(dataspaceName)
-            .extendedModuleReferences(yangTextSchemaSourceSet.getModuleReferences()).build();
+            .moduleReferences(yangTextSchemaSourceSet.getModuleReferences()).build();
     }
 
     @Override
index 4306df7..0e90e84 100755 (executable)
@@ -100,9 +100,11 @@ public interface CpsModulePersistenceService {
 
     /**
      * Identify new module references from those returned by a node compared to what is in CPS already.
+     * The system will ignore the namespace of all module references.
      *
      * @param moduleReferencesToCheck the module references ot check
-     * @returns Collection of {@link ModuleReference} of previously unknown module references
+     * @returns Collection of {@link ModuleReference} (namespace will be always blank)
+     *
      */
     Collection<ModuleReference> identifyNewModuleReferences(
         Collection<ModuleReference> moduleReferencesToCheck);
index 8e9dff8..55e7b99 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ============LICENSE_START=======================================================
- * Copyright (C) 2020-2021 Nordix Foundation.
+ * Copyright (C) 2020-2022 Nordix Foundation.
  * Modifications Copyright (C) 2021 Bell Canada.
  * Modifications Copyright (C) 2021 Pantheon.tech
  * ================================================================================
@@ -38,7 +38,7 @@ public class DataNode {
     private String dataspace;
     private String schemaSetName;
     private String anchorName;
-    private ExtendedModuleReference extendedModuleReference;
+    private ModuleReference moduleReference;
     private String xpath;
     private Map<String, Object> leaves = Collections.emptyMap();
     private Collection<String> xpathsChildren;
diff --git a/cps-service/src/main/java/org/onap/cps/spi/model/ExtendedModuleReference.java b/cps-service/src/main/java/org/onap/cps/spi/model/ExtendedModuleReference.java
deleted file mode 100644 (file)
index 5e9c8d0..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * Modifications Copyright 2020-2021 Pantheon.tech
- * ================================================================================
- * 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.spi.model;
-
-import java.io.Serializable;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class ExtendedModuleReference implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    private String name;
-    private String namespace;
-    private String revision;
-
-}
index 9b73f8f..569f0a0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
+ * Copyright (C) 2021-2022 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -35,4 +35,18 @@ public class ModuleReference implements Serializable {
     private static final long serialVersionUID = -1761408847591042599L;
     private String moduleName;
     private String revision;
+    @Builder.Default
+    private String namespace = "";
+
+    /**
+     * Constructor for module references without namespace (will remain blank).
+     *
+     * @param moduleName module names.
+     * @param revision   revision of module.
+     */
+    public ModuleReference(final String moduleName, final String revision) {
+        this.moduleName = moduleName;
+        this.revision = revision;
+        this.namespace = "";
+    }
 }
index 4df7893..bb98148 100644 (file)
@@ -1,12 +1,14 @@
 /*
  *  ============LICENSE_START=======================================================
  *  Copyright (C) 2020 Pantheon.tech
+ *  Modifications Copyright (C) 2022 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.
@@ -35,5 +37,5 @@ public class SchemaSet implements Serializable {
     private static final long serialVersionUID = 1464791260718603291L;
     private String name;
     private String dataspaceName;
-    private List<ExtendedModuleReference> extendedModuleReferences;
+    private List<ModuleReference> moduleReferences;
 }
index 2c9d374..80f0224 100644 (file)
@@ -1,12 +1,14 @@
 /*
  *  ============LICENSE_START=======================================================
  *  Copyright (C) 2020 Pantheon.tech
+ *  Modifications Copyright (C) 2022 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.
@@ -20,8 +22,7 @@
 package org.onap.cps.yang;
 
 import java.util.List;
-import org.checkerframework.checker.nullness.qual.NonNull;
-import org.onap.cps.spi.model.ExtendedModuleReference;
+import org.onap.cps.spi.model.ModuleReference;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 /**
@@ -34,13 +35,11 @@ public interface YangTextSchemaSourceSet {
      *
      * @return list of ModuleRef
      */
-    @NonNull
-    List<ExtendedModuleReference> getModuleReferences();
+    List<ModuleReference> getModuleReferences();
 
     /**
      *  Return SchemaContext for given YangSchema.
      * @return SchemaContext
      */
-    @NonNull
     SchemaContext getSchemaContext();
 }
index 5cbfd62..fd53497 100644 (file)
@@ -1,12 +1,14 @@
 /*
  *  ============LICENSE_START=======================================================
  *  Copyright (C) 2020 Pantheon.tech
+ *  Modifications Copyright (C) 2022 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.
@@ -35,7 +37,7 @@ import java.util.stream.Collectors;
 import lombok.NoArgsConstructor;
 import org.onap.cps.spi.exceptions.CpsException;
 import org.onap.cps.spi.exceptions.ModelValidationException;
-import org.onap.cps.spi.model.ExtendedModuleReference;
+import org.onap.cps.spi.model.ModuleReference;
 import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -88,15 +90,15 @@ public final class YangTextSchemaSourceSetBuilder {
         }
 
         @Override
-        public List<ExtendedModuleReference> getModuleReferences() {
+        public List<ModuleReference> getModuleReferences() {
             return schemaContext.getModules().stream()
                 .map(YangTextSchemaSourceSetImpl::toModuleReference)
                 .collect(Collectors.toList());
         }
 
-        private static ExtendedModuleReference toModuleReference(final Module module) {
-            return ExtendedModuleReference.builder()
-                .name(module.getName())
+        private static ModuleReference toModuleReference(final Module module) {
+            return ModuleReference.builder()
+                .moduleName(module.getName())
                 .namespace(module.getQNameModule().getNamespace().toString())
                 .revision(module.getRevision().map(Revision::toString).orElse(null))
                 .build();
index afd8e86..bae06bb 100644 (file)
@@ -28,7 +28,6 @@ import org.onap.cps.spi.CpsModulePersistenceService
 import org.onap.cps.spi.exceptions.ModelValidationException
 import org.onap.cps.spi.exceptions.SchemaSetInUseException
 import org.onap.cps.spi.model.Anchor
-import org.onap.cps.spi.model.ExtendedModuleReference
 import org.onap.cps.spi.model.ModuleReference
 import org.onap.cps.yang.YangTextSchemaSourceSetBuilder
 import spock.lang.Specification
@@ -54,7 +53,7 @@ class CpsModuleServiceImplSpec extends Specification {
 
     def 'Create schema set from new modules and existing modules.'() {
         given: 'a list of existing modules module reference'
-            def moduleReferenceForExistingModule = new ExtendedModuleReference("test", "test.org", "2021-10-12")
+            def moduleReferenceForExistingModule = new ModuleReference("test",  "2021-10-12","test.org")
             def listOfExistingModulesModuleReference = [moduleReferenceForExistingModule]
         when: 'create schema set from modules method is invoked'
             objectUnderTest.createSchemaSetFromModules("someDataspaceName", "someSchemaSetName", [newModule: "newContent"], listOfExistingModulesModuleReference)
@@ -81,7 +80,7 @@ class CpsModuleServiceImplSpec extends Specification {
         then: 'the correct schema set is returned'
             result.getName().contains('someSchemaSet')
             result.getDataspaceName().contains('someDataspace')
-            result.getExtendedModuleReferences().contains(new ExtendedModuleReference('stores', 'org:onap:ccsdk:sample', '2020-09-15'))
+            result.getModuleReferences().contains(new ModuleReference('stores', '2020-09-15', 'org:onap:ccsdk:sample'))
     }
 
     def 'Delete schema-set when cascade is allowed.'() {
@@ -134,7 +133,7 @@ class CpsModuleServiceImplSpec extends Specification {
 
     def 'Get all yang resources module references.'() {
         given: 'an already present module reference'
-            def moduleReferences = [new ExtendedModuleReference()]
+            def moduleReferences = [new ModuleReference('some module name','some revision name')]
             mockCpsModulePersistenceService.getYangResourceModuleReferences('someDataspaceName') >> moduleReferences
         expect: 'the list provided by persistence service is returned as result'
             objectUnderTest.getYangResourceModuleReferences('someDataspaceName') == moduleReferences