[YANGTOOLS-1201] Unable to use prefix in augmention when argument inside submodule Created: 10/Dec/20 Updated: 10/Dec/20 Resolved: 10/Dec/20 |
|
| Status: | Resolved |
| Project: | yangtools |
| Component/s: | parser |
| Affects Version/s: | 4.0.14, 5.0.7, 6.0.1 |
| Fix Version/s: | 7.0.0, 5.0.8, 6.0.2, 4.0.15 |
| Type: | Bug | Priority: | Medium |
| Reporter: | Martin Balaz | Assignee: | Robert Varga |
| Resolution: | Done | Votes: | 0 |
| Labels: | pt | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Problem with using prefix inside a when argument. This happens only inside a submodule trying to augment nodes from module to which it belongs. Example [1]:
submodule ietf-snmp-community {
belongs-to ietf-snmp {
prefix snmp;
}
...
augment /snmp:snmp/snmp:target {
when "snmp:v1 or snmp:v2c";
...
}
}
Error message:
Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Argument "snmp:v1 or snmp:v2c" is not valid XPath string [at experimental/ietf-extracted-YANG-modules/ietf-snmp-community@2014-05-06.yang:192:4]
...
Caused by: javax.xml.xpath.XPathExpressionException: java.lang.IllegalArgumentException: Prefix snmp is not bound
|
| Comments |
| Comment by Martin Balaz [ 10/Dec/20 ] |
17:57:53.135 [main] ERROR org.opendaylight.yangtools.yang.validator.Main - Failed to create SchemaContext.17:57:53.135 [main] ERROR org.opendaylight.yangtools.yang.validator.Main - Failed to create SchemaContext.org.opendaylight.yangtools.yang.model.parser.api.YangParserException: Failed to assemble sources at org.opendaylight.yangtools.yang.parser.impl.YangParserImpl.decodeReactorException(YangParserImpl.java:110) at org.opendaylight.yangtools.yang.parser.impl.YangParserImpl.buildEffectiveModel(YangParserImpl.java:104) at org.opendaylight.yangtools.yang.validator.SystemTestUtils.parseYangSources(SystemTestUtils.java:106) at org.opendaylight.yangtools.yang.validator.SystemTestUtils.parseYangSources(SystemTestUtils.java:87) at org.opendaylight.yangtools.yang.validator.Main.runSystemTest(Main.java:177) at org.opendaylight.yangtools.yang.validator.Main.main(Main.java:136)Caused by: org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException: Some of FULL_DECLARATION modifiers for statements were not resolved. at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.propagateException(BuildGlobalContext.java:259) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:325) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatements(BuildGlobalContext.java:315) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.executePhases(BuildGlobalContext.java:221) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.buildEffective(BuildGlobalContext.java:233) at org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor$BuildAction.buildEffective(CrossSourceStatementReactor.java:232) at org.opendaylight.yangtools.yang.parser.impl.YangParserImpl.buildEffectiveModel(YangParserImpl.java:102) ... 4 common frames omittedCaused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Argument "snmp:v1 or snmp:v2c" is not valid XPath string [at experimental/ietf-extracted-YANG-modules/ietf-snmp-community@2014-05-06.yang:192:4] at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.XPathSupport.parseXPath(XPathSupport.java:42) at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.when.WhenStatementSupport.parseArgumentValue(WhenStatementSupport.java:46) at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.when.WhenStatementSupport.parseArgumentValue(WhenStatementSupport.java:25) at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementDefinitionContext.parseArgumentValue(StatementDefinitionContext.java:47) at org.opendaylight.yangtools.yang.parser.stmt.reactor.SubstatementContext.<init>(SubstatementContext.java:37) at org.opendaylight.yangtools.yang.parser.stmt.reactor.AbstractResumedStatement.createSubstatement(AbstractResumedStatement.java:149) at org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.createDeclaredChild(SourceSpecificContext.java:142) at org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextWriter.startStatement(StatementContextWriter.java:70) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:110) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:96) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.doProcessStatement(StatementContextVisitor.java:119) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:111) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:96) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.doProcessStatement(StatementContextVisitor.java:119) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processNewStatement(StatementContextVisitor.java:111) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.processStatement(StatementContextVisitor.java:96) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.StatementContextVisitor.visit(StatementContextVisitor.java:46) at org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangStatementStreamSource.writeFull(YangStatementStreamSource.java:126) at org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.loadStatements(SourceSpecificContext.java:369) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:323) ... 9 common frames omittedCaused by: javax.xml.xpath.XPathExpressionException: java.lang.IllegalArgumentException: Prefix snmp is not bound at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseExpr(AntlrXPathParser.java:277) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser$Qualified.parseExpression(AntlrXPathParser.java:151) at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.XPathSupport.parseXPath(XPathSupport.java:40) ... 28 common frames omittedCaused by: java.lang.IllegalArgumentException: Prefix snmp is not bound at com.google.common.base.Preconditions.checkArgument(Preconditions.java:217) at org.opendaylight.yangtools.yang.common.YangNamespaceContext.createQName(YangNamespaceContext.java:63) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser$Qualified.createQName(AntlrXPathParser.java:158) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser$Qualified.createStep(AntlrXPathParser.java:164) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser$Qualified.createStep(AntlrXPathParser.java:141) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.createStep(AntlrXPathParser.java:248) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseStep(AntlrXPathParser.java:620) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseLocationPathSteps(AntlrXPathParser.java:456) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseLocationPath(AntlrXPathParser.java:375) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parsePathExpr(AntlrXPathParser.java:409) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseUnion(AntlrXPathParser.java:503) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseUnary(AntlrXPathParser.java:491) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseMultiplicative(AntlrXPathParser.java:391) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseAdditive(AntlrXPathParser.java:306) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseRelational(AntlrXPathParser.java:449) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseEquality(AntlrXPathParser.java:324) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseAnd(AntlrXPathParser.java:313) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseExpr(AntlrXPathParser.java:299) at org.opendaylight.yangtools.yang.xpath.impl.AntlrXPathParser.parseExpr(AntlrXPathParser.java:275) |
| Comment by Robert Varga [ 10/Dec/20 ] |
|
It seems StmtNamespaceContext is doing the wrong thing for 'belongs-to' prefixes. As per https://tools.ietf.org/html/rfc7950#section-7.2.2 the belongs-to prefix should be picked up as referencing the namespace, but it seems that does not really work. |