Add OpenConfig pattern-related statement definitions
[yangtools.git] / yang / openconfig-model-api / src / main / java / org / opendaylight / yangtools / openconfig / model / api / OpenConfigStatements.java
index ffdde636fa45028bc7a55d3af93cf8a267a5e416..6da5875c077014236ccf008c15c2b0112a959bed 100644 (file)
@@ -10,69 +10,62 @@ package org.opendaylight.yangtools.openconfig.model.api;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import java.util.Optional;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.meta.ArgumentDefinition;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 
 @Beta
+@NonNullByDefault
 public enum OpenConfigStatements implements StatementDefinition {
-    // FIXME: add support for hashed value
-    OPENCONFIG_VERSION(QName.create(OpenConfigConstants.SEMVER_MODULE.getNamespace(), "openconfig-version"), "semver",
-        OpenconfigVersionStatement.class, OpenconfigVersionEffectiveStatement.class);
+    OPENCONFIG_ENCRYPTED_VALUE(QName.create(OpenConfigConstants.ENCRYPTED_VALUE_MODULE, "openconfig-encrypted-value"),
+        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);
 
     private final Class<? extends EffectiveStatement<?, ?>> effectiveRepresentation;
     private final Class<? extends DeclaredStatement<?>> declaredRepresentation;
     private final QName statementName;
-    private final QName argumentName;
+    private final @Nullable QName argumentName;
 
-    OpenConfigStatements(final QName statementName, final String argumentName,
+    @SuppressFBWarnings("NP_STORE_INTO_NONNULL_FIELD")
+    OpenConfigStatements(final QName statementName, @Nullable final String argumentName,
             final Class<? extends DeclaredStatement<?>> declaredRepresentation,
             final Class<? extends EffectiveStatement<?, ?>> effectiveRepresentation) {
         this.statementName = statementName.intern();
-        this.argumentName = QName.create(statementName, argumentName);
+        this.argumentName = argumentName != null ? QName.create(statementName, argumentName) : null;
         this.declaredRepresentation = requireNonNull(declaredRepresentation);
         this.effectiveRepresentation = requireNonNull(effectiveRepresentation);
     }
 
-    @Nonnull
-    private static QName createQName(final String namespace, final String localName) {
-        return QName.create(namespace, localName).intern();
-    }
-
-    @Nonnull
-    private static QName createQName(final String namespace, final String revision, final String localName) {
-        return QName.create(namespace, revision, localName).intern();
-    }
-
-    @Nonnull
     @Override
     public QName getStatementName() {
         return statementName;
     }
 
     @Override
-    @Nullable
-    public QName getArgumentName() {
-        return argumentName;
+    public Optional<ArgumentDefinition> getArgumentDefinition() {
+        return ArgumentDefinition.ofNullable(argumentName, false);
     }
 
     @Override
-    @Nonnull
     public Class<? extends DeclaredStatement<?>> getDeclaredRepresentationClass() {
         return declaredRepresentation;
     }
 
-    @Nonnull
     @Override
     public Class<? extends EffectiveStatement<?, ?>> getEffectiveRepresentationClass() {
         return effectiveRepresentation;
     }
-
-    @Override
-    public boolean isArgumentYinElement() {
-        return false;
-    }
 }