[YANGTOOLS-1200] Unable to validate new line separated key-arg nodes Created: 08/Dec/20  Updated: 09/Dec/20  Resolved: 09/Dec/20

Status: Resolved
Project: yangtools
Component/s: tools
Affects Version/s: 6.0.0, 4.0.14, 5.0.7
Fix Version/s: 7.0.0, 5.0.8, 6.0.2, 4.0.15

Type: Bug Priority: High
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 parsing list's key statement argument where nodes are separted by new line character, like in this example [1]:

list gen-test-session-allocation {

   key "entity-name
        test-instance-name
        untagged
        pcp
        color";

 

Error message:

Caused by: org.opendaylight.yangtools.yang.parser.spi.source.SourceException: Invalid identifier 'entity-name
test-instance-name
untagged
pcp
color' [at vendor/ciena/ciena-sat.yang:1854:6]

 

By YANG ABNF Grammar [2]:

key-arg = node-identifier *(sep node-identifier)
sep = 1*(WSP / line-break)

 

By RFC6020 list's key Statement documentation [3]:

The "key" statement, which MUST be present if the list represents
configuration, and MAY be present otherwise, takes as an argument a
string that specifies a space-separated list of leaf identifiers of
this list.

 

[1] - https://github.com/YangModels/yang/blob/master/vendor/ciena/ciena-sat.yang#L1854

[2]https://tools.ietf.org/html/rfc6020#section-12

[3]https://tools.ietf.org/html/rfc6020#section-7.8.2



 Comments   
Comment by Martin Balaz [ 08/Dec/20 ]
22:24:06.565 [main] ERROR org.opendaylight.yangtools.yang.validator.Main - Failed to create SchemaContext.22:24:06.565 [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 STATEMENT_DEFINITION 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: Invalid identifier 'entity-nametest-instance-nameuntaggedpcpcolor' [at vendor/ciena/ciena-sat.yang:1854:6] at org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.internedQName(StmtContextUtils.java:569) at org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.internedQName(StmtContextUtils.java:560) at org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.parseNodeIdentifier(StmtContextUtils.java:546) at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key.KeyStatementSupport.parseArgumentValue(KeyStatementSupport.java:52) at org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key.KeyStatementSupport.parseArgumentValue(KeyStatementSupport.java:31) 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.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.writeLinkageAndStatementDefinitions(YangStatementStreamSource.java:110) at org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.loadStatements(SourceSpecificContext.java:365) at org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext.loadPhaseStatementsFor(BuildGlobalContext.java:323) ... 9 common frames omittedCaused by: java.lang.IllegalArgumentException: String 'entity-nametest-instance-nameuntaggedpcpcolor' is not a valid identifier at com.google.common.base.Preconditions.checkArgument(Preconditions.java:217) at org.opendaylight.yangtools.yang.common.AbstractQName.checkLocalName(AbstractQName.java:79) at org.opendaylight.yangtools.yang.common.QName.create(QName.java:117) at org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.internedQName(StmtContextUtils.java:567) ... 33 common frames omitted
Generated at Wed Feb 07 20:55:28 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.