yangtools.git
8 months agoModernize SchemaAwareXMLStreamWriterUtils a bit 13/108013/3
Robert Varga [Thu, 28 Sep 2023 16:02:36 +0000 (18:02 +0200)]
Modernize SchemaAwareXMLStreamWriterUtils a bit

Do not implemented EffectiveModelContextProvider to improve visibility
into invocations. Also use local variable type inference for brevity.

Change-Id: I3141562b0050435ed79f9bd06aa2dac03e59ec08
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoSimplify SchemaAwareXMLStreamNormalizedNodeStreamWriter 14/108014/1
Robert Varga [Thu, 28 Sep 2023 16:04:48 +0000 (18:04 +0200)]
Simplify SchemaAwareXMLStreamNormalizedNodeStreamWriter

There is no need to implement EffectiveModelContext provider here.

Change-Id: I39585b8dc2cefa844110ccf87aa52e9e925599f9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoModernize SchemaAwareXMLStreamNormalizedNodeStreamWriter a bit 12/108012/1
Robert Varga [Thu, 28 Sep 2023 16:01:25 +0000 (18:01 +0200)]
Modernize SchemaAwareXMLStreamNormalizedNodeStreamWriter a bit

Use instanceof patterns to eliminate explicit casts.

Change-Id: I63e7dc828c03ea4110793b9dd86f0add1ac16c0a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoInline yt1107.xml 08/108008/1
Robert Varga [Thu, 28 Sep 2023 14:35:49 +0000 (16:35 +0200)]
Inline yt1107.xml

There is no need to keep this XML in a resource, inline it in its sole
user.

Change-Id: Ie8c99320c8c97263b502caed9e5de2a75ea11581
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoModernize XMLStreamWriterUtils 99/107999/1
Robert Varga [Wed, 27 Sep 2023 20:11:26 +0000 (22:11 +0200)]
Modernize XMLStreamWriterUtils

Use instanceof patterns and local variable type inference.

Change-Id: I13ace859c67f508955666d7a8f6599b66b083d96
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoImprove context reporting 56/107956/1
Robert Varga [Fri, 22 Sep 2023 23:56:17 +0000 (01:56 +0200)]
Improve context reporting

If we fail at first step, we end up emitting an empty string, which
makes the output not nice. Quote the emitted string.

Change-Id: Ic54f7fd69a902de03205355b37fdc72d9979c051
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoReport checked exception in instance identifier writeout 55/107955/1
Robert Varga [Fri, 22 Sep 2023 23:33:03 +0000 (01:33 +0200)]
Report checked exception in instance identifier writeout

Both XML and JSON codecs are talking to a source of
IllegalArgumentExceptions. They should convert them to
XMLStreamException/IOException.

JIRA: YANGTOOLS-1542
Change-Id: Ia5ac633e37ed19c29d4593e2e886501c7baa59dd
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoBump versions to 11.0.3-SNAPSHOT 89/107889/1
Robert Varga [Sat, 16 Sep 2023 11:09:02 +0000 (13:09 +0200)]
Bump versions to 11.0.3-SNAPSHOT

This starts the next development iteration.

Change-Id: Id3564853cacd73318084422d35784225a2571627
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoRelease yangtools v11.0.2
jenkins-releng [Sat, 16 Sep 2023 06:51:43 +0000 (06:51 +0000)]
Release yangtools

8 months agoExpose JSONCodec and XmlCodec 79/107879/2
Robert Varga [Thu, 14 Sep 2023 19:55:17 +0000 (21:55 +0200)]
Expose JSONCodec and XmlCodec

We have a need to emit YangInstanceIdentifier values into raw writers.
We already have this capability exposed through
{JSON,Xml}Codec.writeValue().

This patch exposes that ability, forcing all AbstractCodecFactories to
do so.

JIRA: YANGTOOLS-1541
Change-Id: I854d67b6a1a57b6a8288c41db9714a3292fef093
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoRevert "Hide XmlCodecFactory internals" 78/107878/2
Robert Varga [Thu, 14 Sep 2023 19:56:20 +0000 (21:56 +0200)]
Revert "Hide XmlCodecFactory internals"

This reverts commit db06703aa3c1c68d9481b5823c16a570a23dfb6e. It is not
needed as we are about to expose XmlCodec.

JIRA: YANGTOOLS-1541
Change-Id: I861f0363d995517aa6a5a41f1e9077842379dfbe
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoIssue releaseFence() at the of ready() 94/107694/5
Robert Varga [Mon, 4 Sep 2023 20:35:22 +0000 (22:35 +0200)]
Issue releaseFence() at the of ready()

We seem to be observing stale state during modification validation. Make
sure we flush out any and all modifications before we complete ready().

Change-Id: I0f388d143526c96ff1684828dd16fc9ee681305b
JIRA: YANGTOOLS-1537
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoClean up checkSealed() 97/107697/5
Robert Varga [Mon, 4 Sep 2023 21:00:34 +0000 (23:00 +0200)]
Clean up checkSealed()

This method is mis-named, it should be called checkOpen(). Also use
an explicit if/throw to eliminate a negation.

Change-Id: Ia7baa03708711b8076ffdd512fbccacd906e3ffb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoUse Optional.isEmpty() 95/107695/3
Robert Varga [Mon, 4 Sep 2023 20:46:15 +0000 (22:46 +0200)]
Use Optional.isEmpty()

