From 74a47154f3bce495d9f58a300a860d750ae309f1 Mon Sep 17 00:00:00 2001 From: danielhanrahan Date: Wed, 28 Jun 2023 12:55:20 +0100 Subject: Apostrophe handling in CpsPathParser Apostrophe is not currently handled correctly, and having apostrophe in the xpath will lead to various errors. For example, normalizing this xpath works: /path[@name="I'm quoted"] -> /path[@name='I\'m quoted'] However the resulting xpath will throw a PathParsingException if parsed! (Thus path normalization is not idempotent.) - Use '' for escaping apostrophe in single quoted leaf value, to comply with XPath standard (and use "" for escaping in "). - Use Liquibase to make existing data comply with new rules. - Leaf values in data leaves are now unescaped, e.g. "I'm quoted" - Quoting is now consistent for leaf/text/contains conditions. Issue-ID: CPS-1769 Signed-off-by: danielhanrahan Change-Id: Iafc287f738254d7f99706c6bc548091c0ecd5aa0 --- cps-service/src/main/java/org/onap/cps/utils/YangUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cps-service') diff --git a/cps-service/src/main/java/org/onap/cps/utils/YangUtils.java b/cps-service/src/main/java/org/onap/cps/utils/YangUtils.java index 7da4024156..f00f9442ce 100644 --- a/cps-service/src/main/java/org/onap/cps/utils/YangUtils.java +++ b/cps-service/src/main/java/org/onap/cps/utils/YangUtils.java @@ -253,7 +253,7 @@ public class YangUtils { final List keyAttributes = nodeIdentifier.entrySet().stream().map( entry -> { final String name = entry.getKey().getLocalName(); - final String value = String.valueOf(entry.getValue()).replace("'", "\\'"); + final String value = String.valueOf(entry.getValue()).replace("'", "''"); return String.format("@%s='%s'", name, value); } ).collect(Collectors.toList()); -- cgit 1.2.3-korg