Bug 6867: Extend yang statement parser to support different yang versions 68/48368/28
authorPeter Kajsa <pkajsa@cisco.com>
Thu, 1 Dec 2016 13:57:24 +0000 (14:57 +0100)
committerRobert Varga <rovarga@cisco.com>
Wed, 14 Dec 2016 14:33:36 +0000 (15:33 +0100)
commitfa1ed213acc06358d9b759fa871e2b360605734e
tree251cad1d29e9de8600855a8274509f4c947319fd
parentb6c40e44cb70f00473798e206707944b543ca4e2
Bug 6867: Extend yang statement parser to support different yang versions

This patch extends statement parser in order to support different versions
of yang, yin or other statement based languages. Statement parser is able
to distinguish version of each yang, yin or other source and it performs
parsing of the source according to the specific version. Mixed-version
schemacontext (i.e. imports across versions) is supported too.

More in detail, StatementSupportBundle must be initialized by
SupportedVersionBundle, which defines set of supported versions.
In consequence, StatementSupportBundle allows to add version specific
StatementSupport into bundle. Furthermore each RootStatementContext
allows to set its version based on which corresponding StatementSupports
are invoked. For yang models, RootStatementContext version is set based
on a value of yang version statement.

Change-Id: I06bbcbfee091a0f54480d5f5f588a9ed18a84b55
Signed-off-by: Peter Kajsa <pkajsa@cisco.com>
Signed-off-by: Robert Varga <rovarga@cisco.com>
50 files changed:
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/YangVersion.java [new file with mode: 0644]
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Rfc6020Mapping.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/YangVersionStatement.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractDeclaredStatement.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupportBundle.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CustomStatementParserBuilder.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SourceSpecificContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ContainerStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ModuleStatementSupport.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangInferencePipeline.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangVersionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveDataSchemaNode.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/YangVersionEffectiveStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/AnydataStatementImpl.java [new file with mode: 0644]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ContainerStatementRfc7950Support.java [new file with mode: 0644]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ModuleStatementRfc7950Support.java [new file with mode: 0644]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/effective/AnyDataEffectiveStatementImpl.java [new file with mode: 0644]
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/Bug6867BasicTest.java [new file with mode: 0644]
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/semver/SemanticVersionComplexTest.java
yang/yang-parser-impl/src/test/resources/rfc7950/basic-test/anydata-10.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/basic-test/anydata-11.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/basic-test/invalid-10.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/basic-test/invalid-11.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/basic-test/unsupported-version.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/basic-test/valid-10.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/basic-test/valid-11.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/model/bar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/model/baz.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/model/foo.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/model/subfoo.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-1/bar@2016-01-03.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-1/bar@2016-01-04.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-1/foo.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-1/foobar@2016-01-31.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-1/foobar@2016-02-28.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-1/semantic-version.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-2/bar@2016-01-03.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-2/bar@2016-01-04.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-2/foo.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-2/foobar@2016-01-31.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-2/foobar@2016-02-27.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-2/foobar@2016-02-28.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/rfc7950/semantic-version/complex-2/semantic-version.yang [new file with mode: 0644]