Get Node API fix 58/130258/2
authorputhuparambil.aditya <aditya.puthuparambil@bell.ca>
Thu, 11 Aug 2022 09:55:43 +0000 (10:55 +0100)
committerputhuparambil.aditya <aditya.puthuparambil@bell.ca>
Thu, 11 Aug 2022 13:00:58 +0000 (14:00 +0100)
Issue-ID: CPS-1179
Signed-off-by: puthuparambil.aditya <aditya.puthuparambil@bell.ca>
Change-Id: I1450ed5d05afd6dd30484eaf19b1e40fd586df8e

cps-service/src/main/java/org/onap/cps/utils/DataMapUtils.java
cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy

index ff5204f..4413c6b 100644 (file)
@@ -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) {
index 24e8061..7f2c638 100644 (file)
@@ -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'
+
     }
 }