We have a number of calls to '!Optional.isPresent()'. Java 11 provides a
convenience Optional.isEmpty() for this case, so use that instead.

Change-Id: I519671f470d804e62bae07ec4c5a71aaa08a29f8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoFix ModifiedNode.identifier nullness 91/107691/1
Robert Varga [Mon, 4 Sep 2023 18:06:12 +0000 (20:06 +0200)]
Fix ModifiedNode.identifier nullness

The identifier should always we present, enforce and annotate that.

Change-Id: I0bcebec56ab6fcee6b3c3b396dddbda92282729f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoMove ModifiedNode.IS_TERMINAL_PREDICATE 90/107690/2
Robert Varga [Mon, 4 Sep 2023 17:41:10 +0000 (19:41 +0200)]
Move ModifiedNode.IS_TERMINAL_PREDICATE

This predicate has a single user, inline it. Also modernize
InMemoryDataTreeModification while we are in the area.

Change-Id: I3cb15fbcb75d0a28c158256e3ef01e218b90dd2a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoDo not leak SupressFBWarnigs from YangNetconfError 84/107684/2
Robert Varga [Sun, 3 Sep 2023 21:42:22 +0000 (23:42 +0200)]
Do not leak SupressFBWarnigs from YangNetconfError

There is to suppress, do not leak the SuppressFBWarnigs.

Change-Id: I611f6315dad7febf0de0d4ea28581163d91a2850
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoAdd ValidatedTreeNode 79/107679/2
Robert Varga [Sun, 3 Sep 2023 21:10:01 +0000 (23:10 +0200)]
Add ValidatedTreeNode

We need to @SuppressFBWarnings a use of Optional<TreeNode> being
nullable. Replace Optional with a dedicated record, which provides
adaptation.

Change-Id: Idcd57cc899cacb09d7bec1711d0d084027716734
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoSeal ModificationApplyOperation 78/107678/2
Robert Varga [Sun, 3 Sep 2023 19:17:45 +0000 (21:17 +0200)]
Seal ModificationApplyOperation

We have a carefully-structured class hierarchy here. Make sure the JVM
understands it when performing partial loading.

Change-Id: Ie4b50be7127c7b103a84212d4674f017b1a9e5bc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoUse an instanceof expression 75/107675/1
Robert Varga [Sun, 3 Sep 2023 19:01:59 +0000 (21:01 +0200)]
Use an instanceof expression

We have an-if-and-a-cast, use an instanceof expression instead.

Change-Id: Iee350a79fe740e2434ea1ce35071aa63315f1ae6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 months agoImprove NodeModification 74/107674/1
Robert Varga [Sun, 3 Sep 2023 18:42:24 +0000 (20:42 +0200)]
Improve NodeModification

This is a faux-interface to split access. Seal it an allow it to be
implemented only by ModifiedNode.

Introduce NodeModification.isEmpty(), which short-circuits the access to
children.value(). Convert users to prefer this method over accessing
getChildren() -- i.e. moving the potential allocation further down.

Change-Id: Ibce631b729fd496374580be94902c2b18e55268f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoBump versions to 11.0.2-SNAPSHOT 86/107586/1
Robert Varga [Wed, 30 Aug 2023 13:39:39 +0000 (15:39 +0200)]
Bump versions to 11.0.2-SNAPSHOT

This starts the next development iteration.

Change-Id: I6499e714c15ed4995222ad6a968c3fc2e16dc5b2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoRelease yangtools v11.0.1
jenkins-releng [Wed, 30 Aug 2023 12:21:44 +0000 (12:21 +0000)]
Release yangtools

9 months agoBump odlparent to 13.0.4 77/107577/2
Robert Varga [Wed, 30 Aug 2023 11:27:57 +0000 (13:27 +0200)]
Bump odlparent to 13.0.4

Pick up latest upgrades from upstream.

Change-Id: Ibb861e5d1d60784509f6d2ff79a51bcd9442a4d0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoFixup checkstyle in yang-repo-spi 76/107576/1
Robert Varga [Wed, 30 Aug 2023 11:38:44 +0000 (13:38 +0200)]
Fixup checkstyle in yang-repo-spi

Upgraded checkstyle is finding some violations, clean them up.

Change-Id: Iebc51805be902b15cc40e88c43e5c346e8936b6a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoClean up EffectiveStatements 61/107561/2
Robert Varga [Tue, 29 Aug 2023 18:42:36 +0000 (20:42 +0200)]
Clean up EffectiveStatements

Centralize casting to make Sonar happy. While we are here, use
instanceof patterns to reduce explicit casts.

Change-Id: Ic3ff2c5a929ed7a9998aa34374510e2c535fca86
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoMove UintConversions.throwIAE() 60/107560/2
Robert Varga [Tue, 29 Aug 2023 18:26:22 +0000 (20:26 +0200)]
Move UintConversions.throwIAE()

We have a single caller in Uint64, inline it and make the exception
throw explicit. Fixes a few Sonar duplication complaints.

Change-Id: I7f5c246f45e591d514b7cd71afadcd55c4aa6af4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoUnify Decimal64 checks 59/107559/3
Robert Varga [Tue, 29 Aug 2023 18:15:38 +0000 (20:15 +0200)]
Unify Decimal64 checks

