Add OpenConfig pattern-related statement definitions 73/92973/5
authorMartin Bobak <martin.bobak@pantheon.tech>
Wed, 7 Oct 2020 16:03:22 +0000 (18:03 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 1 Feb 2021 23:06:44 +0000 (00:06 +0100)
OpenConfig defines two extensions to deal with pattern statements.

The first is a semantic marker to tell the parser that OpenConfig's
interpretation of what is 'pattern' is used within that source file,
i.e. patterns are some variant of POSIX regular expression.

The second one is a properly-defined YANG extension which carries
the POSIX RE. This extension is a sibling to pattern statement,
whose argument is a YANG-compliant XSD regular expression.

JIRA: YANGTOOLS-1132
Change-Id: I6bd1c074eda2a02eea59913c939b9c236fdf8e8c
Signed-off-by: Martin Bobak <martin.bobak@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigConstants.java
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigPosixPatternEffectiveStatement.java [new file with mode: 0644]
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigPosixPatternStatement.java [new file with mode: 0644]
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigRegexpPosixEffectiveStatement.java [new file with mode: 0644]
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigRegexpPosixStatement.java [new file with mode: 0644]
yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigStatements.java

index fcbcb60cd410033ee14dcf3998166558fc037e90..dbf0c1c064dadf06122a0ac3eb35ca4f48b0c63d 100644 (file)
@@ -37,6 +37,14 @@ public final class OpenConfigConstants {
     // Revised extension, renames openconfig-encrypted-value to openconfig-hashed-value
     private static final Revision HASHED_VALUE_REVISION = Revision.of("2017-04-11");
 
+    // Revised extension, adds extension for POSIX pattern statements
+    private static final Revision REGEXP_POSIX_REVISION = Revision.of("2020-06-16");
+
+    /**
+    * Runtime identity of model which exposed regexp-posix.
+    */
+    public static final QNameModule REGEXP_POSIX_MODULE = QNameModule.create(MODULE_NAMESPACE, REGEXP_POSIX_REVISION)
+            .intern();
     /**
      * Runtime identity of initial model.
      */
@@ -72,6 +80,11 @@ public final class OpenConfigConstants {
     public static final SourceIdentifier HASHED_VALUE_SOURCE = RevisionSourceIdentifier.create(MODULE_NAME,
         HASHED_VALUE_REVISION);
 
+    /**
+     * Original model source name.
+     */
+    public static final SourceIdentifier REGEXP_POSIX_SOURCE = RevisionSourceIdentifier.create(MODULE_NAME,
+            REGEXP_POSIX_REVISION);
     /**
      * Normative prefix to use when importing {@link #SEMVER_SOURCE} and later.
      */
diff --git a/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigPosixPatternEffectiveStatement.java b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigPosixPatternEffectiveStatement.java
new file mode 100644 (file)
index 0000000..10c13e4
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.openconfig.model.api;
+
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+
+/**
+ * Effective statement corresponding to openconfig's "posix-pattern".
+ *
+ * @author Martin Bobak
+ */
+public interface OpenConfigPosixPatternEffectiveStatement
+        extends EffectiveStatement<String, OpenConfigPosixPatternStatement> {
+
+}
diff --git a/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigPosixPatternStatement.java b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigPosixPatternStatement.java
new file mode 100644 (file)
index 0000000..b46fa25
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.openconfig.model.api;
+
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+
+/**
+ * Declared statement corresponding to config's "posix-pattern" .
+ *
+ * @author Martin Bobak
+ */
+public interface OpenConfigPosixPatternStatement extends UnknownStatement<String> {
+
+}
diff --git a/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigRegexpPosixEffectiveStatement.java b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigRegexpPosixEffectiveStatement.java
new file mode 100644 (file)
index 0000000..e9e7f3d
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.openconfig.model.api;
+
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+
+/**
+ * Effective statement corresponding to config's "regexp-posix" .
+ */
+public interface OpenConfigRegexpPosixEffectiveStatement
+        extends EffectiveStatement<Void, OpenConfigRegexpPosixStatement> {
+
+}
diff --git a/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigRegexpPosixStatement.java b/yang/openconfig-model-api/src/main/java/org/opendaylight/yangtools/openconfig/model/api/OpenConfigRegexpPosixStatement.java
new file mode 100644 (file)
index 0000000..5011522
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.openconfig.model.api;
+
+import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+
+/**
+ * Declared statement corresponding to config's "regexp-posix" .
+ *
+ * @author Martin Bobak
+ */
+public interface OpenConfigRegexpPosixStatement extends UnknownStatement<Void> {
+
+}
index 9fcc47c3427253c050f2a3adb412f32acba611d8..6da5875c077014236ccf008c15c2b0112a959bed 100644 (file)
@@ -27,6 +27,10 @@ public enum OpenConfigStatements implements StatementDefinition {
         null, OpenConfigHashedValueStatement.class, OpenConfigHashedValueEffectiveStatement.class),
     OPENCONFIG_HASHED_VALUE(QName.create(OpenConfigConstants.HASHED_VALUE_MODULE, "openconfig-hashed-value"), null,
         OpenConfigHashedValueStatement.class, OpenConfigHashedValueEffectiveStatement.class),
+    OPENCONFIG_POSIX_PATTERN(QName.create(OpenConfigConstants.REGEXP_POSIX_MODULE, "posix-pattern"), "pattern",
+        OpenConfigPosixPatternStatement.class, OpenConfigPosixPatternEffectiveStatement.class),
+    OPENCONFIG_REGEXP_POSIX(QName.create(OpenConfigConstants.REGEXP_POSIX_MODULE, "regexp-posix"), null,
+        OpenConfigRegexpPosixStatement.class, OpenConfigRegexpPosixEffectiveStatement.class),
     OPENCONFIG_VERSION(QName.create(OpenConfigConstants.MODULE_NAMESPACE, "openconfig-version"), "semver",
         OpenConfigVersionStatement.class, OpenConfigVersionEffectiveStatement.class);