Update yang-parser-api
[yangtools.git] / yang / openconfig-parser-support / src / main / java / org / opendaylight / yangtools / openconfig / parser / AbstractHashedValueStatementSupport.java
index e1dd8b7798d56dea08f6adb39e5177ac73a9dccf..8e792ebd98b99ac4b6007984761d2344b4d24cd5 100644 (file)
@@ -11,24 +11,27 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueEffectiveStatement;
 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueStatement;
+import org.opendaylight.yangtools.yang.common.Empty;
 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;
 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.model.spi.meta.AbstractDeclaredStatement.WithoutArgument.WithSubstatements;
+import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractEmptyStatementSupport;
 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;
 
 abstract class AbstractHashedValueStatementSupport
-        extends BaseVoidStatementSupport<OpenConfigHashedValueStatement, OpenConfigHashedValueEffectiveStatement> {
+        extends AbstractEmptyStatementSupport<OpenConfigHashedValueStatement, OpenConfigHashedValueEffectiveStatement> {
 
     private static final class Declared extends WithSubstatements implements OpenConfigHashedValueStatement {
         private final @NonNull StatementDefinition definition;
@@ -46,40 +49,45 @@ abstract class AbstractHashedValueStatementSupport
     }
 
     private static final class Effective
-            extends UnknownEffectiveStatementBase<Void, OpenConfigHashedValueStatement>
+            extends UnknownEffectiveStatementBase<Empty, OpenConfigHashedValueStatement>
             implements OpenConfigHashedValueEffectiveStatement {
         private final @NonNull StatementDefinition definition;
-        private final SchemaPath path;
+        private final @NonNull Immutable path;
 
-        Effective(final Current<Void, OpenConfigHashedValueStatement> stmt,
+        Effective(final Current<Empty, OpenConfigHashedValueStatement> stmt,
                 final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
             super(stmt, substatements);
             definition = stmt.publicDefinition();
-            path = SchemaPathSupport.wrap(stmt.getEffectiveParent().getSchemaPath()
+            path = SchemaPathSupport.toEffectivePath(stmt.getEffectiveParent().getSchemaPath()
                     .createChild(stmt.publicDefinition().getStatementName()));
         }
 
         @Override
         public QName getQName() {
-            return path.getLastComponent();
+            return SchemaNodeDefaults.extractQName(path);
         }
 
         @Override
         @Deprecated
         public SchemaPath getPath() {
-            return SchemaNodeDefaults.throwUnsupportedIfNull(this, path);
+            return SchemaNodeDefaults.extractPath(this, path);
         }
 
         @Override
         public StatementDefinition statementDefinition() {
             return definition;
         }
+
+        @Override
+        public OpenConfigHashedValueEffectiveStatement asEffectiveStatement() {
+            return this;
+        }
     }
 
     private final SubstatementValidator validator;
 
-    AbstractHashedValueStatementSupport(final StatementDefinition definition) {
-        super(definition);
+    AbstractHashedValueStatementSupport(final StatementDefinition definition, final YangParserConfiguration config) {
+        super(definition, StatementPolicy.contextIndependent(), config);
         this.validator = SubstatementValidator.builder(definition).build();
     }
 
@@ -90,22 +98,15 @@ abstract class AbstractHashedValueStatementSupport
 
     @Override
     protected final OpenConfigHashedValueStatement createDeclared(
-            final StmtContext<Void, OpenConfigHashedValueStatement, ?> ctx,
+            final StmtContext<Empty, OpenConfigHashedValueStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         return new Declared(getPublicView(), substatements);
     }
 
-    @Override
-    protected final OpenConfigHashedValueStatement createEmptyDeclared(
-            final StmtContext<Void, OpenConfigHashedValueStatement, ?> ctx) {
-        return createDeclared(ctx, ImmutableList.of());
-    }
-
     @Override
     protected OpenConfigHashedValueEffectiveStatement createEffective(
-            final Current<Void, OpenConfigHashedValueStatement> stmt,
+            final Current<Empty, OpenConfigHashedValueStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         return new Effective(stmt, substatements);
     }
-
 }