-
Bug
-
Resolution: Unresolved
-
Low
-
None
-
8.0.5, 7.0.17
-
None
When building EffectiveSchemaContext for YANG modules, one with submodules and the other with groupings imported from the submodules, the process may fail with module name space collision.
Following is such an example. There are 2 modules (foo & bar): foo has two submodules (foo-a & foo-b) and bar uses groupings from foo defined in its submodules.
module foo { namespace "urn:foo"; prefix "foo"; include foo-a; include foo-b; container foo { uses foo-a; uses foo-b; } }
submodule foo-a { belongs-to foo { prefix "foo"; } grouping foo-a { leaf a { type string; } } }
submodule foo-b { belongs-to foo { prefix "foo"; } grouping foo-b { leaf b { type string; } } }
module bar { namespace "urn:bar"; prefix "bar"; import foo { prefix "foo"; } container bar { uses foo:foo-a; uses foo:foo-b; } }
Error message while compiling foo and bar:
Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Module namespace collision: urn:foo. At /home/jenkins/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1435/foo.yang:1:1 [at /home/jenkins/OpenDaylight/yangtools/parser/yang-parser-rfc7950/target/test-classes/bugs/YT1435/foo.yang:1:1] at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.stmt.module.ModuleStatementSupport.onLinkageDeclared(ModuleStatementSupport.java:173) at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.onDeclarationFinished(StatementDefinitionContext.java:76) at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx.finishDeclaration(OriginalStmtCtx.java:161) at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.exitStatement(AbstractResumedStatement.java:227) at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextWriter.endStatement(StatementContextWriter.java:79) at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.doProcessStatement(StatementContextVisitor.java:125) at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:111) at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:96) at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.visit(StatementContextVisitor.java:46) at org.opendaylight.yangtools.yang.parser.rfc7950@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource.writeLinkage(YangStatementStreamSource.java:104) at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.loadStatements(SourceSpecificContext.java:414) at org.opendaylight.yangtools.yang.parser.reactor@9.0.0-SNAPSHOT/org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:300) ... 46 more