Promote more declared statements to yang-parser-spi
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / grouping / GroupingStatementSupport.java
index 68ab5afcd3986fe3e2037eae9a794b8c7f822a49..33c3409c9dc83278964c28936d30fccb99f3ddd1 100644 (file)
@@ -19,8 +19,9 @@ 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.GroupingEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.SubstatementIndexingException;
 import org.opendaylight.yangtools.yang.parser.spi.GroupingNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
@@ -75,7 +76,11 @@ public final class GroupingStatementSupport
     private final SubstatementValidator validator;
 
     GroupingStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.GROUPING, StatementPolicy.legacyDeclaredCopy());
+        super(YangStmtMapping.GROUPING, StatementPolicy.copyDeclared(
+            (copy, current, substatements) ->
+                copy.history().isAddedByUses() == current.history().isAddedByUses()
+                && copy.getArgument().equals(current.getArgument())
+                && copy.equalParentPath(current)));
         this.validator = requireNonNull(validator);
     }
 
@@ -134,20 +139,20 @@ public final class GroupingStatementSupport
     @Override
     protected GroupingStatement createDeclared(final StmtContext<QName, GroupingStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularGroupingStatement(ctx.getArgument(), substatements);
+        return DeclaredStatements.createGrouping(ctx.getArgument(), substatements);
     }
 
     @Override
     protected GroupingStatement createEmptyDeclared(final StmtContext<QName, GroupingStatement, ?> ctx) {
-        return new EmptyGroupingStatement(ctx.getArgument());
+        return DeclaredStatements.createGrouping(ctx.getArgument());
     }
 
     @Override
     protected GroupingEffectiveStatement createEffective(final Current<QName, GroupingStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         try {
-            return new GroupingEffectiveStatementImpl(stmt.declared(), substatements,
-                EffectiveStatementMixins.historyAndStatusFlags(stmt.history(), substatements), stmt.wrapSchemaPath());
+            return new GroupingEffectiveStatementImpl(stmt.declared(), substatements, stmt.effectivePath(),
+                EffectiveStatementMixins.historyAndStatusFlags(stmt.history(), substatements));
         } catch (SubstatementIndexingException e) {
             throw new SourceException(e.getMessage(), stmt, e);
         }