yangtools.git
2 years agoBump versions to 7.0.9-SNAPSHOT 48/97448/1
Robert Varga [Sat, 11 Sep 2021 13:16:36 +0000 (15:16 +0200)]
Bump versions to 7.0.9-SNAPSHOT

This starts the next development iteration.

Change-Id: I9529682d5171dcd4b126e709aa80a0b23346c0c3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoFix YangErrorInfo.value 47/97447/1
Robert Varga [Sat, 11 Sep 2021 09:20:50 +0000 (11:20 +0200)]
Fix YangErrorInfo.value

YangErrorInfo is transporting a child of a container, which means it
should not be a plain NormalizedNode, but DataContainerChild instead.

Change-Id: Iec207864854ac3d9afd961635170967bd5cc73aa
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump odlparent to 9.0.6 27/97427/1
Robert Varga [Wed, 8 Sep 2021 14:41:25 +0000 (16:41 +0200)]
Bump odlparent to 9.0.6

Adopt latest upgrade.

Change-Id: I4a58797bd45c98d4cea5114415d1a4a0ec9c6773
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoDeprecate UnknownSchemaNode.getExtensionDefinition() 55/97155/2
Robert Varga [Mon, 6 Sep 2021 22:34:25 +0000 (00:34 +0200)]
Deprecate UnknownSchemaNode.getExtensionDefinition()

This method is not really useful, as its equivalent can easily be
achieved via SchemaContext lookup. Deprecate it for removal.

JIRA: YANGTOOLS-1319
Change-Id: Ia8f04e4843438988c999d966b72cb078b3f905e3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 21591c31b5ac5e09697f3da891363b8b9a1c0cf8)

2 years agoCorrect argument type documentation 05/97405/1
Robert Varga [Mon, 6 Sep 2021 14:43:20 +0000 (16:43 +0200)]
Correct argument type documentation

We have switched to using yang.common.Empty instead of java.lang.Void
due to nullability. Unfortunately not all javadocs were correct updated,
this corrects that mistake.

Change-Id: I1c183fa45374907401c22107e00452184137b43a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 2d0d3dc452df9c94462ddeca4192291fc378b951)

2 years agoUse DefaultWithDataTree.WithSubstatements for lists 02/97402/1
Robert Varga [Mon, 6 Sep 2021 11:25:59 +0000 (13:25 +0200)]
Use DefaultWithDataTree.WithSubstatements for lists

AbstractListEffectiveStatement is duplicating WithSubstatements
functionality, make sure we inherit it.

Change-Id: If3c5b177214305b88f3520824dc60d779d9a54ff
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 1d1333fbaf9e4520013a5164e5b59212f6444119)

2 years agoDo not retain reference to StatementMap 54/97154/1
Robert Varga [Thu, 2 Sep 2021 16:28:38 +0000 (18:28 +0200)]
Do not retain reference to StatementMap

Once we have finished iterating, we do not need to retain a reference to
the StatementMap. Promote Regular's iterator to a named class and clear
the reference as soon as we are done. Eliminates a YKP's report of a
possible leak.

Change-Id: Iabab24b2b1c2b28dd882ae10fac32f99c4d1c3a5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 26344aa1561b2a82c5c14ba3efddf800ff8b020c)

2 years agoFix a javadoc typo 58/97358/1
Robert Varga [Mon, 30 Aug 2021 12:02:45 +0000 (14:02 +0200)]
Fix a javadoc typo

The word is 'schema', not 'screma'.

Change-Id: I2509b6708f47b583019cbfc002d5fe6011771eb6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd support for yang-data inference 56/97356/6
Robert Varga [Mon, 30 Aug 2021 09:46:53 +0000 (11:46 +0200)]
Add support for yang-data inference

We will be needing inference abilities across yang-data. Add support for
entering in yang-data and also navigating within it.
YAngDataEffectiveStatement is updated to fully support schema tree and
data tree lookups.

JIRA: YANGTOOLS-1297
Change-Id: I1a10165017070a9430d5c9e43b3a705bc75c4d02
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoImprove SchemaInferenceStack test coverage 57/97357/2
Robert Varga [Mon, 30 Aug 2021 10:30:16 +0000 (12:30 +0200)]
Improve SchemaInferenceStack test coverage

Add a few unit tests to improve coverage. Also fix error reporting and
javadoc.

Change-Id: I8338829a89e3fe07e944cf4eb3c576a48f87d3fc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoDeprecate SchemaPath 54/97354/2
Robert Varga [Mon, 30 Aug 2021 08:54:26 +0000 (10:54 +0200)]
Deprecate SchemaPath

SchemaPath has only a few remaining users, with two different concepts
added to cover the two significant use cases. Add pointers to
replacements and deprecate SchemaPath.

JIRA: YANGTOOLS-1238
Change-Id: I21b98fef8112b0773c342fc83356cca9f3b64188
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoTerminally deprecate SchemaNode.getPath() 53/97353/1
Robert Varga [Sun, 29 Aug 2021 09:01:21 +0000 (11:01 +0200)]
Terminally deprecate SchemaNode.getPath()

This method has been on its slow way out. An alternative addressing
construct is presented through EffectiveStatementInference and
SchemaInferenceStack, so all downstreams should be able to migrate with
relative ease now. Add a stern warning with terminal deprecation with
the intent to remove in yangtools-8.

JIRA: YANGTOOLS-1071
Change-Id: Idfbff326eff741fb53af74f35238b999b812993e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoCorrect EffectiveStatementMixins documentation 52/97352/2
Robert Varga [Sat, 28 Aug 2021 14:44:57 +0000 (16:44 +0200)]
Correct EffectiveStatementMixins documentation

