From 94b5c8a94dc738576ee7cb8b71d9bd6e43fbac24 Mon Sep 17 00:00:00 2001 From: Rudrangi Anupriya Date: Thu, 27 Apr 2023 12:04:52 +0530 Subject: Add document for support for contains condition to cps-path Issue-ID: CPS-1272 Change-Id: I32c03d5ed80e5d16d4b5c0f726539a6da487abd6 Signed-off-by: Rudrangi Anupriya --- docs/cps-path.rst | 22 +++++++++++++++++++++- .../CpsQueryServiceIntegrationSpec.groovy | 1 - 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/cps-path.rst b/docs/cps-path.rst index f321adfa99..a24bf1e9fe 100644 --- a/docs/cps-path.rst +++ b/docs/cps-path.rst @@ -1,6 +1,7 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 .. Copyright (C) 2021-2022 Nordix Foundation +.. Modifications Copyright (C) 2023 TechMahindra Ltd .. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING .. _path: @@ -182,7 +183,7 @@ General Notes Query Syntax ============ -``( | ) [ ] [ ] [ ]`` +``( | ) [ ] [ ] [ ] [ ]`` Each CPS path expression need to start with an 'absolute' or 'descendant' xpath. @@ -268,6 +269,25 @@ The text()-condition can be added to any CPS path query. - When querying a leaf value (instead of leaf-list) it is better, more performant to use a text value condition use @ as described above. - Having '[' token in any index in any list will have a negative impact on this function. +contains()-condition +-------------------- + +**Syntax**: `` '[' 'contains' '(' '','' ')' ']'?`` + - ``cps-path``: Any CPS path query. + - ``leaf-name``: The name of the leaf which value needs to be compared. + - ``string-value``: The required value of the leaf element as a string wrapped in quotation marks (U+0022) or apostrophes (U+0027). This will still match integer values. + +**Examples** + - ``//categories[contains(@name,'Sci')]`` + - ``//books[contains(@title,'Space')]`` + +**Limitations** + - Only leaves can be used, leaf-list are not supported. + - Leaf names are not validated so ``contains() condition`` with invalid leaf names will silently be ignored. + +**Notes** + - contains condition is case sensitive. + ancestor-axis ------------- diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy index 38bb4de573..44287b221b 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy @@ -61,7 +61,6 @@ class CpsQueryServiceIntegrationSpec extends FunctionalSpecBase { assert result.size() == expectedResultSize and: 'the cps-path of queryDataNodes has the expectedLeaves' assert result.leaves.sort() == expectedLeaves.sort() - println(expectedLeaves.toArray()) where: 'the following data is used' scenario | cpspath || expectedResultSize | expectedLeaves 'the "OR" condition' | '//books[@lang="English" or @price=15]' || 6 | [[lang: "English", price: 15, title: "Annihilation", authors: ["Jeff VanderMeer"], editions: [2014]], -- cgit 1.2.3-korg