Sonar is pointing out string duplications. Take advantange of automatic
upcast-to-long to allocate the IAE/AE in a single place.

Change-Id: I8e8bc2003abe6ba2b31124aa6cff5afc6a901b02
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoFix NormalizedNodeContainerBuilder generics 58/107558/1
Robert Varga [Tue, 29 Aug 2023 18:03:36 +0000 (20:03 +0200)]
Fix NormalizedNodeContainerBuilder generics

We have quite a few inconsistencies with NormalizedNodeBuilder which we
are specializing. Align generic argument names to fix Sonar warnings.

Change-Id: I9a875f3de68c392997607198637660763742a60a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoMerge if statements 57/107557/1
Robert Varga [Tue, 29 Aug 2023 17:59:57 +0000 (19:59 +0200)]
Merge if statements

if() with an instanceof pattern can be merged with the if() using that
pattern's assigned variable.

Change-Id: I531231c04b180abd4096716f982efa7a6011c70c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoDo dot declare SAXException/URISyntaxException as thrown 22/107522/4
Robert Varga [Sun, 27 Aug 2023 09:41:00 +0000 (11:41 +0200)]
Do dot declare SAXException/URISyntaxException as thrown

We cannot throw this exception from the implementation, do not declare
it as thrown.

JIRA: YANGTOOLS-1535
Change-Id: I03e6bc96b66e3bba1739d8d26591dbaacad237ca
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoHide XmlCodecFactory internals 26/107526/2
Robert Varga [Mon, 28 Aug 2023 11:15:55 +0000 (13:15 +0200)]
Hide XmlCodecFactory internals

We are getting warnings about leaking XmlCodec. While this is not
exactly true, mitigate these warnings by splitting the real logic
into a package-private class while retaining the same external
XmlCodecFactory facade.

JIRA: YANGTOOLS-1534
Change-Id: I719cf82f00d4580505d92d7126be6d2c09c26a4b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoFix XML codec error reporting 19/107519/5
Robert Varga [Sat, 26 Aug 2023 20:59:58 +0000 (22:59 +0200)]
Fix XML codec error reporting

When we deal with anything ContainerLike, aside of ContainerSchemaNode
and ListNodeSchemaNode, we should just accept there is no support and
proceed to throw a descriptive exception.

JIRA: YANGTOOLS-1533
Change-Id: I7a173f3a21dd55d21e48570690427cee0c0ad16f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoSeal XmlCodec 20/107520/5
Robert Varga [Sat, 26 Aug 2023 21:13:12 +0000 (23:13 +0200)]
Seal XmlCodec

We require Java 17, make sure XmlCodec is sealed to be explicit about
what implementations are there.

JIRA: YANGTOOLS-1534
Change-Id: I12ca115663a06666345e956ea9b0901834d1c4c8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoClean up Bug890Test 18/107518/1
Robert Varga [Sat, 26 Aug 2023 20:58:23 +0000 (22:58 +0200)]
Clean up Bug890Test

Use a multiline string to inline the XML and move the module to
top-level.

Change-Id: Ifda8d6f0fead26b5a813c8e28171032be12e9534
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoAdd Inference.isEmpty() 37/107437/1
Robert Varga [Wed, 16 Aug 2023 08:48:38 +0000 (10:48 +0200)]
Add Inference.isEmpty()

Downstreams need logic to adjust the inference unless it is empty.
Expose an isEmpty() method, which efficiently indicates whether the
inference is empty.

Change-Id: Ief6df4d8c2e1db34ea65bb6bdbd7e47525683dad
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
9 months agoUse switch expression in forElementBody() 31/107231/1
Robert Varga [Thu, 3 Aug 2023 15:54:28 +0000 (17:54 +0200)]
Use switch expression in forElementBody()

We have an utterly simple dispatch here. Eliminate the use of an
ImmutableMap and just make it a switch expression.

Change-Id: I3cfbfe2ed183b69cad35edc1abc129acb07c93a7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoAdd DataSchemaContext.SimpleValue.type() 21/107021/2
Robert Varga [Mon, 24 Jul 2023 17:38:14 +0000 (19:38 +0200)]
Add DataSchemaContext.SimpleValue.type()

SimpleValues have an underlying TypeDefinition. Expose it so users
of DataSchemaContext can use that instead of going through the
underlying dataSchemaNode().

JIRA: YANGTOOLS-1529
Change-Id: I04bbb8e64913d140a29d96380ddc6ce4b5536fd8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoGuarantee @NonNull from TypeAware.getType() 22/107022/1
Robert Varga [Mon, 24 Jul 2023 18:08:14 +0000 (20:08 +0200)]
Guarantee @NonNull from TypeAware.getType()

The result is always non-null. Annotate that fact.

Change-Id: Ia18ef5058731c30d131772535b05a59cf38637ae
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoMigrate rfc8528-parser-support to JUnit5 06/106906/4
matus.matok [Thu, 13 Jul 2023 08:34:52 +0000 (10:34 +0200)]
Migrate rfc8528-parser-support to JUnit5

Migrated all tests to use JUnit5 Assertions, using
openrewrite:rewrite-testing-frameworks. Also modernize the test by
taking advantage of assertInstanceOf's return.

