Split out yang-model-ri
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / list / ListStatementSupport.java
index bff75b6cf5b190b697eedc65a94ab8ccac97239e..24b9e078bdc496654c94712ce12f5a7c991f2ceb 100644 (file)
@@ -20,12 +20,12 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -36,10 +36,11 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ListEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseSchemaTreeStatementSupport;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.SubstatementIndexingException;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractSchemaTreeStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Parent;
@@ -54,7 +55,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Beta
-public final class ListStatementSupport extends BaseSchemaTreeStatementSupport<ListStatement, ListEffectiveStatement> {
+public final class ListStatementSupport
+        extends AbstractSchemaTreeStatementSupport<ListStatement, ListEffectiveStatement> {
     private static final Logger LOG = LoggerFactory.getLogger(ListStatementSupport.class);
     private static final ImmutableSet<YangStmtMapping> UNINSTANTIATED_DATATREE_STATEMENTS = ImmutableSet.of(
         YangStmtMapping.GROUPING, YangStmtMapping.NOTIFICATION, YangStmtMapping.INPUT, YangStmtMapping.OUTPUT);
@@ -134,12 +136,12 @@ public final class ListStatementSupport extends BaseSchemaTreeStatementSupport<L
     @Override
     protected ListStatement createDeclared(final StmtContext<QName, ListStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularListStatement(ctx.getArgument(), substatements);
+        return DeclaredStatements.createList(ctx.getArgument(), substatements);
     }
 
     @Override
     protected ListStatement createEmptyDeclared(final StmtContext<QName, ListStatement, ?> ctx) {
-        return new EmptyListStatement(ctx.getArgument());
+        return DeclaredStatements.createList(ctx.getArgument());
     }
 
     @Override
@@ -148,10 +150,10 @@ public final class ListStatementSupport extends BaseSchemaTreeStatementSupport<L
         final int flags = computeFlags(stmt, original.effectiveSubstatements());
         if (original instanceof RegularListEffectiveStatement) {
             return new RegularListEffectiveStatement((RegularListEffectiveStatement) original,
-                (ListSchemaNode) stmt.original(), stmt.wrapSchemaPath(), flags);
+                (ListSchemaNode) stmt.original(), stmt.effectivePath(), flags);
         } else if (original instanceof EmptyListEffectiveStatement) {
             return new RegularListEffectiveStatement((EmptyListEffectiveStatement) original,
-                (ListSchemaNode) stmt.original(), stmt.wrapSchemaPath(), flags);
+                (ListSchemaNode) stmt.original(), stmt.effectivePath(), flags);
         } else {
             // Safe fallback
             return super.copyEffective(stmt, original);
@@ -195,7 +197,7 @@ public final class ListStatementSupport extends BaseSchemaTreeStatementSupport<L
 
         final Optional<ElementCountConstraint> elementCountConstraint =
             EffectiveStmtUtils.createElementCountConstraint(substatements);
-        final SchemaPath path = stmt.wrapSchemaPath();
+        final Immutable path = stmt.effectivePath();
         final ListSchemaNode original = (ListSchemaNode) stmt.original();
         try {
             return original == null && !elementCountConstraint.isPresent()