From: Robert Varga Date: Sat, 23 Oct 2021 22:25:36 +0000 (+0200) Subject: FilterParameter now has a YangXPathExpression X-Git-Tag: v2.0.6~29 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=7a36f8ea85d0062923efc1d711f399eda902d06a;p=netconf.git FilterParameter now has a YangXPathExpression We have the infrastructure to understand the structure of a YANG XPath expression. Use it to perform additional checks, so that we can rely on it being syntactically valid. JIRA: NETCONF-773 Change-Id: I37a0ddb1e4d5a6c115eb479ba550686c1a3c3fcd Signed-off-by: Robert Varga --- diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/FilterParameter.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/FilterParameter.java index 2c2777081e..5c6aed3efe 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/FilterParameter.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/FilterParameter.java @@ -10,8 +10,12 @@ package org.opendaylight.restconf.nb.rfc8040; import static java.util.Objects.requireNonNull; import java.net.URI; +import javax.xml.xpath.XPathExpressionException; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression; +import org.opendaylight.yangtools.yang.xpath.api.YangXPathMathMode; +import org.opendaylight.yangtools.yang.xpath.api.YangXPathParserFactory; /** * This class represents a {@code filter} parameter as defined in @@ -21,23 +25,23 @@ import org.opendaylight.yangtools.concepts.Immutable; public final class FilterParameter implements Immutable { private static final URI CAPABILITY = URI.create("urn:ietf:params:restconf:capability:filter:1.0"); - // FIXME: can we have a parsed, but not bound version of an XPath, please? - private final String value; + private final YangXPathExpression value; - private FilterParameter(final String value) { + private FilterParameter(final YangXPathExpression value) { this.value = requireNonNull(value); } - public static FilterParameter forUriValue(final String uriValue) { - return new FilterParameter(uriValue); + public static FilterParameter forUriValue(final YangXPathParserFactory parserFactory, final String uriValue) + throws XPathExpressionException { + return new FilterParameter(parserFactory.newParser(YangXPathMathMode.EXACT).parseExpression(uriValue)); } - public static String uriName() { - return "filter"; + public YangXPathExpression value() { + return value; } - public String uriValue() { - return value; + public static String uriName() { + return "filter"; } public static URI capabilityUri() {