JIRA: YANGTOOLS-1521
Change-Id: Id1afcea13b04c7280cef1b48ebd5275ba917e6ed
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoMigrate rfc8040-parser-support to JUnit5 05/106905/4
matus.matok [Tue, 18 Jul 2023 11:05:23 +0000 (13:05 +0200)]
Migrate rfc8040-parser-support to JUnit5

Migrated all tests to use JUnit5 Assertions, using
openrewrite:rewrite-testing-frameworks. Also modernize tests.

JIRA: YANGTOOLS-1521
Change-Id: I584ca427c2c4e2e8d2f928a4517d6e6d93475933
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoMigrate rfc7952-parser-support to JUnit5 04/106904/3
matus.matok [Thu, 13 Jul 2023 08:22:34 +0000 (10:22 +0200)]
Migrate rfc7952-parser-support to JUnit5

Migrated all tests to use JUnit5 Assertions, using
openrewrite:rewrite-testing-frameworks. Also remove unneeded static
setup.

JIRA: YANGTOOLS-1521
Change-Id: I5bdd6507cb01198a5a57b9b553eaf59e679f6d71
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoMigrate rfc6643-parser-support to JUnit5 03/106903/4
matus.matok [Thu, 13 Jul 2023 08:18:46 +0000 (10:18 +0200)]
Migrate rfc6643-parser-support to JUnit5

Migrated all tests to use JUnit5 Assertions, using
openrewrite:rewrite-testing-frameworks and modernize the tests.

JIRA: YANGTOOLS-1521
Change-Id: I748289df3fb3fbf7d8ce208b6304cc1438f0c41a
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoMigrate rfc6536-parser-support to JUnit5 02/106902/4
matus.matok [Thu, 13 Jul 2023 08:15:12 +0000 (10:15 +0200)]
Migrate rfc6536-parser-support to JUnit5

Migrated all tests to use JUnit5 Assertions, using
openrewrite:rewrite-testing-frameworks. Also reduce the setup/teardown.

JIRA: YANGTOOLS-1521
Change-Id: I6c0fe859120a3f8a4319b92cbd4114c522912c91
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoMigrate rfc6241-parser-support to JUnit5 01/106901/4
matus.matok [Thu, 13 Jul 2023 08:10:49 +0000 (10:10 +0200)]
Migrate rfc6241-parser-support to JUnit5

Migrated all tests to use JUnit5 Assertions, using
openrewrite:rewrite-testing-frameworks, and also modernizing the test.

JIRA: YANGTOOLS-1521
Change-Id: I7a87deb0d57c664b219e96258cb7254e80c30318
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoMigrate odlext-parser-support to JUnit5 00/106900/7
matus.matok [Thu, 13 Jul 2023 08:03:57 +0000 (10:03 +0200)]
Migrate odlext-parser-support to JUnit5

Migrated all tests to use JUnit5 Assertions, using
openrewrite:rewrite-testing-frameworks. Also modernize the tests a bit
and remove unnecessary initialization.

JIRA: YANGTOOLS-1521
Change-Id: Ibedf49de7440857c66393db20ec7f1fe6d0a0429
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoReduce reliance on yang.model.api.Module 47/106947/3
Robert Varga [Fri, 21 Jul 2023 08:00:28 +0000 (10:00 +0200)]
Reduce reliance on yang.model.api.Module

Look up ModuleEffectiveStatement instead and derive returns from there.

JIRA: YANGTOOLS-1525
Change-Id: Ic6d61a69b50c938512a4cf6614777ac6bd46438a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoDo not trim element content for string leaf values 44/106944/6
Robert Varga [Thu, 20 Jul 2023 23:35:57 +0000 (01:35 +0200)]
Do not trim element content for string leaf values

Trimming element text leads to values being mis-represented -- for
example if the content is a YANG string, we really need to pick it up
directly.

We should completely avoid trimming, but that would lead to not
recognizing previously-accepted XML documents, for example those which
correspond to a uint8 with leading whitespace.

JIRA: YANGTOOLS-1522
Change-Id: Ib1e05a9428a66765b2f85cfde723fe27076f68ee
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoImprove XmlParserStream error reporting 46/106946/2
Robert Varga [Fri, 21 Jul 2023 05:04:55 +0000 (07:04 +0200)]
Improve XmlParserStream error reporting

When we encounter an unhandled schema, we should report ISE instead of
IAE to differentiate the two cases.

Change-Id: I9222f821a259ede5b8d56e5111297de565f01d2d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoMigrate yang-parser-impl to JUnit5 08/106908/5
matus.matok [Thu, 13 Jul 2023 08:51:27 +0000 (10:51 +0200)]
Migrate yang-parser-impl to JUnit5

Migrated all tests to use JUnit5 Assertions, using
openrewrite:rewrite-testing-frameworks. Also cleans up the affected
files to:
- use startsWith() test
- use assertThrows() instead of fail()
- local variable type inference

JIRA: YANGTOOLS-1521
Change-Id: Ieb9c37ecb6d409ad076c1012d14e194f022db311
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
10 months agoAdd FluentFutures.submit() 09/106809/1
Robert Varga [Tue, 4 Jul 2023 19:28:54 +0000 (21:28 +0200)]
Add FluentFutures.submit()

