Convert trivial CopyPolicy users to StatementPolicy
[yangtools.git] / yang / openconfig-parser-support / src / main / java / org / opendaylight / yangtools / openconfig / parser / AbstractHashedValueStatementSupport.java
index c71fd92ec745dce69d67cb56c8d0357ac96dd047..5cfa08245f34f0a180aad69b222cb45b64016c65 100644 (file)
@@ -14,6 +14,7 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueEffectiveStatement;
 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueStatement;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -21,6 +22,8 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithoutArgument.WithSubstatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseVoidStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SchemaPathSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
@@ -45,14 +48,15 @@ abstract class AbstractHashedValueStatementSupport
     private static final class Effective
             extends UnknownEffectiveStatementBase<Void, OpenConfigHashedValueStatement>
             implements OpenConfigHashedValueEffectiveStatement {
-
+        private final @NonNull StatementDefinition definition;
         private final SchemaPath path;
 
-        Effective(final StmtContext<Void, OpenConfigHashedValueStatement, ?> ctx,
+        Effective(final Current<Void, OpenConfigHashedValueStatement> stmt,
                 final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-            super(ctx, substatements);
-            path = ctx.coerceParentContext().getSchemaPath().get().createChild(
-                ctx.getPublicDefinition().getStatementName());
+            super(stmt, substatements);
+            definition = stmt.publicDefinition();
+            path = SchemaPathSupport.wrap(stmt.getEffectiveParent().getSchemaPath()
+                    .createChild(stmt.publicDefinition().getStatementName()));
         }
 
         @Override
@@ -63,14 +67,19 @@ abstract class AbstractHashedValueStatementSupport
         @Override
         @Deprecated
         public SchemaPath getPath() {
-            return path;
+            return SchemaNodeDefaults.throwUnsupportedIfNull(this, path);
+        }
+
+        @Override
+        public StatementDefinition statementDefinition() {
+            return definition;
         }
     }
 
     private final SubstatementValidator validator;
 
     AbstractHashedValueStatementSupport(final StatementDefinition definition) {
-        super(definition);
+        super(definition, StatementPolicy.contextIndependent());
         this.validator = SubstatementValidator.builder(definition).build();
     }
 
@@ -93,17 +102,10 @@ abstract class AbstractHashedValueStatementSupport
     }
 
     @Override
-    protected final OpenConfigHashedValueEffectiveStatement createEffective(
-            final StmtContext<Void, OpenConfigHashedValueStatement, OpenConfigHashedValueEffectiveStatement> ctx,
-            final OpenConfigHashedValueStatement declared,
+    protected OpenConfigHashedValueEffectiveStatement createEffective(
+            final Current<Void, OpenConfigHashedValueStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        return new Effective(ctx, substatements);
+        return new Effective(stmt, substatements);
     }
 
-    @Override
-    protected final OpenConfigHashedValueEffectiveStatement createEmptyEffective(
-            final StmtContext<Void, OpenConfigHashedValueStatement, OpenConfigHashedValueEffectiveStatement> ctx,
-            final OpenConfigHashedValueStatement declared) {
-        return createEffective(ctx, declared, ImmutableList.of());
-    }
 }