The correct type to use for no argument is Empty, not Void.

Change-Id: I68456096336d7e0d93139600375c9d8479dbb6ab
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoRemove InferredStatementContext.childCopyType 24/95224/12
Robert Varga [Thu, 18 Feb 2021 08:18:41 +0000 (09:18 +0100)]
Remove InferredStatementContext.childCopyType

This field is costing us object size in both 32bit and uncompressed
64bit mode. Since the field only encodes 2 bits, move this storage
to StatementContextBase.copyHistory, saving 8/8/0/0 bytes.

JIRA: YANGTOOLS-1256
Change-Id: Ifeb2cefd0449a4d9112f31a4c511a63dc5b0fb10
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoRequire SCR in yang-{data,parser}-impl 04/96704/2
Robert Varga [Mon, 28 Jun 2021 19:35:00 +0000 (21:35 +0200)]
Require SCR in yang-{data,parser}-impl

We need OSGi with SCR, otherwise we end up without activated services.
Make sure we have the appropriate annotation.

Change-Id: I5c7e67a531bb7b4e4c48de1872bcfc320557073f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd support for RFC8639 extensions 48/97348/5
Robert Varga [Fri, 27 Aug 2021 12:18:29 +0000 (14:18 +0200)]
Add support for RFC8639 extensions

We have an internal YANG extension defined in rfc8639. Teach the parser
to correctly recognize it.

JIRA: YANGTOOLS-1314
Change-Id: I96c30c9728e61cadbc550b0b96d925719593c0d6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump versions to 7.0.8-SNAPSHOT 14/97314/1
Robert Varga [Tue, 24 Aug 2021 11:08:42 +0000 (13:08 +0200)]
Bump versions to 7.0.8-SNAPSHOT

This starts the next development iteration.

Change-Id: Ibf0ccd22eb887cb73d5fd0aafc36705d53262f0c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump odlparent to 9.0.5 11/97311/1
Robert Varga [Tue, 24 Aug 2021 11:07:18 +0000 (13:07 +0200)]
Bump odlparent to 9.0.5

Pick up the stray fixup for bcutil.

Change-Id: Ibcc8b09b92c1530175f6a08c7a273fe1b41fc786
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump versions to 7.0.7-SNAPSHOT 99/97299/1
Robert Varga [Mon, 23 Aug 2021 16:36:30 +0000 (18:36 +0200)]
Bump versions to 7.0.7-SNAPSHOT

This starts the next development iteration.

Change-Id: I838d40475d06cc0c490b3943c121926f6b885746
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump odlparent to 9.0.4 98/97298/1
Robert Varga [Mon, 23 Aug 2021 16:22:48 +0000 (18:22 +0200)]
Bump odlparent to 9.0.4

Pick up latest fixes from upstream.

Change-Id: I0504633d43bf8d39f18fbd226da06bb4244c8dfa
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump versions to 7.0.6-SNAPSHOT 62/97262/3
Robert Varga [Thu, 19 Aug 2021 13:47:48 +0000 (15:47 +0200)]
Bump versions to 7.0.6-SNAPSHOT

This starts the next development iteration.

Change-Id: I29e015353b17caa388834d59c30ff8c36da1f4b0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump odlparent to 9.0.3 60/97260/1
Robert Varga [Thu, 19 Aug 2021 13:26:49 +0000 (15:26 +0200)]
Bump odlparent to 9.0.3

Pick up latest fixes from upstream.

Change-Id: Ib9d74aa33ada2e5108f9725cbb62eca75c24720b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAllow refine to change 'default' in leaf-list 57/97257/2
Robert Varga [Thu, 19 Aug 2021 12:36:51 +0000 (14:36 +0200)]
Allow refine to change 'default' in leaf-list

RFC7950 allows 'default' to be specified for 'leaf-list's, which we
recognize. Unfortunately the definition of refine statement does not
take this into account. Fix that and add an explicit test.

JIRA: YANGTOOLS-1312
Change-Id: I0c3ba7ca7cabba486c7226d520ce82a7ec2d194b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoRetrofit YangNetconfError for {min,max} elements 48/97248/3
Robert Varga [Wed, 18 Aug 2021 21:53:33 +0000 (23:53 +0200)]
Retrofit YangNetconfError for {min,max} elements

We pretty much everything we need for a proper report, add the basic
infrastructure.

JIRA: YANGTOOLS-1311
Change-Id: I9ac9b0a8000c2862ac4f4b50abd7ffdca118149a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoExpand UniqueConstraintTest 56/97256/1
Robert Varga [Thu, 19 Aug 2021 10:11:22 +0000 (12:11 +0200)]
Expand UniqueConstraintTest

Add a few asserts for the YangNetconfError reported.

JIRA: YANGTOOLS-1306
Change-Id: I262d85b910ec12729fb44bf2bfbb843dcab8d15b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoCleanup TestModel a bit 55/97255/1
Robert Varga [Thu, 19 Aug 2021 10:08:11 +0000 (12:08 +0200)]
Cleanup TestModel a bit

Add two FIXMEs and inline a unneeded constant.

Change-Id: Ic19101dff22b4953d45df110a8209593bd49fbe3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoRetrofit YangNetconfError into Unique*Exception 88/96688/8
Robert Varga [Sun, 27 Jun 2021 19:20:21 +0000 (21:20 +0200)]
Retrofit YangNetconfError into Unique*Exception

Add a basic bridge to YangNetconfError. This allows NETCONF WG
protocols, like NETCONF and RESTCONF, to report unified complete
information about failure causes.

