X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2FDeviationStatementImpl.java;h=68cb1fb8aecb769995730a21faa1b8437f1bdab4;hb=5079ec96bfeeb7a6ff66e71a114033c7d6c5c7a3;hp=d75e3d6b939c88c8487db3ae18822c062f1ca9e6;hpb=4f1692c802228d396f60fa2374646024781c1c12;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviationStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviationStatementImpl.java index d75e3d6b93..68cb1fb8ae 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviationStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviationStatementImpl.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement; @@ -15,7 +16,9 @@ import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier; import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; +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.source.ModuleCtxToModuleQName; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DeviationEffectiveStatementImpl; public class DeviationStatementImpl extends AbstractDeclaredStatement implements DeviationStatement { @@ -52,6 +55,19 @@ public class DeviationStatementImpl extends AbstractDeclaredStatement> ctx) { + final QNameModule currentModule = ctx.getFromNamespace(ModuleCtxToModuleQName.class, + ctx.getRoot()); + final QNameModule targetModule = ctx.getStatementArgument().getLastComponent().getModule(); + + if (currentModule.equals(targetModule)) { + throw new InferenceException(ctx.getStatementSourceReference(), + "Deviation must not target the same module as the one it is defined in: %s", currentModule); + } + } + @Override protected SubstatementValidator getSubstatementValidator() { return SUBSTATEMENT_VALIDATOR;