summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorseanbeirne <sean.beirne@est.tech>2024-11-25 12:03:25 +0000
committerseanbeirne <sean.beirne@est.tech>2024-11-25 14:03:59 +0000
commitac855f748ff6a63b32686596032da4a4a8c28c6a (patch)
tree59a84b1cf21e3fc6f4049cd91e021a1d4ab78944
parentfd5b04c51451cb0525d7ed93b1bb9b53573f6aaa (diff)
Catch data validation exception in dmi data operation
Issue-ID: CPS-2510 Change-Id: I4093459c824c202dc8dec4b869e338d4b80fbac8 Signed-off-by: seanbeirne <sean.beirne@est.tech>
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/DmiDataOperations.java4
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/data/DmiDataOperationsSpec.groovy15
2 files changed, 12 insertions, 7 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/DmiDataOperations.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/DmiDataOperations.java
index 41348aea3f..1e66ff6cd2 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/DmiDataOperations.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/DmiDataOperations.java
@@ -52,7 +52,7 @@ import org.onap.cps.ncmp.impl.models.DmiRequestBody;
import org.onap.cps.ncmp.impl.utils.http.RestServiceUrlTemplateBuilder;
import org.onap.cps.ncmp.impl.utils.http.UrlTemplateParameters;
import org.onap.cps.spi.exceptions.CpsException;
-import org.onap.cps.spi.exceptions.DataNodeNotFoundException;
+import org.onap.cps.spi.exceptions.DataValidationException;
import org.onap.cps.utils.JsonObjectMapper;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@@ -285,7 +285,7 @@ public class DmiDataOperations {
String cmHandleId = cmResourceAddress.getCmHandleReference();
try {
return getYangModelCmHandle(cmHandleId);
- } catch (final DataNodeNotFoundException ignored) {
+ } catch (final DataValidationException ignored) {
cmHandleId = cmResourceAddress.resolveCmHandleReferenceToId();
return getYangModelCmHandle(cmHandleId);
}
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/data/DmiDataOperationsSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/data/DmiDataOperationsSpec.groovy
index 71054dce41..0d1cfb7c2d 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/data/DmiDataOperationsSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/data/DmiDataOperationsSpec.groovy
@@ -36,6 +36,7 @@ import org.onap.cps.ncmp.impl.utils.AlternateIdMatcher
import org.onap.cps.ncmp.impl.utils.http.UrlTemplateParameters
import org.onap.cps.ncmp.utils.TestUtils
import org.onap.cps.spi.exceptions.DataNodeNotFoundException
+import org.onap.cps.spi.exceptions.DataValidationException
import org.onap.cps.utils.JsonObjectMapper
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
@@ -214,17 +215,21 @@ class DmiDataOperationsSpec extends DmiOperationsBaseSpec {
assert objectUnderTest.resolveYangModelCmHandleFromCmHandleReference(cmResourceAddress) == yangModelCmHandle
}
- def 'Resolving cm handle references with alternate id.'() {
+ def 'Resolving cm handle references with alternate id #scenario.'() {
given: 'a resource with a alternate id'
- def cmResourceAddress = new CmResourceAddress('some store', 'alternate-id', 'some resource')
- and: 'the alternate id cannot be found in the inventory directly and that results in a data node not found exception'
- mockInventoryPersistence.getYangModelCmHandle('alternate-id') >> { throw new DataNodeNotFoundException('','') }
+ def cmResourceAddress = new CmResourceAddress('some store', alternateId, 'some resource')
+ and: 'the alternate id cannot be found in the inventory directly and that results in an exception'
+ mockInventoryPersistence.getYangModelCmHandle(alternateId) >> { throw errorThrownDuringCmHandleIdSearch }
and: 'the alternate id can be matched to a cm handle id'
- alternateIdMatcher.getCmHandleId('alternate-id') >> 'cm-handle-id'
+ alternateIdMatcher.getCmHandleId(alternateId) >> 'cm-handle-id'
and: 'that cm handle id is available in the inventory'
mockInventoryPersistence.getYangModelCmHandle('cm-handle-id') >> yangModelCmHandle
expect: 'resolving that cm handle id returns the cm handle'
assert objectUnderTest.resolveYangModelCmHandleFromCmHandleReference(cmResourceAddress) == yangModelCmHandle
+ where: 'the following alternate ids are used'
+ scenario | alternateId | errorThrownDuringCmHandleIdSearch
+ 'alternate id with no special characters' | 'alternate-id' | new DataNodeNotFoundException('','')
+ 'alternate id with special characters' | 'alternate#id' | new DataValidationException('','')
}