This method mirrors Futures.submit(), but results in a FluentFuture.

Change-Id: Ie56ff26cb12a74b5021495cb33029c799d0cb721
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoCorrect Guava documentation link 76/106676/1
Robert Varga [Mon, 26 Jun 2023 12:10:43 +0000 (14:10 +0200)]
Correct Guava documentation link

Use guava.dev link and update to point to the correct version.

Change-Id: I0b302880e841437c72f417d16b57c25962f22607
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoBump versions to 11.0.1-SNAPSHOT 72/106672/1
Robert Varga [Mon, 26 Jun 2023 11:24:46 +0000 (13:24 +0200)]
Bump versions to 11.0.1-SNAPSHOT

This starts the next development iteration.

Change-Id: I6d75a15e8033ba8a5b1dbde33282d13a497329e3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoRelease yangtools v11.0.0
jenkins-releng [Mon, 26 Jun 2023 10:21:07 +0000 (10:21 +0000)]
Release yangtools

11 months agoUpdate javadoc links 71/106671/1
Robert Varga [Mon, 26 Jun 2023 09:24:05 +0000 (11:24 +0200)]
Update javadoc links

Link to JUnit5 and use HTTPS.

Change-Id: If69656c7efa078097bd4ab1ea39142ca423eb1ca
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoBump odlparent to 13.0.3 60/106660/2
Robert Varga [Fri, 23 Jun 2023 16:41:26 +0000 (18:41 +0200)]
Bump odlparent to 13.0.3

Pick up latest fixes.

Change-Id: I65997d7c9e2ab384d9562a9ea455d84157841077
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoUpdate get{ModifiedChild,DataAfter,DataBefore} 05/106605/2
Robert Varga [Wed, 21 Jun 2023 18:01:17 +0000 (20:01 +0200)]
Update get{ModifiedChild,DataAfter,DataBefore}

It is customary to require dataBefore/dataAfter. Repurpose the methods
to return a non-null-verified NormalizedNode. While we are at it, also
modify getModifiedChild().

JIRA: YANGTOOLS-1513
Change-Id: I90a3f1f2961b41d62c6d23afb434b40a45d75ccc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoMake warnings for unkeyed lists disabled by default 30/106530/3
Ruslan Kashapov [Mon, 19 Jun 2023 10:44:53 +0000 (13:44 +0300)]
Make warnings for unkeyed lists disabled by default

Making warnings for unkeyed list with config=true disabled
by default.

JIRA: YANGTOOLS-1423
Change-Id: I2b8e9a0abef8531d3b7853b029604a515e7196b8
Signed-off-by: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
11 months agoPromote util contracts 79/106579/1
Robert Varga [Wed, 21 Jun 2023 07:57:12 +0000 (09:57 +0200)]
Promote util contracts

Remove @Beta for sufficiently-stabilized classes.

Change-Id: Ie7bd239affcf1af1449413da9c69da0fc1a46a73
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoDeprecate EvenMoreObjects 78/106578/1
Robert Varga [Wed, 21 Jun 2023 07:52:13 +0000 (09:52 +0200)]
Deprecate EvenMoreObjects

This class is not used anywhere, deprecate it for removal.

Change-Id: I211d0fbec1791316335f52e57d5e3ff120250e4d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoDeprecate EffectiveAugmentationSchema 72/106572/1
Robert Varga [Wed, 21 Jun 2023 01:16:25 +0000 (03:16 +0200)]
Deprecate EffectiveAugmentationSchema

With AugmentatioNode gone from yang-data-api, we do not interact with
effective children anymore. Deprecate EffectiveAugmentationSchema for
removal.

JIRA: YANGTOOLS-1403
Change-Id: Iaca0f5e119d66f654361c6b08b01839626667d29
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoFix yang-data-codec-xml dependencies 53/106553/1
Robert Varga [Tue, 20 Jun 2023 12:30:36 +0000 (14:30 +0200)]
Fix yang-data-codec-xml dependencies

We are using rfc8040-model-api, make sure we declare it.

Change-Id: Idfe10dfe4cd441404a42eaaac39ad199a8763bf8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoAdd DataSchemaContext.of(DataSchemaNode) 36/106536/2
Robert Varga [Mon, 19 Jun 2023 17:57:38 +0000 (19:57 +0200)]
Add DataSchemaContext.of(DataSchemaNode)

This factory method is still needed by downstreams, reintroduce it with
stricter semantics.

JIRA: YANGTOOLS-1413
Change-Id: I9d1c0908b1d02f5b2575999ab290b65266bfa8f7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoAllow NormalizationResultHolder to report no data 26/106526/1
Robert Varga [Sun, 18 Jun 2023 19:51:44 +0000 (21:51 +0200)]
Allow NormalizationResultHolder to report no data

We have normalization pruning going on in controller, which can result
in no data being emitted. Relax the requirements so that a null value
can be reported.

Change-Id: Id065c0e813341416ca18e7b16ef5051a9f2dd0d5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoAdd support for parsing XML NormalizedYangData 09/106109/10
Robert Varga [Sun, 21 May 2023 18:34:48 +0000 (20:34 +0200)]
Add support for parsing XML NormalizedYangData

This adds the basic tools and a simple test for parsing yang-data when
the inference stack points to its proper child.