JIRA: YANGTOOLS-1306
Change-Id: Id8134275fe1b304db88466ad2c6733a48871503e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd DataTreeCandidateInputOutputTest 36/97236/2
Robert Varga [Tue, 17 Aug 2021 11:54:19 +0000 (13:54 +0200)]
Add DataTreeCandidateInputOutputTest

We have completely untested DataTreeCandidateInputOutput, add some
coverage.

Change-Id: Ib9691949f05678415f8d6c6ec35ae9eb2e3bf29d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoFix yang-data-codec-binfmt dependencies 37/97237/1
Robert Varga [Tue, 17 Aug 2021 19:35:37 +0000 (21:35 +0200)]
Fix yang-data-codec-binfmt dependencies

There is slight confusion between model-api and data-api, we should be
using the latter.

Change-Id: Ib61e43df0e922565ee8b43c2b2dc3ff31431a784
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd NormalizedNodeDataOutputTest 35/97235/2
Robert Varga [Tue, 17 Aug 2021 11:01:59 +0000 (13:01 +0200)]
Add NormalizedNodeDataOutputTest

We have a few lines which are not covered by tests, make sure we cover
them.

Change-Id: If36df82225381edeafaf1f4d0d935fe8cf78a5a3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoReduce strings duplication 34/97234/1
Robert Varga [Tue, 17 Aug 2021 10:52:01 +0000 (12:52 +0200)]
Reduce strings duplication

Sonar is complaining about duplicate strings, make sure it complains a
bit less.

Change-Id: I12cd6d8b1bd8a4abb300c75e578f45a1d176f7d0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd a 9.0.0 FIXME 11/97211/1
Robert Varga [Fri, 13 Aug 2021 23:26:16 +0000 (01:26 +0200)]
Add a 9.0.0 FIXME

It seems we want to reverse nullability, add a FIXME for investigation.

Change-Id: I6fe89b5f8cd2dda5ac060e95d3fdf8ffb192cc58
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd ErrorTag.MALFORMED_MESSAGE 32/97032/3
Robert Varga [Mon, 26 Jul 2021 23:09:48 +0000 (01:09 +0200)]
Add ErrorTag.MALFORMED_MESSAGE

This is an error-tag defined by RFC6241, as that is an update to
semantics we know about.

JIRA: YANGTOOLS-1310
Change-Id: I3d7961dcfb8bf903a2ce232bd7aae60abd34c68f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoErrorTag should be Serializable 31/97031/2
Robert Varga [Mon, 26 Jul 2021 22:55:47 +0000 (00:55 +0200)]
ErrorTag should be Serializable

We want to transport ErrorTag as a type-safe string. Add the infra
to do that. Note that the serialization format places an upper bound
of 64K -- and that is very reasonable for an ErrorTag.

JIRA: YANGTOOLS-1309
Change-Id: Ib0049fbddc92e9b8ec9e1b37851e0de6f6faaad6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump versions to 7.0.5-SNAPSHOT 15/97015/1
Robert Varga [Sat, 24 Jul 2021 17:24:30 +0000 (19:24 +0200)]
Bump versions to 7.0.5-SNAPSHOT

This starts the next development iteration.

Change-Id: I692630c4ed1c33743ac33bdf3c69a8f632d4bc36
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoDo not cache parent refcount during inference 14/97014/1
Robert Varga [Sat, 24 Jul 2021 17:05:11 +0000 (19:05 +0200)]
Do not cache parent refcount during inference

When we are processing uses statements with refines we end up expanding
effective statements, which has effects on refcount mechanics. One
notable problem is that we may be observing a world where not all of
reference have been established yet.

We therefore must not use parentRef cache until all of our ancestors
have completed ModelProcessingPhase.EFFECTIVE_MODEL.

JIRA: YANGTOOLS-1308
Change-Id: I3e26244899ada796f380fad72bb040cff42dd667
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd refcount to ReactorStmtCtx 12/97012/1
Robert Varga [Thu, 22 Jul 2021 11:57:56 +0000 (13:57 +0200)]
Add refcount to ReactorStmtCtx

Having a reference count is nice tool for debugging liveness. Add it
to toString(), as it costs nearly nothing.

Change-Id: Iad1762c037715834c8fd27c1c6090d80bb490679
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoDeprecate yang.common.YangError 87/96687/17
Robert Varga [Fri, 25 Jun 2021 20:42:40 +0000 (22:42 +0200)]
Deprecate yang.common.YangError

YangError is quite lacking in terms of having the ability to express
errors. We have YangNetconfError as a better replacement, hence
deprecate YangError for removal.

Also retrofit YangNetconfError into the only exception which is
currently using YangError.

JIRA: YANGTOOLS-1305
Change-Id: I881444f1680e61c8f603fea9ab4d70fe01673ad1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd YangNetconfError 83/96883/1
Robert Varga [Wed, 14 Jul 2021 09:05:58 +0000 (11:05 +0200)]
Add YangNetconfError

This is a yang-data-api specialization of a well-known RFC4741/6020
construct, which we have tried to model in yang.common.RpcError and
then via yang.common.YangError.

Unlike YangError, which is directly glued to exceptions,
YangNetconfError has a builder-based immutable implementation, which can
be attached to other objects via YangNetconfErrorAware.

JIRA: YANGTOOLS-1305
Change-Id: I7aa1b587ea74c552996b62514861b4b8b262361e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd YangErrorInfo 82/96882/1
Robert Varga [Wed, 14 Jul 2021 08:54:42 +0000 (10:54 +0200)]
Add YangErrorInfo

