diff options
Diffstat (limited to 'cps-service')
-rw-r--r-- | cps-service/src/main/java/org/onap/cps/utils/DataMapUtils.java | 11 | ||||
-rw-r--r-- | cps-service/src/test/groovy/org/onap/cps/utils/DataMapUtilsSpec.groovy | 10 |
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 ff5204ff6c..4413c6b08b 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 24e8061b53..7f2c638ff5 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' + } } |