Integrate {Inference,Source}Exception with CommonStmtCtx
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / deviation / DeviationStatementSupport.java
index 36a044899871a4d4d0eea9ff090350127cea4b94..eea25b2bb65b1310644e441761e981ff91568a6c 100644 (file)
@@ -18,6 +18,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ArgumentUtils;
 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.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
@@ -50,13 +51,11 @@ public final class DeviationStatementSupport
     @Override
     public void onFullDefinitionDeclared(
             final Mutable<Absolute, DeviationStatement, DeviationEffectiveStatement> ctx) {
-        final QNameModule currentModule = ctx.getFromNamespace(ModuleCtxToModuleQName.class,
-                ctx.getRoot());
-        final QNameModule targetModule = Iterables.getLast(ctx.coerceStatementArgument().getNodeIdentifiers())
-                .getModule();
+        final QNameModule currentModule = ctx.getFromNamespace(ModuleCtxToModuleQName.class, ctx.getRoot());
+        final QNameModule targetModule = Iterables.getLast(ctx.getArgument().getNodeIdentifiers()).getModule();
 
         if (currentModule.equals(targetModule)) {
-            throw new InferenceException(ctx.getStatementSourceReference(),
+            throw new InferenceException(ctx,
                     "Deviation must not target the same module as the one it is defined in: %s", currentModule);
         }
     }
@@ -69,26 +68,17 @@ public final class DeviationStatementSupport
     @Override
     protected DeviationStatement createDeclared(final StmtContext<Absolute, DeviationStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new DeviationStatementImpl(ctx, substatements);
+        return new DeviationStatementImpl(ctx.getRawArgument(), ctx.getArgument(), substatements);
     }
 
     @Override
-    protected DeviationStatement createEmptyDeclared(
-            final StmtContext<Absolute, DeviationStatement, ?> ctx) {
-        return new DeviationStatementImpl(ctx, ImmutableList.of());
+    protected DeviationStatement createEmptyDeclared(final StmtContext<Absolute, DeviationStatement, ?> ctx) {
+        return createDeclared(ctx, ImmutableList.of());
     }
 
     @Override
-    protected DeviationEffectiveStatement createEffective(
-            final StmtContext<Absolute, DeviationStatement, DeviationEffectiveStatement> ctx,
-            final DeviationStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        return new DeviationEffectiveStatementImpl(declared, substatements);
-    }
-
-    @Override
-    protected DeviationEffectiveStatement createEmptyEffective(
-            final StmtContext<Absolute, DeviationStatement, DeviationEffectiveStatement> ctx,
-            final DeviationStatement declared) {
-        return new DeviationEffectiveStatementImpl(declared, ImmutableList.of());
+    protected DeviationEffectiveStatement createEffective(final Current<Absolute, DeviationStatement> stmt,
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return new DeviationEffectiveStatementImpl(stmt.declared(), substatements);
     }
 }
\ No newline at end of file