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>
*/
package org.opendaylight.yangtools.yang.xpath.api;
*/
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 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.
/**
* Functions known to a YANG XPath.
TRANSLATE("translate"),
TRUE("true"),
TRANSLATE("translate"),
TRUE("true"),
- // RFC7950 functions
- BIT_IS_SET("bit-is-set"),
- 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 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();
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;
}
}
@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;
+ }