Centralize SchemaNode.getPath() dispatch
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / identity / AbstractIdentityEffectiveStatement.java
index 497745a3e8f2447f4ccbf8999faeccdb12db264a..b4590255661df9d39fa62b0ed09eb04e1892c486 100644 (file)
@@ -8,33 +8,38 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.identity;
 
 import com.google.common.base.MoreObjects;
-import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
+import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.SchemaNodeMixin;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
 abstract class AbstractIdentityEffectiveStatement extends DefaultArgument<QName, IdentityStatement>
         implements IdentityEffectiveStatement, IdentitySchemaNode, SchemaNodeMixin<QName, IdentityStatement> {
-    private final @NonNull SchemaPath path;
+    private final @Nullable SchemaPath path;
 
-    AbstractIdentityEffectiveStatement(final IdentityStatement declared,
-            final StmtContext<QName, IdentityStatement, IdentityEffectiveStatement> ctx) {
+    AbstractIdentityEffectiveStatement(final IdentityStatement declared, final SchemaPath path) {
         super(declared);
-        this.path = ctx.getSchemaPath().get();
+        this.path = path;
     }
 
     @Override
+    @Deprecated
     public final SchemaPath getPath() {
-        return path;
+        return SchemaNodeDefaults.throwUnsupportedIfNull(this, path);
+    }
+
+    @Override
+    public final IdentityEffectiveStatement asEffectiveStatement() {
+        return this;
     }
 
     @Override
     public final String toString() {
-        return MoreObjects.toStringHelper(this).add("qname", getQName()).add("path", getPath()).toString();
+        return MoreObjects.toStringHelper(this).add("qname", getQName()).add("path", path).toString();
     }
 }