BUG-5222: Reuse substatements across phases 13/49813/14
authorRobert Varga <rovarga@cisco.com>
Mon, 26 Dec 2016 14:35:49 +0000 (15:35 +0100)
committerRobert Varga <nite@hq.sk>
Mon, 23 Jan 2017 16:40:17 +0000 (16:40 +0000)
commit256d2ca913643ae8d06053f6fb631f209d7eca64
treeb95f083c1e813b02b9e38e89c9e20b5cd3b8855e
parent89b756f4e548435867beb95c5cabf8fd43fd60c0
BUG-5222: Reuse substatements across phases

Now that we can address substatements accurately, we can reuse
the same statements instead of throwing them out and re-instantiating
them. We still need to switch the root if the YangVersion changes,
as the statement support objects need to be reemitted.

This removes the need for ContextBuilder and its subclasses, simply
because all required information is available when createDeclaredChild()
is called, bringing further simplification to StatementContextWriter.

Once that indirection is removed, the code flow is improved, which
flushed out a failure to validate when an extension requires an arugment,
hence the test models need update to pass validation.

A final effect of these changes is that StatementContextBase.declared
becomes superfluous, as it really is just a view over declared
substatements, which allows us to eliminate that field and instead
project a view of StatementMap's values.

Change-Id: I6fd3e2e2de41305457958673b77a72073215940e
Signed-off-by: Robert Varga <rovarga@cisco.com>
14 files changed:
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ContextBuilder.java [deleted file]
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/StatementContextBase.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextWriter.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementMap.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/ModelDefinedStatementDefinition.java
yang/yang-parser-impl/src/test/resources/augment-test/augment-in-augment/baz.yang
yang/yang-parser-impl/src/test/resources/bugs/bug3859/bug3859.yang
yang/yang-parser-impl/src/test/resources/model-new/baz.yang
yang/yang-parser-impl/src/test/resources/model/baz.yang
yang/yang-parser-impl/src/test/resources/rfc7950/model/baz.yang
yang/yang-parser-impl/src/test/resources/semantic-statement-parser/model/baz.yang