Migrate coerceStatementArgument() callers
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / refine / AbstractRefineStatementSupport.java
index c914b20359d74695b9ee12c1654a564e1af5cbf6..50a2696ea201dcfc4f11d6eddb54cb9b920bd12d 100644 (file)
@@ -7,35 +7,48 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.refine;
 
+import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+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.RefineEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ArgumentUtils;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
-abstract class AbstractRefineStatementSupport extends AbstractStatementSupport<SchemaNodeIdentifier, RefineStatement,
-        EffectiveStatement<SchemaNodeIdentifier, RefineStatement>> {
+abstract class AbstractRefineStatementSupport
+        extends BaseStatementSupport<Descendant, RefineStatement, RefineEffectiveStatement> {
 
     AbstractRefineStatementSupport() {
         super(YangStmtMapping.REFINE);
     }
 
     @Override
-    public final SchemaNodeIdentifier parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
-        return ArgumentUtils.nodeIdentifierFromPath(ctx, value);
+    public final Descendant parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+        return ArgumentUtils.parseDescendantSchemaNodeIdentifier(ctx, value);
     }
 
     @Override
-    public final RefineStatement createDeclared(final StmtContext<SchemaNodeIdentifier, RefineStatement, ?> ctx) {
-        return new RefineStatementImpl(ctx);
+    protected final RefineStatement createDeclared(final StmtContext<Descendant, RefineStatement, ?> ctx,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return new RefineStatementImpl(ctx.getRawArgument(), ctx.getArgument(), substatements);
     }
 
     @Override
-    public final EffectiveStatement<SchemaNodeIdentifier, RefineStatement> createEffective(
-            final StmtContext<SchemaNodeIdentifier, RefineStatement,
-            EffectiveStatement<SchemaNodeIdentifier, RefineStatement>> ctx) {
-        return new RefineEffectiveStatementImpl(ctx);
+    protected final RefineStatement createEmptyDeclared(final StmtContext<Descendant, RefineStatement, ?> ctx) {
+        // Empty refine is exceedingly unlikely: let's be lazy and reuse the implementation
+        return createDeclared(ctx, ImmutableList.of());
     }
-}
\ No newline at end of file
+
+    @Override
+    protected final RefineEffectiveStatement createEffective(final Current<Descendant, RefineStatement> stmt,
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        // Empty refine is exceedingly unlikely: let's be lazy and reuse the implementation
+        return new RefineEffectiveStatementImpl(stmt.declared(), substatements, stmt.getSchemaPath(),
+                (SchemaNode) stmt.caerbannog().getEffectOfStatement().iterator().next().buildEffective());
+    }
+}