Update yang-parser-api
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / meta / IdentityStatementSupport.java
index b262f6fba42250c99d24d99f71cf1d68716ed31c..e8ed3225affc6f4771b37cbb316a12e6d5ed1c47 100644 (file)
@@ -21,15 +21,18 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
 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.stmt.BaseEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatementDecorators;
 import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
 import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
+import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.IdentityNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
@@ -42,35 +45,35 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 @Beta
 public final class IdentityStatementSupport
         extends AbstractQNameStatementSupport<IdentityStatement, IdentityEffectiveStatement> {
-    private static final @NonNull IdentityStatementSupport RFC6020_INSTANCE = new IdentityStatementSupport(
+    private static final SubstatementValidator RFC6020_VALIDATOR =
         SubstatementValidator.builder(YangStmtMapping.IDENTITY)
             .addOptional(YangStmtMapping.BASE)
             .addOptional(YangStmtMapping.DESCRIPTION)
             .addOptional(YangStmtMapping.REFERENCE)
             .addOptional(YangStmtMapping.STATUS)
-            .build());
-    private static final @NonNull IdentityStatementSupport RFC7950_INSTANCE = new IdentityStatementSupport(
+            .build();
+    private static final SubstatementValidator RFC7950_VALIDATOR =
         SubstatementValidator.builder(YangStmtMapping.IDENTITY)
             .addAny(YangStmtMapping.BASE)
             .addOptional(YangStmtMapping.DESCRIPTION)
             .addAny(YangStmtMapping.IF_FEATURE)
             .addOptional(YangStmtMapping.REFERENCE)
             .addOptional(YangStmtMapping.STATUS)
-            .build());
+            .build();
 
     private final SubstatementValidator validator;
 
-    private IdentityStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.IDENTITY, StatementPolicy.reject());
+    private IdentityStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
+        super(YangStmtMapping.IDENTITY, StatementPolicy.reject(), config);
         this.validator = requireNonNull(validator);
     }
 
-    public static @NonNull IdentityStatementSupport rfc6020Instance() {
-        return RFC6020_INSTANCE;
+    public static @NonNull IdentityStatementSupport rfc6020Instance(final YangParserConfiguration config) {
+        return new IdentityStatementSupport(config, RFC6020_VALIDATOR);
     }
 
-    public static @NonNull IdentityStatementSupport rfc7950Instance() {
-        return RFC7950_INSTANCE;
+    public static @NonNull IdentityStatementSupport rfc7950Instance(final YangParserConfiguration config) {
+        return new IdentityStatementSupport(config, RFC7950_VALIDATOR);
     }
 
     @Override
@@ -99,8 +102,9 @@ public final class IdentityStatementSupport
     }
 
     @Override
-    protected IdentityStatement createEmptyDeclared(final StmtContext<QName, IdentityStatement, ?> ctx) {
-        return DeclaredStatements.createIdentity(ctx.getArgument());
+    protected IdentityStatement attachDeclarationReference(final IdentityStatement stmt,
+            final DeclarationReference reference) {
+        return DeclaredStatementDecorators.decorateIdentity(stmt, reference);
     }
 
     @Override