Add YangErrorInfo class to hold NormalizedNode-based additional
information for RpcError-like constructs. Also add YangErrorInfos, which
makes it super easy to create well-known error infos like bad-element et
al.

JIRA: YANGTOOLS-1304
Change-Id: If2f45fb0c617396531de7592e29d4e09a1c06f3a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd yang.common.Error{Severity,Tag,Type} constructs 82/96682/22
Robert Varga [Sat, 26 Jun 2021 14:45:21 +0000 (16:45 +0200)]
Add yang.common.Error{Severity,Tag,Type} constructs

There is a number of error-reporting constructs which are defined across
RFC4741, RFC6020, RFC6241 and RFC8040. These originate from NETCONF, but
are quite integrated in the YANG enforcement specification.

- NetconfLayer to identify the NETCONF layer involved
- ErrorSeverity to discern errors and warnings
- ErrorType to express error-types reported
- ErrorTag to extensibly identify error-tag reported

Also add proper RFC4741/RFC6241 namespace anchors and use them as
appropriate.

JIRA: YANGTOOLS-1303
Change-Id: Idbb0d7ac4a2b58f930b06d14522872a18e7037d8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoFix two sonar issues 06/96806/1
Robert Varga [Mon, 5 Jul 2021 14:50:54 +0000 (16:50 +0200)]
Fix two sonar issues

Rather than using a boolean constant in a ?: expression, use a simple
logical or, which does the same thing, but more densely.

Change-Id: If0ce9e755f1323cd28926f4f03f4c8168f7ce8b1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoCleanup NormalizedNodeStreamReaderWriterTest 65/96765/1
Robert Varga [Thu, 1 Jul 2021 14:33:42 +0000 (16:33 +0200)]
Cleanup NormalizedNodeStreamReaderWriterTest

Use assertThrows() and make a few cleanups.

Change-Id: Idd87668118569881c3c4cda43451c152f89a15f4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoRequire SCR from yang-xpath-impl 02/96702/1
Robert Varga [Mon, 28 Jun 2021 18:06:04 +0000 (20:06 +0200)]
Require SCR from yang-xpath-impl

The jar cannot work in OSGi without SCR, make sure annotate as such.

Change-Id: I1281094adc161aed606ed1937ae6999f50f79e9f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd missing spotbugs annotations in xpath-impl 01/96701/1
Robert Varga [Mon, 28 Jun 2021 18:04:59 +0000 (20:04 +0200)]
Add missing spotbugs annotations in xpath-impl

Somehow we have been missing this annotation import, fix that up.

Change-Id: Ib39814bca421b6518f7e1bb0e8c8ec38350747fb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd YangError.getErrorTag() 78/96678/2
Robert Varga [Fri, 25 Jun 2021 16:00:14 +0000 (18:00 +0200)]
Add YangError.getErrorTag()

Error tags are well-defined and mandatory-to-include in NETCONF/YANG
error handling model. Make sure we expose this information from
YangError (and by extension from YangInvalidValueException).

JIRA: YANGTOOLS-1301
Change-Id: Ie914fda40b04facf56c5d644c41b3c91a8948dcd
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoReport ErrorType.APPLICATION from codecs 77/96677/1
Robert Varga [Fri, 25 Jun 2021 15:27:39 +0000 (17:27 +0200)]
Report ErrorType.APPLICATION from codecs

Codecs are cross-referencing an already-parsed value with YANG
constraints, which puts them squarely to Content layer of NETCONF
protocol -- and that implies ErrorType.APPLICATION.

JIRA: YANGTOOLS-1300
Change-Id: Icd6d2fbfbda554bc09978725d33f927d87d526ac
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump versions to 7.0.4-SNAPSHOT 63/96563/1
Robert Varga [Fri, 18 Jun 2021 15:37:46 +0000 (17:37 +0200)]
Bump versions to 7.0.4-SNAPSHOT

This starts the next development iteration.

Change-Id: Ia48f9eb26c25d1d6dc53f482553f5e1e3cc049c6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoRevert "Fix mandatory enforcer failure on augmented nodes" 62/96562/1
Robert Varga [Fri, 18 Jun 2021 14:23:43 +0000 (16:23 +0200)]
Revert "Fix mandatory enforcer failure on augmented nodes"

This reverts commit 7862271a33b14d21ebf1e72aacd05d3e4687c6b1, as it is
an incomplete solution. Specifically it fails to understand differences
in augmentations.

JIRA: YANGTOOLS-1276
Change-Id: I8dc581449e17cba04b741970e53c8545fc95d973
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd DistinctNodeContainer.getChildByArg() 32/96532/1
Robert Varga [Tue, 15 Jun 2021 17:30:06 +0000 (19:30 +0200)]
Add DistinctNodeContainer.getChildByArg()

There are a number of places where there is an implied assertion
that the child must exist, but the caller does not care about the
exception being reported.  These are using
findChildByArg().orElseThrows() today, could use a more expressive
alternative.

Add getChildByArg() as a default method, which wraps a call to
childByArg() with a verifyNotNull(), neatly expressing the intent.

Change-Id: I8dade860a0c615e987aa2c017473eb08769afee3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoDrop yang-ext:mount parent enforcement 00/96500/2
Robert Varga [Wed, 9 Jun 2021 12:51:45 +0000 (14:51 +0200)]
Drop yang-ext:mount parent enforcement

yang-ext should be more applicable, for example for use in mountpoints,
make sure we do not prevent such use.

JIRA: YANGTOOLS-1294
Change-Id: I4960d8a66fc5366f8832496d98fba49baf293297
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd support for yang-ext:mount extension 99/96499/1
Robert Varga [Wed, 9 Jun 2021 09:40:27 +0000 (11:40 +0200)]
Add support for yang-ext:mount extension