JIRA: YANGTOOLS-1472
Change-Id: I81bf41327e0bb7a20da236bc730049db21dd964d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoSplit out NormalizedContainer 31/106431/8
Robert Varga [Thu, 8 Jun 2023 14:49:49 +0000 (16:49 +0200)]
Split out NormalizedContainer

In order to support a consistent surface between ContainerNode and
NormalizedYangData (which really serve a similar purpose), we need to
make sure we have a common concept capturing NormalizedNodeContainer
without implying addressability by PathArgument.

This introduces DataContainer as a superclass of DataContainerNode,
along with NormalizedContainer, DistinctContainer and OrderedContainer
to support the attributes.

JIRA: YANGTOOLS-1472
Change-Id: Ida94334c0e8b7a776befffce62096a659ff3110b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoClean up yang-repo-fs dependencies 58/106458/2
Robert Varga [Tue, 13 Jun 2023 08:42:58 +0000 (10:42 +0200)]
Clean up yang-repo-fs dependencies

Update module requires and pom.xml to spell out things we actually use.

Change-Id: I717af547c00014449a3ec4f5a6d0b64b61034114
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoRemove unneeded SB suppressions 57/106457/2
Robert Varga [Tue, 13 Jun 2023 08:31:52 +0000 (10:31 +0200)]
Remove unneeded SB suppressions

The false positive has been fixed up to a sufficient degree, hence we
can remove the suppression.

Change-Id: Idd7634891e9680f6e42e4b34227e3540435e98e8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoYangTextSchemaSource is a CharSource 01/105801/9
Robert Varga [Wed, 3 May 2023 01:04:35 +0000 (03:04 +0200)]
YangTextSchemaSource is a CharSource

YANG text is inherently a plain text, without the ability to detect the
actual encoding. This patch makes the baseline interface a CharSource,
pushing the control to users and defaulting to UTF_8.

This does not extend to YinTextSchemaSource, as XML provides for
explicit control over the character set that governs the document.

JIRA: YANGTOOLS-1508
Change-Id: I2875bb5850def25a0e9e4c9ce1921f5be3a5c77f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoCheck Notification name match 54/106454/3
Robert Varga [Mon, 12 Jun 2023 16:08:41 +0000 (18:08 +0200)]
Check Notification name match

When we are faking the root Notification node, we should also be making
sure we actually match on QName.

Change-Id: Ifbe289b7326dae6a522659d7c6378785dd2ae0ec
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoClean up startContainerNode() 53/106453/3
Robert Varga [Mon, 12 Jun 2023 16:04:05 +0000 (18:04 +0200)]
Clean up startContainerNode()

Returning a raw SchemaNode is not nice. Expose a ContainerLike, taking
advantage of Notification's tranformation capability. Also improve
internal tracking to guarantee a DataSchemaNode in schemaStack, which
is much more friendly than WithStatus.

Change-Id: Ie1a0989e0e7c54f93e4c6263f1240c5d664be900
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoClean up NormalizedNodeStreamWriterStack.enterDataTree() 52/106452/3
Robert Varga [Mon, 12 Jun 2023 15:48:36 +0000 (17:48 +0200)]
Clean up NormalizedNodeStreamWriterStack.enterDataTree()

We have a lot of shared codepaths, let's centralize them in a more
useful enterDataTree() method, which also checks the return type
and updates schemaStack.

Change-Id: Ide1b196bda3003c7abc5be9e25d788759c8cef6e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoExpose delegate from ContainerLikeCompat 41/106441/3
Robert Varga [Mon, 12 Jun 2023 11:42:00 +0000 (13:42 +0200)]
Expose delegate from ContainerLikeCompat

Users playing tricks actually would like to get access to the delegate
schema so they can undo the tricks. Expose the delegate.

JIRA: YANGTOOLS-1472
Change-Id: I3093dab2dbfe6a3557725d848ffff80dd28a2572
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoDo not leak schema from startChoiceNode() 51/106451/1
Robert Varga [Mon, 12 Jun 2023 15:40:09 +0000 (17:40 +0200)]
Do not leak schema from startChoiceNode()

This is an outlier not used anywhere -- just change the return type to
void. We may revisit it at some point down the line.

Change-Id: I4944ebb0781c82e664b1f45b113194f4f31fc8b9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoDo not leak schema from startLeafSet() 50/106450/1
Robert Varga [Mon, 12 Jun 2023 15:35:39 +0000 (17:35 +0200)]
Do not leak schema from startLeafSet()

This is one outlier in our API, whic is not used. Just change the return
type to void. We may revisit this at a later point.

Change-Id: Idc156b99391b6b6bba4f14ea8967b9d2ad389ef5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoHide leafSetEntryNode() 49/106449/1
Robert Varga [Mon, 12 Jun 2023 15:20:19 +0000 (17:20 +0200)]
Hide leafSetEntryNode()

This is an internal utility method, annotate its return, hide it and
ditch its use of checkArgument() to streamline returns.

Change-Id: I5dff82831f67b5754806db8418afe12c3b774188
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoSimplify getParent() 48/106448/1
Robert Varga [Mon, 12 Jun 2023 15:13:44 +0000 (17:13 +0200)]
Simplify getParent()

