Bug 8307: Add the option for activating deviation statements 52/56452/5
authorIgor Foltin <igor.foltin@pantheon.tech>
Tue, 16 May 2017 12:04:38 +0000 (14:04 +0200)
committerRobert Varga <nite@hq.sk>
Thu, 18 May 2017 09:06:53 +0000 (09:06 +0000)
commit5079ec96bfeeb7a6ff66e71a114033c7d6c5c7a3
tree30fb9606e133966fa937d911e7d61e603ff44fb0
parent4f1692c802228d396f60fa2374646024781c1c12
Bug 8307: Add the option for activating deviation statements

YANG statement parser currently resolves all deviation statements.
Add the option to specify which of the processed YANG modules
can be deviated by the specified YANG modules. This information is
passed down to the statement parser in the form of
Map<QNameModule, Set<QNameModule>>. If no deviations should be
activated, use an empty Map. In default mode, that is when
the Map is not provided at all, all deviations are activated.

This patch handles only the statement reactor part.
SchemaContextFactory should be fixed in a separate patch.

Moreover, change the rules for allowed deviation target path.
A deviation statement cannot target nodes in the same module
as the one it is defined in. Adjust existing unit tests accordingly.

Change-Id: Ica0f8c09218e50fd4c3efeb4dc08acb4fa418798
Signed-off-by: Igor Foltin <ifoltin@cisco.com>
Signed-off-by: Igor Foltin <igor.foltin@pantheon.tech>
67 files changed:
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/source/ModulesDeviatedByModules.java [new file with mode: 0644]
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/CrossSourceStatementReactor.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviateStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangInferencePipeline.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug4933Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug7440Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug8307Test.java [new file with mode: 0644]
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationResolutionTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/DeviationStmtTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/IfFeatureResolutionTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java
yang/yang-parser-impl/src/test/resources/bugs/bug4933/correct/bar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug4933/correct/foo.yang
yang/yang-parser-impl/src/test/resources/bugs/bug4933/incorrect/bar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug4933/incorrect/foo.yang
yang/yang-parser-impl/src/test/resources/bugs/bug7440/bar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug7440/foo.yang
yang/yang-parser-impl/src/test/resources/bugs/bug8307/bar-invalid.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug8307/bar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug8307/baz-invalid.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug8307/baz.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug8307/foo-invalid.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug8307/foo.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/bug8307/foobar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/bar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/bar-invalid-2.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/bar-invalid-3.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/bar-invalid-4.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/bar-invalid.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/bar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/bar10-invalid.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/foo-invalid-2.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/foo-invalid-3.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/foo-invalid-4.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/foo-invalid.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/foo.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-add/foo10-invalid.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-delete/bar-invalid-2.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-delete/bar-invalid.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-delete/bar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-delete/bar10-invalid.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-delete/foo-invalid-2.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-delete/foo-invalid.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-delete/foo.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-delete/foo10-invalid.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-not-supported/imported.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-not-supported/root.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-replace/bar-invalid-2.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-replace/bar-invalid-3.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-replace/bar-invalid.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-replace/bar.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-replace/foo-invalid-2.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-replace/foo-invalid-3.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-replace/foo-invalid.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/deviation-replace/foo.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/foo-invalid-deviation-path.yang
yang/yang-parser-impl/src/test/resources/deviation-resolution-test/foo-invalid-deviation-target.yang
yang/yang-parser-impl/src/test/resources/deviation-stmt-test/bar-imp.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-stmt-test/bar.yang
yang/yang-parser-impl/src/test/resources/deviation-stmt-test/foo-imp.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/deviation-stmt-test/foo.yang
yang/yang-parser-impl/src/test/resources/semantic-statement-parser/effective-module/imported.yang
yang/yang-parser-impl/src/test/resources/semantic-statement-parser/effective-module/root.yang
yang/yang-system-test/src/main/java/org/opendaylight/yangtools/yang/parser/system/test/SystemTestUtils.java