summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToine Siebelink <toine.siebelink@est.tech>2022-08-12 13:38:37 +0000
committerGerrit Code Review <gerrit@onap.org>2022-08-12 13:38:37 +0000
commitd466ffb228d9203f72d7ddd457b75b499b849d52 (patch)
tree02b55c0dd9a6fa72ac3eecb1fe2a5405d6f75a08
parente9188a32a40177389ea97893c0624df48409bf11 (diff)
parent3e81716f0bbbde2328cd0910bc25a05b73d3d48e (diff)
Merge "Get Node API fix"
-rw-r--r--cps-service/src/main/java/org/onap/cps/utils/DataMapUtils.java11
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy10
2 files changed, 13 insertions, 8 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/utils/DataMapUtils.java b/cps-service/src/main/java/org/onap/cps/utils/DataMapUtils.java
index ff5204ff6..4413c6b08 100644
--- a/cps-service/src/main/java/org/onap/cps/utils/DataMapUtils.java
+++ b/cps-service/src/main/java/org/onap/cps/utils/DataMapUtils.java
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Pantheon.tech
* Modifications (C) 2021-2022 Nordix Foundation
+ * Modifications Copyright (C) 2022 Bell Canada
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -90,10 +91,12 @@ public class DataMapUtils {
));
}
- private static String getNodeIdentifier(final String xpath) {
- final int fromIndex = xpath.lastIndexOf("/") + 1;
- final int toIndex = xpath.indexOf("[", fromIndex);
- return toIndex > 0 ? xpath.substring(fromIndex, toIndex) : xpath.substring(fromIndex);
+ private static String getNodeIdentifier(String xpath) {
+ if (xpath.endsWith("]")) {
+ xpath = xpath.substring(0, xpath.lastIndexOf('['));
+ }
+ final int fromIndex = xpath.lastIndexOf('/') + 1;
+ return xpath.substring(fromIndex);
}
private static String getNodeIdentifierWithPrefix(final String xpath, final String moduleNamePrefix) {
diff --git a/cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy
index 24e8061b5..7f2c638ff 100644
--- a/cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy
@@ -30,7 +30,7 @@ class DataMapUtilsSpec extends Specification {
def dataNode = buildDataNode(
"/parent",[parentLeaf:'parentLeafValue', parentLeafList:['parentLeafListEntry1','parentLeafListEntry2']],[
- buildDataNode('/parent/child-list[@id=1]',[listElementLeaf:'listElement1leafValue'],noChildren),
+ buildDataNode('/parent/child-list[@id=1/2]',[listElementLeaf:'listElement1leafValue'],noChildren),
buildDataNode('/parent/child-list[@id=2]',[listElementLeaf:'listElement2leafValue'],noChildren),
buildDataNode('/parent/child-object',[childLeaf:'childLeafValue'],
[buildDataNode('/parent/child-object/grand-child-object',[grandChildLeaf:'grandChildLeafValue'],noChildren)]
@@ -88,9 +88,11 @@ class DataMapUtilsSpec extends Specification {
then: 'the correct modified node identifier is given'
assert result == expectedNodeIdentifier
where: 'the following parameters are used'
- scenario | xPath | expectedNodeIdentifier
- 'container xpath' | '/bookstore' | 'sampleModuleName:bookstore'
- 'xpath contains list attribute' | '/bookstore/categories[@code=1]' | 'sampleModuleName:categories'
+ scenario | xPath | expectedNodeIdentifier
+ 'container xpath' | '/bookstore' | 'sampleModuleName:bookstore'
+ 'xpath contains list attribute' | '/bookstore/categories[@code=1]' | 'sampleModuleName:categories'
+ 'xpath contains list attributes with /' | '/bookstore/categories[@code=1/2]' | 'sampleModuleName:categories'
+
}
}