Use local variable type inference to reduce dependency on
DocumentedNode.WithStatus.

Change-Id: Ic6ea6f31ad358df34e16be72cdf741dbe9813e86
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoUse instanceof pattern in constructor 47/106447/1
Robert Varga [Mon, 12 Jun 2023 15:13:04 +0000 (17:13 +0200)]
Use instanceof pattern in constructor

Take advantage of an instanceof pattern, so we eliminate an explicit
cast.

Change-Id: I5bf63332ec2021c79c27b3e8746b42aeb6f66376
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoModernize ChoiceSchemaNode a bit 46/106446/1
Robert Varga [Mon, 12 Jun 2023 14:56:28 +0000 (16:56 +0200)]
Modernize ChoiceSchemaNode a bit

Fixup Javadoc to point to correct class (CaseSchemaNode) and improve
findDataSchemaChild().

Change-Id: I6549d3fd5db008db0d843d3b94d6a5856198d763
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoSharpen {mandatory,optional}VerifyValueChildren() 64/106064/7
Robert Varga [Mon, 12 Jun 2023 12:48:19 +0000 (14:48 +0200)]
Sharpen {mandatory,optional}VerifyValueChildren()

We know the data needs to be a DistinctNodeContainer, codify that into
the contract, instead of a plain NormalizedNode.

Change-Id: I53a1b77500b6cf52795262906285025a6253f474
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoModernize ChoiceModificationStrategy 44/106444/1
Robert Varga [Mon, 12 Jun 2023 12:42:20 +0000 (14:42 +0200)]
Modernize ChoiceModificationStrategy

Use local variable type inference to simplify declarations/imports. Also
use streams and ImmutableList.toImmutableList() to create exclusions.

Change-Id: I082c538b396d03a05485945f6b27e3737fe7c620
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoClean up CaseEnforcer.enforceOnTreeNode() 43/106443/1
Robert Varga [Mon, 12 Jun 2023 12:32:46 +0000 (14:32 +0200)]
Clean up CaseEnforcer.enforceOnTreeNode()

This method is misnamed, as it does not operate on TreeNode, but rather
(always!) on a ChoiceNode. Rename it to enforceOnChoice() and make sure
it takes ChoiceNode as the argument..

Change-Id: Id00176e3f26d2925b9fdcdf75b5c0cd257baa585
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoSharpen SchemaAwareApplyOperation.getSchema() 42/106442/1
Robert Varga [Mon, 12 Jun 2023 12:22:01 +0000 (14:22 +0200)]
Sharpen SchemaAwareApplyOperation.getSchema()

Since we do not have AugmentationNode, we have lost the only strategy
which did not rely on DataSchemaNode (and necessitated
DocumentedNode.WithStatus as the base schema). Sharpen the contract so
we can rely on DataSchemaNode's interface.

Change-Id: Ia9dda657be1ad61ff818203430424819cab7a20c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoMigrate YANG inputs for yang-data-codec-xml 33/106033/10
matus.matok [Thu, 18 May 2023 13:14:38 +0000 (15:14 +0200)]
Migrate YANG inputs for yang-data-codec-xml

Migrated all YANG testfiles counting 50 lines or less.

JIRA: YANGTOOLS-1506
Change-Id: Ibe3772d09e651a0f29751075d3b62b5bf128ba7e
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
11 months agoBump odlparent to 13.0.1 83/106383/1
Robert Varga [Mon, 5 Jun 2023 10:10:31 +0000 (12:10 +0200)]
Bump odlparent to 13.0.1

Fixup feature generation.

Change-Id: I425514a330d1a65cbcd2a1cbaa66ac396fb52fd4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoMigrate YANG inputs for yang-data-codec-gson 31/106031/7
matus.matok [Thu, 18 May 2023 12:56:57 +0000 (14:56 +0200)]
Migrate YANG inputs for yang-data-codec-gson

Migrated all YANG testfiles counting 50 lines or less.

JIRA: YANGTOOLS-1506
Change-Id: I2ed3beef91692cd93c5bb8f81e5798d2d6557803
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
11 months agoMigrate YANG inputs for yang-data-impl 36/106036/7
matus.matok [Thu, 18 May 2023 13:57:18 +0000 (15:57 +0200)]
Migrate YANG inputs for yang-data-impl

Migrated all YANG testfiles counting 50 lines or less.

JIRA: YANGTOOLS-1506
Change-Id: I0081dd4517f38e59d449170ff9135c8645265be4
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
11 months agoMigrate YANG inputs for yang-data-util 38/106038/6
matus.matok [Thu, 18 May 2023 14:07:04 +0000 (16:07 +0200)]
Migrate YANG inputs for yang-data-util

Migrated all YANG testfiles counting 50 lines or less.

JIRA: YANGTOOLS-1506
Change-Id: If319c2397d546ddfaa2e2fff3f3ff79124982e0e
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
11 months agoMigrate YANG inputs for yang-data-tree-ri 37/106037/7
matus.matok [Thu, 18 May 2023 14:02:00 +0000 (16:02 +0200)]
Migrate YANG inputs for yang-data-tree-ri

Migrated all YANG testfiles counting 50 lines or less.