We have a legacy 'mount' extension which we do not support in the
parser, make sure we define its model and recognize it.

JIRA: YANGTOOLS-1294
Change-Id: Icd31ae6264cff4dbf3554e8a1e4cd97d9788f317
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump versions to 7.0.3-SNAPSHOT 48/96448/1
Robert Varga [Tue, 8 Jun 2021 07:11:35 +0000 (09:11 +0200)]
Bump versions to 7.0.3-SNAPSHOT

This starts the next development iteration.

Change-Id: I0eda29cf5b39673cb1a20317c5ec84e394a317e7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoFix mandatory enforcer failure on augmented nodes 34/96234/12
Robert Varga [Tue, 18 May 2021 08:28:13 +0000 (10:28 +0200)]
Fix mandatory enforcer failure on augmented nodes

Changes the way mandatory nodes are extracted from the schema.
Previously all mandatory nodes were approached as direct children of
the parent node. Even if they came from an augmentation which caused
"missing mandatory descendant" exceptions.
This patch preserves both options of building data nodes containing
augmented mandatory nodes.
- setting the mandatory node as a direct child of the parent node
- setting the mandatory node as an AugmentationNode to the parent node

However the former option seems to be incorrect and might be removed
in the future major release.

JIRA: YANGTOOLS-1276
Change-Id: Ifcc2e0d141e18f74173f15e293b16cbd297a5af6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Signed-off-by: Tibor Král <tibor.kral@pantheon.tech>
2 years agoAdd SchemaInferenceStack.ofSchemaPath() 38/96438/1
Robert Varga [Mon, 7 Jun 2021 09:13:36 +0000 (11:13 +0200)]
Add SchemaInferenceStack.ofSchemaPath()

RESTCONF models are using groupings to communicate serialized data,
for which we need an alternative instantiation, which uses the legacy
SchemaPath interpretation.

Change-Id: I4dec567ade0705a9af7497d53689a286858c411e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoRemove failed cache entries 09/96409/7
Tomas Cere [Wed, 2 Jun 2021 12:08:25 +0000 (14:08 +0200)]
Remove failed cache entries

We need to remove these from the cache once their corresponding
future fails, otherwise these would not be recomputed.

JIRA: YANGTOOLS-1293
Change-Id: Ic1c58392e7948f4a5fb144df6e8782ea0ffcab11
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoFix {Input,Output}EffectiveStatement definition 82/96382/4
Robert Varga [Thu, 27 May 2021 22:32:45 +0000 (00:32 +0200)]
Fix {Input,Output}EffectiveStatement definition

{Rpc,Action}EffectiveStatements are DataTreeAwareEffectiveStatements
which can contain input/output statements only. This implies
{Input,Output}EffectiveStatement is a DataTreeEffectiveStatement such
that it can be looked up.

JIRA: YANGTOOLS-1291
Change-Id: I6f469a790ae901e4b492af0558354d39b5b9068e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoFix DataTree indexing 83/96383/2
Robert Varga [Thu, 27 May 2021 22:34:47 +0000 (00:34 +0200)]
Fix DataTree indexing

Our indexing is broken here, as if we have a schema tree statement
which is not propagated to data tree, we should be indicating a
difference in maps. Fix that up.

JIRA: YANGTOOLS-1292
Change-Id: I19d80a11ef7114b0908766fa19df51604ca83f2e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoUpdate SchemaAwareXMLStreamNormalizedNodeStreamWriter 81/96381/1
Robert Varga [Thu, 27 May 2021 21:29:14 +0000 (23:29 +0200)]
Update SchemaAwareXMLStreamNormalizedNodeStreamWriter

We have two message typos, fix them up.

Change-Id: I7cb6ed993a7682c261b66f357c88bde0e67b810b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoFixup yang-data-impl dependencies 79/96379/1
Robert Varga [Thu, 27 May 2021 11:59:09 +0000 (13:59 +0200)]
Fixup yang-data-impl dependencies

Fix warnings around used/declared dependencies.

Change-Id: I3a7b89beb51b2414916a137a13f6f0255e9cf25a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd schema-aware builders 78/96378/3
Robert Varga [Thu, 27 May 2021 09:40:23 +0000 (11:40 +0200)]
Add schema-aware builders

The removal of schema-aware builders was a bit premature, as RESTCONF
uses them quite extensively and is not ready to migrate. Resurrect them
and make sure we have them better organized.

JIRA: YANGTOOLS-1249
Change-Id: I900e7905c9451b71fcce2a495aa771a96f760c40
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoAdd support for parsing JSON/XML notifications 43/96343/1
Robert Varga [Mon, 24 May 2021 19:05:55 +0000 (21:05 +0200)]
Add support for parsing JSON/XML notifications

This is functionality which we are working around in NETCONF, but we
support RPCs/Actions natively. Bring things on par by creating the
appropriate proxy and fitting it to both JSON and XML parser streams.

JIRA: YANGTOOLS-1289
Change-Id: I2c99b9c079da732d0684a083a8284504fdb66c35
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoRestore special-case handling of NotificationDefinition 34/96334/1
Robert Varga [Mon, 24 May 2021 10:59:39 +0000 (12:59 +0200)]
Restore special-case handling of NotificationDefinition

We have historically had a weird special case for parsing notifications,
where we would expect the stack to be initialized to point to the
notification and then to enter it as an alternative to normal data tree.

This functionality is used in NETCONF, restore it back in a slightly
better format than before. Also drop a FIXME so we expose the
functionality in a more structure way in the future.

