From 3e81716f0bbbde2328cd0910bc25a05b73d3d48e Mon Sep 17 00:00:00 2001 From: "puthuparambil.aditya" Date: Thu, 11 Aug 2022 10:55:43 +0100 Subject: [PATCH] Get Node API fix Issue-ID: CPS-1179 Signed-off-by: puthuparambil.aditya Change-Id: I1450ed5d05afd6dd30484eaf19b1e40fd586df8e --- .../src/main/java/org/onap/cps/utils/DataMapUtils.java | 11 +++++++---- .../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 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' + } } -- 2.16.6