Expose minimum YANG version for YangFunction 34/85434/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 30 Oct 2019 13:44:56 +0000 (14:44 +0100)
committerRobert Varga <nite@hq.sk>
Wed, 30 Oct 2019 14:25:31 +0000 (14:25 +0000)
Not all YangFunctions are available when we are operating in RFC6020
mode. This patch exposes the minimum YANG version from YangFunction,
so it can be checked at runtime.

JIRA: YANGTOOLS-1036
Change-Id: Ieedd58202dd14be9da7cd079c5180e92450c9e5b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit d360dda9dc1fd55ecb6bf02be98e385948270068)

yang/yang-xpath-api/src/main/java/org/opendaylight/yangtools/yang/xpath/api/YangFunction.java

index 7e893eb146986c466a9b817e6cd9af8afddaf6b8..4e82369296028c433d1668699947553fdc5ee783 100644 (file)
@@ -7,10 +7,13 @@
  */
 package org.opendaylight.yangtools.yang.xpath.api;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.annotations.Beta;
 import org.opendaylight.yangtools.concepts.Identifiable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.YangConstants;
+import org.opendaylight.yangtools.yang.common.YangVersion;
 
 /**
  * Functions known to a YANG XPath.
@@ -48,23 +51,40 @@ public enum YangFunction implements Identifiable<QName> {
     TRANSLATE("translate"),
     TRUE("true"),
 
-    // RFC7950 functions
-    BIT_IS_SET("bit-is-set"),
+    // RFC6020 functions
     CURRENT("current"),
-    DEREF("deref"),
-    DERIVED_FROM("derived-from"),
-    DERIVED_FROM_OR_SELF("derived-from-or-self"),
-    ENUM_VALUE("enum-value"),
-    RE_MATCH("re-match");
+
+    // RFC7950 functions
+    BIT_IS_SET("bit-is-set", YangVersion.VERSION_1_1),
+    DEREF("deref", YangVersion.VERSION_1_1),
+    DERIVED_FROM("derived-from", YangVersion.VERSION_1_1),
+    DERIVED_FROM_OR_SELF("derived-from-or-self", YangVersion.VERSION_1_1),
+    ENUM_VALUE("enum-value", YangVersion.VERSION_1_1),
+    RE_MATCH("re-match", YangVersion.VERSION_1_1);
 
     private final QName identifier;
+    private final YangVersion yangVersion;
 
-    YangFunction(final String localName) {
+    YangFunction(final String localName, final YangVersion yangVersion) {
         identifier = QName.create(YangConstants.RFC6020_YIN_MODULE, localName).intern();
+        this.yangVersion = requireNonNull(yangVersion);
+    }
+
+    YangFunction(final String localName) {
+        this(localName, YangVersion.VERSION_1);
     }
 
     @Override
     public QName getIdentifier() {
         return identifier;
     }
+
+    /**
+     * Return the minimum YANG version where this function is supported.
+     *
+     * @return First YANG version where this function appeared.
+     */
+    public YangVersion getYangVersion() {
+        return yangVersion;
+    }
 }