JIRA: YANGTOOLS-1288
Change-Id: I9237cf558525e4028626cfe7f67d76bbabebab4c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoUse odlparent-9.0.2 33/96333/1
Robert Varga [Mon, 24 May 2021 09:42:28 +0000 (11:42 +0200)]
Use odlparent-9.0.2

Pick up latest upgrades and fixes from upstream.

Change-Id: Id61344ae65e222c488dacd7d61fa610b17f5d1eb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump versions to 7.0.2-SNAPSHOT 85/96085/1
Robert Varga [Sun, 9 May 2021 04:47:00 +0000 (06:47 +0200)]
Bump versions to 7.0.2-SNAPSHOT

This starts the next development iteration.

Change-Id: Ie715edcbfb0d27dd80553c24f12072bfce8f1c0b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoBump odlparent to 9.0.1 83/96083/1
Robert Varga [Sat, 8 May 2021 17:00:10 +0000 (19:00 +0200)]
Bump odlparent to 9.0.1

odlparent-9.0.1 contains a few upgrades and fixes, adopt it.

Change-Id: I258e54a23b938aba619fd95587f0f09f06b8dfb6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoCorrect yang-maven-plugin-spi dependencies 22/96022/1
Robert Varga [Fri, 7 May 2021 13:54:49 +0000 (15:54 +0200)]
Correct yang-maven-plugin-spi dependencies

Guava was missing, leading to a warning. Fix that.

Change-Id: I9b835f8f68721023e79d518bdfcfebb225be1e41
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoConvert yang-data-codec-binfmt to an explict module 19/96019/1
Robert Varga [Fri, 7 May 2021 11:07:59 +0000 (13:07 +0200)]
Convert yang-data-codec-binfmt to an explict module

This is a simple component and conversion is straightforward. Switch
from being an automatic module to being an explicit module.

JIRA: YANGTOOLS-1287
Change-Id: I131b3104c4d65632057f8367e5681fef358c9928
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 years agoConvert yang-data-transform into an explicit module 18/96018/1
Robert Varga [Fri, 7 May 2021 10:51:52 +0000 (12:51 +0200)]
Convert yang-data-transform into an explicit module

We do not rely on anything complex, just perform the straightforward
transformation, adjusting dependencies in the process.

JIRA: YANGTOOLS-1286
Change-Id: I3e385958268937a11f04a693a9a145caba3422d7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoFix SchemaInferenceStack.exitToDataTree() 78/95978/3
Robert Varga [Sun, 2 May 2021 14:21:32 +0000 (16:21 +0200)]
Fix SchemaInferenceStack.exitToDataTree()

When we are exiting along data tree axis we need to make sure we skip
any choice/case node hierarchy, so that we arrive at the correct data
tree parent -- even if we arrived via the schema tree.

JIRA: YANGTOOLS-1283
Change-Id: I9d84f59447971fcdfb0cc187e5d2c4a35579bfa6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoAdd SchemaInferenceStack.enterTypedef() 67/95967/4
Robert Varga [Fri, 30 Apr 2021 17:42:22 +0000 (19:42 +0200)]
Add SchemaInferenceStack.enterTypedef()

This method got left out, unfortunately, leading to an inability to
resolve leafrefs inside typedefs where a default namespace is needed.

JIRA: YANGTOOLS-1282
Change-Id: Ia89fce3f7edffa6e68b268d08a0ca5e3c3800d17
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoTurn yang-model-export into a JPMS module 46/95946/2
Robert Varga [Tue, 27 Apr 2021 09:13:32 +0000 (11:13 +0200)]
Turn yang-model-export into a JPMS module

This is a simple component, add a module-info and clean up dependencies.

JIRA: YANGTOOLS-1281
Change-Id: Ief7bd386198cef51b64a7a7ca11398f2e3c88ba2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoFix a versioning typo 47/95947/1
Robert Varga [Tue, 27 Apr 2021 09:19:38 +0000 (11:19 +0200)]
Fix a versioning typo

Previous patch has introduced SHAPSHOT not, SNAPSHOT, fix that.

Change-Id: I6e9de230b0b21f61110bf1f51266c03ddbecfab4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoAdd a simple unit test for declaration references 19/95919/5
Robert Varga [Sun, 25 Apr 2021 19:43:57 +0000 (21:43 +0200)]
Add a simple unit test for declaration references

We do not have an explicit test for retaining references, add it.

JIRA: YANGTOOLS-1193
Change-Id: Iba0c656e458db53fbf8a74185addf2be1e2c7f65
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoBump versions to 7.0.1-SNAPSHOT 18/95918/2
Robert Varga [Sun, 25 Apr 2021 19:33:47 +0000 (21:33 +0200)]
Bump versions to 7.0.1-SNAPSHOT

This starts the next development iteration.

Change-Id: I1f9b2561886e44d8ddb10e6ac7953893b76cf645
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoPopulate codec/ directory 17/95917/2
Robert Varga [Sun, 25 Apr 2021 18:25:43 +0000 (20:25 +0200)]
Populate codec/ directory

Move yang-data-codec-* artifacts to a dedicated top-level directory,
making navigation slightly easier.

JIRA: YANGTOOLS-1149
Change-Id: I3275f23059319e334ef6bbee388ecfeead4b334f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoMove yang-common(-netty) 16/95916/1
Robert Varga [Sun, 25 Apr 2021 18:17:57 +0000 (20:17 +0200)]
Move yang-common(-netty)

These are common infrastructure, move it out of the legacy yang/
directory.

JIRA: YANGTOOLS-1149
Change-Id: Id12c7e999de1e076108bc6f8d20295cf9b331ec5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoMove data extensions to data/ 15/95915/1
Robert Varga [Sun, 25 Apr 2021 15:15:39 +0000 (17:15 +0200)]
Move data extensions to data/