JIRA: YANGTOOLS-1506
Change-Id: I0751e51387291aab9afc3c2963e1b7302e180316
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
11 months agoMigrate YANG inputs for yang-model-export 39/106039/6
matus.matok [Thu, 18 May 2023 14:11:22 +0000 (16:11 +0200)]
Migrate YANG inputs for yang-model-export

Migrated all YANG testfiles counting 50 lines or less.

JIRA: YANGTOOLS-1506
Change-Id: I90dc5abe72315090df3047a68cb83fee90224ef8
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
11 months agoMigrate YANG inputs for yang-model-util 40/106040/7
matus.matok [Thu, 18 May 2023 14:14:41 +0000 (16:14 +0200)]
Migrate YANG inputs for yang-model-util

Migrated all YANG testfiles counting 50 lines or less.

JIRA: YANGTOOLS-1506
Change-Id: Id4af3be83783c38236b2f11dff99b0e9f6f5b2ca
Signed-off-by: matus.matok <matus.matok@pantheon.tech>
11 months agoFix UsesNode.getRefines() return 68/106368/3
Robert Varga [Sat, 3 Jun 2023 22:47:19 +0000 (00:47 +0200)]
Fix UsesNode.getRefines() return

We are really interested in exposing the paths to refined nodes, letting
users to deal with locating them. This allows us to simplify
support for refine -- moving the EffectiveStatement implementation to
yang-model-ri and RefineStatementSupport to rfc7950.stmt.meta.

JIRA: YANGTOOLS-1518
Change-Id: Iad387335038bd5686e67e32873e78925ea1646c5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoSplit out refine/if-feature handling 62/106362/3
Robert Varga [Sat, 3 Jun 2023 21:56:43 +0000 (23:56 +0200)]
Split out refine/if-feature handling

UsesStatementSupport takes over a lot of what RefineStatementSupport
should be doing. As a first step in untangling these statements, move
evaluation of if-feature expressions and rely on simple
isSupportedToBuildEffective().

Also make performRefine() more integrated by improving variable naming
and inlining addOrReplaceNodes().

Change-Id: I3c9e704e856646115a53fb456b73e2a10367511b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
11 months agoClean up dependency declarations 67/106367/1
Robert Varga [Sat, 3 Jun 2023 20:28:26 +0000 (22:28 +0200)]
Clean up dependency declarations

We have a number of modules which are using spotbugs annotations, where
they no longer need those. Also fixup pom.xmls to explicitly pull in JDT
annotations.

Change-Id: I801dd332896b03e38b66a29a468322765bccb55f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
12 months agoPopulate namespace before completing 57/104857/10
Robert Varga [Mon, 13 Mar 2023 18:58:15 +0000 (19:58 +0100)]
Populate namespace before completing

Completing a statement can trigger further actions, make sure the
statement is reachable before we run completions.

JIRA: YANGTOOLS-1516
Change-Id: I81d56bd67ea27a0eb72564c569acecbea57aa61a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
12 months agoRequire full declaration during path traversal 45/104845/12
Robert Varga [Mon, 13 Mar 2023 15:32:33 +0000 (16:32 +0100)]
Require full declaration during path traversal

Establishing whether a particular statement is supported by features
requires it to be fully declared. Add an explicit an intermediate
OnPhaseCompleted in which we evaluate things.

JIRA: YANGTOOLS-1515
Change-Id: Iaeb3d138f0cb6769869b562bf7b388364bffb8ba
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
12 months agoFix InferredStatementContext.isSupportedByFeatures() 51/106351/8
Robert Varga [Thu, 1 Jun 2023 14:24:45 +0000 (16:24 +0200)]
Fix InferredStatementContext.isSupportedByFeatures()

StmtContextUtils.checkFeatureSupport() does not work for
InferredStatementContext, as it does not have any declared
substatements -- that only works for OriginalStmtCtx and its subclasses.

Split out computation of this statement's contribution to
isSupportedByFeatures() into a separate method -- allowing
{Inferred,Replica}StatementContext to forward to their prototype or
source.

This also flushes out a bad assertion in YT1393Test, as the second
augment now get correctly disabled.

JIRA: YANGTOOLS-1514
Change-Id: Icf9740cd828bd337b76f38cf33ee29d607f680aa
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
12 months agoFix incorrect-list-keys-test5.yang 56/106356/1
Robert Varga [Fri, 2 Jun 2023 10:32:03 +0000 (12:32 +0200)]
Fix incorrect-list-keys-test5.yang

This model refers to a non-existent feature, which is not what we want
to test for.

JIRA: YANGTOOLS-1514
Change-Id: I5ef42d9586d07c54b69dada8663667b4d512c0a9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
12 months agoDo not leak SuppressFBWarnings from UnresolvedQName 99/106299/2
Robert Varga [Tue, 30 May 2023 21:56:42 +0000 (23:56 +0200)]
Do not leak SuppressFBWarnings from UnresolvedQName

Encapsulate SpotBugs-sensitive operations in a non-public class so that
we do not leak that annotation to the outside world.

Change-Id: I82b3b2795c68416fe7e4c4e1eae707358daefae3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
12 months agoPromote YangNamespaceContext 97/106297/1
Robert Varga [Tue, 30 May 2023 21:09:36 +0000 (23:09 +0200)]
Promote YangNamespaceContext

This is a stable interface, update its API and promote it to non-@Beta.

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