summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRudrangi Anupriya <ra00745022@techmahindra.com>2023-04-27 12:04:52 +0530
committerRudrangi Anupriya <ra00745022@techmahindra.com>2023-04-27 16:49:36 +0530
commit94b5c8a94dc738576ee7cb8b71d9bd6e43fbac24 (patch)
treeb16860dd9da97f66dc0b2201622b3982d7b5d73b
parent2de9389a61f0feb37f0bcc22d6269e36dcfbd47c (diff)
Add document for support for contains condition to cps-path
Issue-ID: CPS-1272 Change-Id: I32c03d5ed80e5d16d4b5c0f726539a6da487abd6 Signed-off-by: Rudrangi Anupriya <ra00745022@techmahindra.com>
-rw-r--r--docs/cps-path.rst22
-rw-r--r--integration-test/src/test/groovy/org/onap/cps/integration/functional/CpsQueryServiceIntegrationSpec.groovy1
2 files changed, 21 insertions, 2 deletions
diff --git a/docs/cps-path.rst b/docs/cps-path.rst
index f321adfa9..a24bf1e9f 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
============
-``( <absolute-path> | <descendant-path> ) [ <leaf-conditions> ] [ <text()-condition> ] [ <ancestor-axis> ]``
+``( <absolute-path> | <descendant-path> ) [ <leaf-conditions> ] [ <text()-condition> ] [ <contains()-condition> ] [ <ancestor-axis> ]``
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 @<leaf-name> as described above.
- Having '[' token in any index in any list will have a negative impact on this function.
+contains()-condition
+--------------------
+
+**Syntax**: ``<cps-path> '[' 'contains' '(' '<leaf-name>','<string-value>' ')' ']'?``
+ - ``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 38bb4de57..44287b221 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]],