A few artifacts were left out during initial population, move tehm now.

JIRA: YANGTOOLS-1145
Change-Id: Ia6c0455f33b5e841985d7fb078eec9e1aa8ac5c5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoPopulate parser/ hierarchy 13/95913/5
Robert Varga [Sun, 25 Apr 2021 10:40:21 +0000 (12:40 +0200)]
Populate parser/ hierarchy

YANG parser has a large number of artifacts, as it is highly modular.
Move them to a dedicated top-level directory.

JIRA: YANGTOOLS-1149
Change-Id: Ic8d236ec64ec044f85c52fc81ab004e6fb5fd84b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoPopulate xpath/ hierarchy 12/95912/3
Robert Varga [Sun, 25 Apr 2021 10:34:16 +0000 (12:34 +0200)]
Populate xpath/ hierarchy

Move yang-xpath-* artifacts own xpath/ top-level directory. This will
make it easier to navigate and more approachable.

JIRA: YANGTOOLS-1149
Change-Id: Ifef9804237a48ed8f8ea548dc52c9f13aa975f13
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoPopulate model/ hierarchy 10/95910/4
Robert Varga [Sun, 25 Apr 2021 09:05:58 +0000 (11:05 +0200)]
Populate model/ hierarchy

Move yang-model-api and all the other *model-* artifacts own model/
top-level directory. This will make it easier to navigate and more
approachable.

JIRA: YANGTOOLS-1149
Change-Id: I259419798f07ebf9fdd94f808d38867956132c09
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoPopulate data/ hierarchy 09/95909/2
Robert Varga [Sun, 25 Apr 2021 08:44:10 +0000 (10:44 +0200)]
Populate data/ hierarchy

Move yang-data-{api,impl,transform,util} to their own data/ top-level
directory. This will make it easier to navigate and more approachable.
Also update README.md a bit.

JIRA: YANGTOOLS-1149
Change-Id: I907576ba0f505aa9a2db12db4811ed7b753cb5f8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoDo not pretty-print body class 08/95908/1
Robert Varga [Sun, 25 Apr 2021 08:38:48 +0000 (10:38 +0200)]
Do not pretty-print body class

If ForeignData.body() can be pretty-printed we can side-step printing
out the object model type, as it should be apparent from the internal
representation.

JIRA: YANGTOOLS-1203
Change-Id: Ib5c0752c565bda47af4dd397efcca28969acce09
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoImprove NormalizedNode formatting capabilities 59/95459/30
Konstantin.Nosach [Fri, 12 Feb 2021 12:31:57 +0000 (14:31 +0200)]
Improve NormalizedNode formatting capabilities

Add NormalizedNode.prettyTree(), which acts as a conduit to a
human-readable String representing the tree. The tree is hidden behind a
toString()/Supplier<String>, so it is usable with logging.

Since this is a generally-useful concept, which can span different kinds
of structures, capture it as PrettyTree/PrettyTreeAware as well.

JIRA: YANGTOOLS-1203
Change-Id: I6f2c98bc3048a086063846699ec73e0f2ac02b33
Signed-off-by: Kostiantyn Nosach <kostiantyn.nosach@pantheon.tech>
Signed-off-by: Ivan Hrasko <ivan.hrasko@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoOptimize QName.toString() a bit 07/95907/2
Robert Varga [Sat, 24 Apr 2021 10:01:24 +0000 (12:01 +0200)]
Optimize QName.toString() a bit

Append simple characters, not strings.

Change-Id: I6812f05c3cb3749f3ce9ed72f14238be5b55fe21
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoAdd NormalizedNode.contract() 01/95901/4
Robert Varga [Fri, 23 Apr 2021 13:18:29 +0000 (15:18 +0200)]
Add NormalizedNode.contract()

NormalizedNode hierarchy is defined in terms of interfaces with a
multitude of possible implementations. Attempting to dispatch among them
without sealed classes is an exercise in futility, but we can actually
mark the top-level contracts as needed.

This makes it very clear which interfaces can be reasonably implemented
and allows a proper dispatch on classes. Furthermore it improves safety
by explicitly not allowing mixes which would otherwise be possible.

JIRA: YANGTOOLS-1203
Change-Id: I177f158423807b83d83f375c69c6985880eaed91
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoRemove an unneeded warning suppression 00/95900/1
Robert Varga [Fri, 23 Apr 2021 13:17:01 +0000 (15:17 +0200)]
Remove an unneeded warning suppression

Eclipse is point this out, fix a warning about a warning.

Change-Id: Ibce86752af6459ff1c5a04c2fd2a99c5f1011a04
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoUpdate dependenciy declarations 43/95743/10
Robert Varga [Sun, 11 Apr 2021 10:27:18 +0000 (12:27 +0200)]
Update dependenciy declarations

Dependency checking is finding a large number of consistency problems,
fix some of them up.

Change-Id: I99e1deabb0c324dd07767fed9ef8181a52aa8793
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoCentralize substatement validators 99/95899/2
Robert Varga [Fri, 23 Apr 2021 07:29:09 +0000 (09:29 +0200)]
Centralize substatement validators

Most statement supports have a constant validator and we end up
duplicating things. Furthermore we are ending up with megamorphic
dispatch which could easily be squashed into a simple field read.

AbstractStatementSupport now requires an explicit SubstatementValidator,
which it stores in a field, thus reducing the number of
StatementSupport.substatementValidator() instances.

