From 3d02e9210625b75419089a3f5612f386c3b997ea Mon Sep 17 00:00:00 2001 From: sourabh_sourabh Date: Fri, 4 Mar 2022 00:31:07 +0530 Subject: [PATCH] Removed ExtendedModuleReference Object -Introduced ModuleReference with 2 prop name and revision -Removed default constructor of ModuleReference Issue-ID: CPS-592 Signed-off-by: sourabh_sourabh Change-Id: I27a8a521f133c0773ef0aa0b9700ac42f6bc613b --- .../rest/controller/NetworkCmProxyController.java | 2 +- .../cps/ncmp/api/models/moduleReferenceSpec.groovy | 39 -------------------- ...sModulePersistenceServiceConcurrencySpec.groovy | 9 ----- ...sModulePersistenceServiceIntegrationSpec.groovy | 4 +-- .../java/org/onap/cps/api/CpsModuleService.java | 3 +- .../onap/cps/api/impl/CpsModuleServiceImpl.java | 2 +- .../onap/cps/spi/CpsModulePersistenceService.java | 4 ++- .../main/java/org/onap/cps/spi/model/DataNode.java | 4 +-- .../cps/spi/model/ExtendedModuleReference.java | 42 ---------------------- .../org/onap/cps/spi/model/ModuleReference.java | 16 ++++++++- .../java/org/onap/cps/spi/model/SchemaSet.java | 4 ++- .../org/onap/cps/yang/YangTextSchemaSourceSet.java | 9 +++-- .../cps/yang/YangTextSchemaSourceSetBuilder.java | 12 ++++--- .../cps/api/impl/CpsModuleServiceImplSpec.groovy | 7 ++-- 14 files changed, 42 insertions(+), 115 deletions(-) delete mode 100644 cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/models/moduleReferenceSpec.groovy delete mode 100644 cps-service/src/main/java/org/onap/cps/spi/model/ExtendedModuleReference.java diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java index 86f4460ea..2a336d52b 100755 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java +++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java @@ -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> getModuleReferencesByCmHandle(final String cmHandle) { final List 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 index 444a25804..000000000 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/models/moduleReferenceSpec.groovy +++ /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) - } - -} diff --git a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceConcurrencySpec.groovy b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceConcurrencySpec.groovy index 085bb3340..214fd69ff 100644 --- a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceConcurrencySpec.groovy +++ b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceConcurrencySpec.groovy @@ -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 diff --git a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceIntegrationSpec.groovy b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceIntegrationSpec.groovy index 1b37bef9c..c4cfa3d50 100644 --- a/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceIntegrationSpec.groovy +++ b/cps-ri/src/test/groovy/org/onap/cps/spi/impl/CpsModulePersistenceServiceIntegrationSpec.groovy @@ -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] diff --git a/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java b/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java index 6ae28fe9c..ecc9bf098 100644 --- a/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java +++ b/cps-service/src/main/java/org/onap/cps/api/CpsModuleService.java @@ -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 identifyNewModuleReferences( Collection moduleReferencesToCheck); diff --git a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java b/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java index 7267f22b5..f0e79c60c 100644 --- a/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java +++ b/cps-service/src/main/java/org/onap/cps/api/impl/CpsModuleServiceImpl.java @@ -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 diff --git a/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java b/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java index 4306df78d..0e90e84f1 100755 --- a/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java +++ b/cps-service/src/main/java/org/onap/cps/spi/CpsModulePersistenceService.java @@ -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 identifyNewModuleReferences( Collection moduleReferencesToCheck); diff --git a/cps-service/src/main/java/org/onap/cps/spi/model/DataNode.java b/cps-service/src/main/java/org/onap/cps/spi/model/DataNode.java index 8e9dff873..55e7b9970 100644 --- a/cps-service/src/main/java/org/onap/cps/spi/model/DataNode.java +++ b/cps-service/src/main/java/org/onap/cps/spi/model/DataNode.java @@ -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 leaves = Collections.emptyMap(); private Collection 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 index 5e9c8d0cd..000000000 --- a/cps-service/src/main/java/org/onap/cps/spi/model/ExtendedModuleReference.java +++ /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; - -} diff --git a/cps-service/src/main/java/org/onap/cps/spi/model/ModuleReference.java b/cps-service/src/main/java/org/onap/cps/spi/model/ModuleReference.java index 9b73f8ff0..569f0a06e 100644 --- a/cps-service/src/main/java/org/onap/cps/spi/model/ModuleReference.java +++ b/cps-service/src/main/java/org/onap/cps/spi/model/ModuleReference.java @@ -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 = ""; + } } diff --git a/cps-service/src/main/java/org/onap/cps/spi/model/SchemaSet.java b/cps-service/src/main/java/org/onap/cps/spi/model/SchemaSet.java index 4df7893e2..bb981482f 100644 --- a/cps-service/src/main/java/org/onap/cps/spi/model/SchemaSet.java +++ b/cps-service/src/main/java/org/onap/cps/spi/model/SchemaSet.java @@ -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 extendedModuleReferences; + private List moduleReferences; } diff --git a/cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSet.java b/cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSet.java index 2c9d374b1..80f0224c6 100644 --- a/cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSet.java +++ b/cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSet.java @@ -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 getModuleReferences(); + List getModuleReferences(); /** * Return SchemaContext for given YangSchema. * @return SchemaContext */ - @NonNull SchemaContext getSchemaContext(); } diff --git a/cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSetBuilder.java b/cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSetBuilder.java index 5cbfd6222..fd534971a 100644 --- a/cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSetBuilder.java +++ b/cps-service/src/main/java/org/onap/cps/yang/YangTextSchemaSourceSetBuilder.java @@ -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 getModuleReferences() { + public List 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(); diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy index afd8e8666..bae06bb9e 100644 --- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsModuleServiceImplSpec.groovy @@ -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 -- 2.16.6