Graduate ChildSchemaNodeNamespace as SchemaTreeNamespace
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / uses / UsesStatementSupport.java
index 3fffa8a010067ae78aeaf2602d5b7adbad0e335c..c260f2888b27b4cacbba33f9d7129bb13aa31710 100644 (file)
@@ -22,7 +22,6 @@ import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-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;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -32,15 +31,13 @@ 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.model.api.stmt.SchemaTreeEffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UsesEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.ChildSchemaNodeNamespace;
 import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.YangValidationBundles;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseQNameStatementSupport;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.refine.RefineEffectiveStatementImpl;
 import org.opendaylight.yangtools.yang.parser.spi.GroupingNamespace;
+import org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType;
 import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder;
@@ -147,7 +144,7 @@ public final class UsesStatementSupport
             final StmtContext<QName, UsesStatement, UsesEffectiveStatement> ctx, final UsesStatement declared,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         final GroupingDefinition sourceGrouping = getSourceGrouping(ctx);
-        final int flags = computeFlags(ctx, substatements);
+        final int flags = historyAndStatusFlags(ctx, substatements);
         final QName argument = ctx.coerceStatementArgument();
         if (declared.argument().equals(argument)) {
             return new RegularLocalUsesEffectiveStatement(declared, sourceGrouping, flags, substatements);
@@ -162,7 +159,7 @@ public final class UsesStatementSupport
     protected UsesEffectiveStatement createEmptyEffective(
             final StmtContext<QName, UsesStatement, UsesEffectiveStatement> ctx, final UsesStatement declared) {
         final GroupingDefinition sourceGrouping = getSourceGrouping(ctx);
-        final int flags = computeFlags(ctx, ImmutableList.of());
+        final int flags = historyAndStatusFlags(ctx, ImmutableList.of());
         final QName argument = ctx.coerceStatementArgument();
         return argument.equals(declared.argument())
                 ? new EmptyLocalUsesEffectiveStatement(declared, sourceGrouping, flags)
@@ -188,14 +185,6 @@ public final class UsesStatementSupport
                 .buildEffective();
     }
 
-    private static int computeFlags(final StmtContext<QName, UsesStatement, UsesEffectiveStatement> ctx,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        return new FlagsBuilder()
-                .setHistory(ctx.getCopyHistory())
-                .setStatus(findFirstArgument(substatements, StatusEffectiveStatement.class, Status.CURRENT))
-                .toFlags();
-    }
-
     /**
      * Copy statements from a grouping to a target node.
      *
@@ -312,7 +301,7 @@ public final class UsesStatementSupport
             subStmtCtx.getStatementSourceReference(),
             "Invalid refine argument %s. It must be instance of SchemaNodeIdentifier.", refineArgument);
 
-        final Optional<StmtContext<?, ?, ?>> optRefineTargetCtx = ChildSchemaNodeNamespace.findNode(
+        final Optional<StmtContext<?, ?, ?>> optRefineTargetCtx = SchemaTreeNamespace.findNode(
             usesParentCtx, (SchemaNodeIdentifier) refineArgument);
         InferenceException.throwIf(!optRefineTargetCtx.isPresent(), subStmtCtx.getStatementSourceReference(),
             "Refine target node %s not found.", refineArgument);
@@ -349,7 +338,7 @@ public final class UsesStatementSupport
         SourceException.throwIf(!isSupportedRefineTarget(refineSubstatementCtx, refineTargetNodeCtx),
                 refineSubstatementCtx.getStatementSourceReference(),
                 "Error in module '%s' in the refine of uses '%s': can not perform refine of '%s' for the target '%s'.",
-                refineSubstatementCtx.getRoot().getStatementArgument(),
+                refineSubstatementCtx.getRoot().rawStatementArgument(),
                 refineSubstatementCtx.coerceParentContext().getStatementArgument(),
                 refineSubstatementCtx.getPublicDefinition(), refineTargetNodeCtx.getPublicDefinition());