Change-Id: I4d7f6247403ee64b65ddcd81ac91a5e8eef20539
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoAll StatementSupports must support DeclarationReference 85/95885/5
Robert Varga [Thu, 22 Apr 2021 11:51:42 +0000 (13:51 +0200)]
All StatementSupports must support DeclarationReference

Make sure we force all StatementSupport classes to implement
attachDeclarationReference(), without a default no-op implementation.
Also fix all implementation to comply with this requirement.

JIRA: YANGTOOLS-1193
Change-Id: I06d1de989dc967d27477dbf49111f792706a4799
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoStmtContext should not care about semantic versions 86/95886/5
Robert Varga [Thu, 22 Apr 2021 15:04:04 +0000 (17:04 +0200)]
StmtContext should not care about semantic versions

Semantic version imports are part of configuration, not an explicit
build mode. Move them out, so that participating supports just pick them
up from configuration -- and hence we do not need to wire them through
StmtContext.

Change-Id: I020f50964484a72103123de57854924b1d3760f6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoTransform QName value in identity leaf 88/95888/2
Ivan Hrasko [Thu, 22 Apr 2021 16:29:02 +0000 (18:29 +0200)]
Transform QName value in identity leaf

Leafs with identityref point to the identity's QName. Since we are
remapping namespaces, these need to be included as well.

JIRA: YANGTOOLS-1277
Change-Id: I2885dd59bcdd85cfe4f29edceaf68cb27ed7dca7
Signed-off-by: Ivan Hrasko <ivan.hrasko@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoRefineEffectiveStatement is not a SchemaNode 93/95893/1
Robert Varga [Thu, 22 Apr 2021 23:36:18 +0000 (01:36 +0200)]
RefineEffectiveStatement is not a SchemaNode

Refines are taking immediate effect and do not exist directly in
SchemaNode view of the world. Do not implement SchemaNode, which makes
things a tad easier.

JIRA: YANGTOOLS-1279
Change-Id: If8b30e6bbf87ed0de79d07e620f694de552460ce
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoMove UnrecognizedStatement implementations 92/95892/1
Robert Varga [Thu, 22 Apr 2021 23:29:22 +0000 (01:29 +0200)]
Move UnrecognizedStatement implementations

These are very simple, move them to yang-model-ri.

Change-Id: I4be5ad177c6595754ef8cf7c1843791e046235af
JIRA: YANGTOOLS-1241
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoUpdate yang-parser-api 90/95890/7
Robert Varga [Thu, 22 Apr 2021 19:43:26 +0000 (21:43 +0200)]
Update yang-parser-api

Current API is hosted in yang.model.parser.api package, which is a
mouthful, with 'model' being the redundant component, really.

Introduce a new set of APIs in yang.parser.api package, improving
documentation as well as clarifying a few concepts. Since
YangParserConfiguration is a new concept, we move it directly to its new
home.

JIRA: YANGTOOLS-1274
Change-Id: I2149c9d88a7724059b4cc5c56fbc6c192164c99a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoRetain DeclarationReference in DeclaredStatements 88/94088/7
Anton Tregubov [Mon, 7 Dec 2020 08:35:10 +0000 (11:35 +0300)]
Retain DeclarationReference in DeclaredStatements

Previous patches have introduced a way for a DeclaredStatement
implementation to expose location where the declaration has been
observed, as well as the prerequisite wiring in
yang-parser-{api,spi,impl,reactor}.

The only remaining bit is for the implementations to opt-in into the
infrastructure provided -- and that is done in this patch for all base
YANG statements.

JIRA: YANGTOOLS-1193
Change-Id: I598406a8e5698fc68410e9c4b6f0ae63846f8cc2
Signed-off-by: Anton Tregubov <tregubov@gmail.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoTeach YANG parser to retain DeclarationReference 76/95876/12
Robert Varga [Wed, 21 Apr 2021 13:49:56 +0000 (15:49 +0200)]
Teach YANG parser to retain DeclarationReference

DeclaredStatement is exposing DeclarationReference as optional
additional information. yang-parser-reactor has knowledge of this
information during its execution to aid diagnosing model errors, so we
just need a mechanism for to bridge this information to statement
implementations.

Add the end-to-end glue code for yang-parser-{api,rfc7950} users
to request this information be retained and that intent to be
communicated to individual StatementFactories. Each StatementFactory
needs to opt-in by providing the appropriate decorator via the substrate
provided in yang-model-spi's AbstractRefStatement.

This necessitates completely abandoning the idea that a StatementSupport
is completely stateless -- that has not been true ever since we
introduced support for semantic version imports.

JIRA: YANGTOOLS-1193
Change-Id: I6a10feb682bb720349e927ea171593e663278eea
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoImprove SourceIdentifier documentation 83/95883/2
Robert Varga [Thu, 22 Apr 2021 11:12:33 +0000 (13:12 +0200)]
Improve SourceIdentifier documentation

Use proper anchors to point to RFC documents.

Change-Id: Idb113471759f466ff8353941ed22879c37503214
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoRemove unused constructor 81/95881/1
Robert Varga [Wed, 21 Apr 2021 17:42:38 +0000 (19:42 +0200)]
Remove unused constructor

We have a single constructor which is not being used anywhere, remove it
to reduce confusion.

Change-Id: Ib3a6d6f7760243b1ba890ca45b49a22e6daf22d7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 years agoAdd missing final statements 80/95880/1
Robert Varga [Wed, 21 Apr 2021 17:41:08 +0000 (19:41 +0200)]
Add missing final statements

AbstractResumentStatement behaviour should not be changed, make sure we
express that design intent.

Change-Id: Id75bfbdb1698094acf4632f8cfb13607c5ddf992
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>