mdsal.git
4 years agoBump versions to 4.0.12-SNAPSHOT 25/87025/1
Robert Varga [Fri, 17 Jan 2020 11:02:49 +0000 (12:02 +0100)]
Bump versions to 4.0.12-SNAPSHOT

This starts the next development iteration.

Change-Id: I9a389d9c99840de5d0cf8766793a5f2bbaab7836
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoFix path namespace resolution 22/87022/1
miroslav.kovac [Mon, 16 Dec 2019 15:57:22 +0000 (16:57 +0100)]
Fix path namespace resolution

If a path is defined in terms of a submodule-local import,
SchemaContextUtil.findDataSchemaNode() breaks down because
it's reparse attempt fails to find the import in the actual
module.

SchemaContextUtil is providing findDataTreeSchemaNode() which
works properly on parsed PathExpression, use that instead.

JIRA: MDSAL-499
Change-Id: Ifa8a8958d7118d851d27fcc2c70c6d8382e3e3c0
Signed-off-by: miroslav.kovac <miroslav.kovac@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoBump versions to 4.0.11-SNAPSHOT 86/86986/1
Robert Varga [Thu, 16 Jan 2020 15:49:37 +0000 (16:49 +0100)]
Bump versions to 4.0.11-SNAPSHOT

This starts the next development iteration.

Change-Id: I4017bdc625b2e70308995f023c4e8e569a96d4a8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoBump to odlparent-5.0.5 and yangtools-3.0.9 82/86982/1
Robert Varga [Thu, 16 Jan 2020 14:38:08 +0000 (15:38 +0100)]
Bump to odlparent-5.0.5 and yangtools-3.0.9

Pick up latest updates and fix for SFT.

Change-Id: Ie547285ce14a943107646585d9a24666f6433025
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoBump versions to 4.0.10-SNAPSHOT 17/86917/1
Robert Varga [Wed, 15 Jan 2020 08:41:33 +0000 (09:41 +0100)]
Bump versions to 4.0.10-SNAPSHOT

This starts the next development iteration.

Change-Id: Ic1b4b1949741087893ae3f23e62a320f07a9231f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoMigrate away from DataNodeIterator 16/86916/1
Robert Varga [Tue, 14 Jan 2020 16:09:05 +0000 (17:09 +0100)]
Migrate away from DataNodeIterator

We do not need to collect the entire analysis, just typedefs
(and containers in a test). Migrate to new SchemaUtils methods which
provide exactly that functionality more efficiently.

Change-Id: Idfbe19c785351f3280eae33c476d533055cb16e6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoBump yangtools to 3.0.8 07/86907/3
Robert Varga [Wed, 15 Jan 2020 00:03:28 +0000 (01:03 +0100)]
Bump yangtools to 3.0.8

Pick up latest fixes and improvements.

Change-Id: I9e7e6d236c8059ca42220117aa49c88c7f894b79
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoUse parallelStream() to generate files 06/86906/1
Robert Varga [Tue, 7 Jan 2020 20:35:22 +0000 (21:35 +0100)]
Use parallelStream() to generate files

This is a follow-up cleanup, reducing complexity of parallel dispatch
by taking advantage of parallel streams.

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

4 years agoGenerate binding files in parallel 05/86905/1
Robert Varga [Tue, 7 Jan 2020 20:35:22 +0000 (21:35 +0100)]
Generate binding files in parallel

Binding-generated files are standalone in that the process of
generating its source does not have any other side effects.

Improve the performance by generating these files in parallel
using the common ForkJoin pool -- thus taking advantage of all
available cores.

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

4 years agoAdd utility methods to strip zone from Ipv{4,6}Address 91/86791/1
Robert Varga [Tue, 7 Jan 2020 11:25:33 +0000 (12:25 +0100)]
Add utility methods to strip zone from Ipv{4,6}Address

Most callers really want to operate of Ipv4AddressNoZone, as a zone
does not make sense. Some amount of translation may be needed when
dealing with models which we have no control over, hence ensuring
no zone is present needs to be done quickly.

This adds ipv4AddressNoZoneFor(Ipv4Address), which does an efficient
check (for the case where the source is already a NoZone) and strips
the zone.

Change-Id: Ieada4625637d0216983b515324bb5d33f5d33a99
JIRA: MDSAL-510
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 6c02ae5ce070dfeeeaae878dc5436c601d305886)

4 years agoParse IPv4-mapped IPv6 address as an IPv6 address 84/86784/1
Ajay Lele [Mon, 6 Jan 2020 18:49:50 +0000 (10:49 -0800)]
Parse IPv4-mapped IPv6 address as an IPv6 address

Inet6Address.getByAddress(byte[]) does not explicitly exist, and is
really InetAddress.getByAddress(byte[]). That method ends up returning
an Inet4Address for IPv4-mapped IPv6 addresses.

This in turn causes addressStringV6() to do the wrong thing and format
the address as an Ipv4. This is not caught by validation, as we are
skipping it by default -- and ends up causing problems way later when
such an address meets an enforcement point -- such as DOM->Binding
translation.

Fix this by using Inet6Address.getByAddress(String. byte[], NetworkInterface),
which is guaranteed to result in an Inet6Address.

Also add proper defences to addressStringV6(InetAddress), so that any
attempt to mis-use it is caught.

JIRA: BGPCEP-891
Signed-off-by: Ajay Lele <ajayslele@gmail.com>
Change-Id: Ife4cc9e57bd49b45f2beb73462a865ad84483d8f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 1d8897caf5cec5f044f870f949a15fa57de54d71)

4 years agoEliminate shift variable 67/86767/1
Robert Varga [Mon, 6 Jan 2020 22:36:21 +0000 (23:36 +0100)]
Eliminate shift variable

We do not need to track shift amount, as we can can just shift
the entire previous result, leading to more invariants in the loop.

JIRA: MDSAL-509
Change-Id: I13a108be27cac2fe4498952f3f05437927c999c0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 4b26656c945b9af5e67d28d10b014b0ed37cc510)

4 years agoAdd DottedQuad/int interface 64/86764/1
Robert Varga [Mon, 6 Jan 2020 22:17:05 +0000 (23:17 +0100)]
Add DottedQuad/int interface

DottedQuad is essentially an Ipv4Address, hence we should have
the same level of support. Add interface to create DottedQuad from
bits and serialize it to bits.

JIRA: MDSAL-509
Change-Id: I9cee4afa1993a0090f10b3969152344e03e9adc0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 4e1311cbb83dd15f2da7936385dd9384b6dc0229)

4 years agoAdd IPv4 address bridges to primitive int 54/86754/1
Robert Varga [Mon, 6 Jan 2020 17:41:24 +0000 (18:41 +0100)]
Add IPv4 address bridges to primitive int

Interfacing Ipv4Address(NoZone) with plain int is useful when
we we want to interface with byte streams, such as DataInput
or Netty's ByteBuf. This adds the methods to do so.

JIRA: MDSAL-509
Change-Id: Icce95e4a94ae41be4fc2aee352f83655ea55e89f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 98143cfc18f95eb4057587c1bdb4aa3b5e3b2e20)

4 years agoAdd HexString/DottedQuad/Uuid support to IetfYangUtil 18/86718/1
Robert Varga [Sun, 5 Jan 2020 12:33:34 +0000 (13:33 +0100)]
Add HexString/DottedQuad/Uuid support to IetfYangUtil

HexString is similar to a MacAddress and PhysAddress, hence it is
very simple to support it.

DottedQuad is essentially an Ipv4Address, hence it is almost as
simple to support it, too.

Uuid can be created from java.util.UUID, so that is the input
we are expecting.

JIRA: MDSAL-508
Change-Id: I82abd68b23bf857deeb9a64eefb69164fe6c8b24
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 7cbd12d8894b1703b19e70b07436a937a7b8d0bf)

4 years agoCleanup AbstractTypeProvider.isLeafRefSelfReference() 50/86650/1
Robert Varga [Mon, 30 Dec 2019 12:45:01 +0000 (13:45 +0100)]
Cleanup AbstractTypeProvider.isLeafRefSelfReference()

This method's logic eagerly strips the xpath, even when we may
end up not needing it. Refactor implementation to initialize
later (and bail quicker).

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

4 years agoDTOs for anydata/anyxml are not generated within a list 05/86605/3
wusandi [Wed, 25 Dec 2019 12:04:16 +0000 (20:04 +0800)]
DTOs for anydata/anyxml are not generated within a list

Code generation for container and list statements follows different
code paths and we have missed a hook in the latter to generate
opaque objects.

JIRA: MDSAL-506
Change-Id: I25a54362ceb09937ffe796081660afe7fa1d6bb2
Signed-off-by: wusandi <wusandi@163.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit e905b3d4792076251ddc276fa248e441bba157b2)

4 years agoSpeed up AbstractBuilderTemplate.removeProperty() 07/86607/2
Robert Varga [Thu, 19 Dec 2019 14:51:20 +0000 (15:51 +0100)]
Speed up AbstractBuilderTemplate.removeProperty()

Rather than performing a linear unbounded search followed by a
conditional remove, use an interator and remove the first matching
property, bailing out.

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

4 years agoUse BindingTypes.identifiable() 05/86505/1
Robert Varga [Thu, 19 Dec 2019 12:51:04 +0000 (13:51 +0100)]
Use BindingTypes.identifiable()

Instead of looking up Identifiable type each time we use it, use
the convenience method exposed through BindingTypes, improving
efficiency a bit.

Change-Id: Ib8e7bf0385a51ee687484a2667905e284a90ab3a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 06c6f6b581b0d1526231d84cf0884142fc4f8a4c)

4 years agoAdd BindingTypes.augmentation() 78/86478/1
Robert Varga [Wed, 18 Dec 2019 10:23:33 +0000 (11:23 +0100)]
Add BindingTypes.augmentation()

This migrates Types.augmentationTypeFor() into BindingTypes, so we
have proper separation.

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

4 years agoDeprecate Types.augmentableTypeFor() 74/86474/1
Robert Varga [Wed, 18 Dec 2019 08:48:31 +0000 (09:48 +0100)]
Deprecate Types.augmentableTypeFor()

This method has a mirror in BindingTypes, which is a more appropriate
place for the definition. Deprecate the method for removal and
redirect it to BindingTypes.augmentation().

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

4 years agoAdd BindingTypes.QNAME 73/86473/1
Robert Varga [Wed, 18 Dec 2019 08:52:20 +0000 (09:52 +0100)]
Add BindingTypes.QNAME

We are looking this type for each constant, which is not entirely
efficient. Add a constant to BindingTypes and use it directly, providing
a slight performance benefit.

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

4 years agoFix RPC method name conflict with JLS 66/86466/1
miroslav.kovac [Mon, 16 Dec 2019 16:28:41 +0000 (17:28 +0100)]
Fix RPC method name conflict with JLS

When we are constructing the method name for use with the RPC
provider interface we need to pay attention to conflicts with
JLS reserved words.

If such a conflict occurs, append a single '$' to the name, so
that we have a valid method name.

JIRA: MDSAL-500
Change-Id: Ifb533e2daa71bc9d1780a5d8eb48da6ce3b2d209
Signed-off-by: miroslav.kovac <miroslav.kovac@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 6e6ebc43866204667658f8bbf7cfb6233caffdc7)

4 years agoBump versions to 3.0.9-SNAPSHOT 59/86359/1
Robert Varga [Wed, 11 Dec 2019 21:46:30 +0000 (22:46 +0100)]
Bump versions to 3.0.9-SNAPSHOT

This starts the next development iteration.

Change-Id: Ic3476c2c1b8e06f8034790a9b2c695504e53ff51
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoBump odlparent/yangtools to 5.0.4/3.0.7 58/86358/1
Robert Varga [Wed, 11 Dec 2019 21:44:53 +0000 (22:44 +0100)]
Bump odlparent/yangtools to 5.0.4/3.0.7

This picks up the latest upgrades.

Change-Id: Ib02e30c7dcfa4ded9fa3b2e13015cde0b271b2c9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoAdd codegen support for nested notifications 24/86324/1
Robert Varga [Mon, 9 Dec 2019 15:44:30 +0000 (16:44 +0100)]
Add codegen support for nested notifications

We do not have a concept of instance notification, which is similar
in many respects to an action. Add the baseline interface marker
and teach mdsal-binding-generator-impl to emit interface definitions
for them.

JIRA: MDSAL-493
Change-Id: I6af84b50f3083a8e1046ee0521b126aae1ffafe5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 480afab4e0a0eb8d64367c0bd12fa3ec892a3383)

4 years agoCorrect @NonNull CodeHelpers.compilePatterns() 36/85936/1
Robert Varga [Thu, 21 Nov 2019 13:27:12 +0000 (14:27 +0100)]
Correct @NonNull CodeHelpers.compilePatterns()

Arrays and type-use annotations have weird way of being written,
this adds the correct form.

JIRA: MDSAL-487
Change-Id: I2e31c90eca5b59250f0a9e33444fa8b3b8ae5e4c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit c03c60cc068b342582a2d54861719718c750a880)

4 years agoFix CodeHelper.nonnull() nullness annotation 35/85935/1
Robert Varga [Thu, 21 Nov 2019 13:25:53 +0000 (14:25 +0100)]
Fix CodeHelper.nonnull() nullness annotation

We do not correctly propagate the fact the return is @NonNull,
leading to Eclipse issuing warnings. Fix that.

JIRA: MDSAL-487
Change-Id: I24360192d105423a19165855521bb24bb0bd0678
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 8fc4a97304080fafab158ef877e6fc180c030ac0)

4 years agoCorrect YangModuleInfo.getInstance() nullness warning 34/85934/1
Robert Varga [Thu, 21 Nov 2019 13:25:04 +0000 (14:25 +0100)]
Correct YangModuleInfo.getInstance() nullness warning

This method is missing a @NonNull, which means we end up issuing
a warning. Fix that up.

JIRA: MDSAL-487
Change-Id: I0870880bceb727b6a820bcdc0fd4177002fb4119
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 1144f464d67c5371b30463be5e4e144edaddd05b)

4 years agoFix onDataTreeChanged() references 82/85882/2
Robert Varga [Wed, 20 Nov 2019 08:11:28 +0000 (09:11 +0100)]
Fix onDataTreeChanged() references

Use a link to specific method, not just any matching.

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

4 years agoAdd yangtools javadoc link 85/85885/1
Robert Varga [Wed, 20 Nov 2019 08:12:09 +0000 (09:12 +0100)]
Add yangtools javadoc link

Cross-references mdsal-docs with yangtools-docs.

Change-Id: Iea811968568f48de9070a0a45876db71dce37470
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 674ce26e4f2c3e7f7400f7920b78bef657c05a0a)

4 years agoResync javadoc links 84/85884/1
Robert Varga [Wed, 20 Nov 2019 08:13:07 +0000 (09:13 +0100)]
Resync javadoc links

This re-synchronizes links to upstreams to match odlparent.

Change-Id: Ibc514a9aa5eb5f068561772b91061567796ed171
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 24dc1f6ea4ccdf9f8360139c23fcc3988aeabd26)

4 years agoRemove use of xbase-lib in tests 59/85859/1
Robert Varga [Tue, 19 Nov 2019 15:09:49 +0000 (16:09 +0100)]
Remove use of xbase-lib in tests

The way the expected object is constructed is horrible, just use
plain fluent builder without the extensions. This makes it more
clear and much more concise.

Change-Id: I042dfda9fadcc2b3764a449dfc34300f0928370b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoImport types being checked 50/85850/1
Robert Varga [Mon, 18 Nov 2019 12:44:39 +0000 (13:44 +0100)]
Import types being checked

When we are checking individual component types, we should not
be needing to reference them via the full name. Use imported name
instead.

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

4 years agoAdd Types.isListType(ParameterizedType) 49/85849/1
Robert Varga [Mon, 18 Nov 2019 12:16:37 +0000 (13:16 +0100)]
Add Types.isListType(ParameterizedType)

Performing duplicate checks is not efficient, if the caller already
knows the type is parameterized.

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

4 years agoSpeed up ListsBindingUtils 48/85848/1
Robert Varga [Mon, 18 Nov 2019 12:54:42 +0000 (13:54 +0100)]
Speed up ListsBindingUtils

This just uses proper fluent builder pattern instead of a
temporary variable.

Change-Id: I8cdf2cff7c910f5518eb999949f315740fe7c1ca
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 9e4b1ee522aa173efe114e315b017f77716cdb79)

4 years agoInline AbstractTypeGenerator.resolveListKeyTOBuilder() 47/85847/1
Robert Varga [Mon, 18 Nov 2019 11:52:47 +0000 (12:52 +0100)]
Inline AbstractTypeGenerator.resolveListKeyTOBuilder()

This method is only called once in a context which can already
know whether it needs to actually call it. Inline the definition,
so that we have a more efficient code flow.

Change-Id: I216ca272a13d98eb3ce4c6323fe9442c9ecaa617
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 60a335a9fcbf4ee514d32981c4e03113b115dc1e)

4 years agoOptimize AbstractTypeGenerator.listKeys() 46/85846/1
Robert Varga [Mon, 18 Nov 2019 11:36:45 +0000 (12:36 +0100)]
Optimize AbstractTypeGenerator.listKeys()

In case of an empty key definition we end up allocating
short-lived empty ArrayLists, which is not efficient. Also lists
typically have a few elements, so we end up over-allocating them.

This fixes both cases, by checking the definition first and
returning an empty list in case the definition is empty, as well
as properly allocating efficient implementation where needed.

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

4 years agoRemove unneeded checkstyle supressions 45/85845/1
Robert Varga [Mon, 18 Nov 2019 10:44:11 +0000 (11:44 +0100)]
Remove unneeded checkstyle supressions

Treading carefully and using Class.asSubclass() allows us to
remove raw types/unchecked casts.

Change-Id: Ib7554cc40f0b4f41495405db3b7715e0f4e21cc7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 6087dda3aa2e148c5046fb2d8e7b0f75a5eee844)

4 years agoParse docs version of pom.xml 46/85746/1
Thanh Ha [Mon, 4 Nov 2019 16:11:50 +0000 (11:11 -0500)]
Parse docs version of pom.xml

Issue: MDSAL-489
Signed-off-by: Thanh Ha <zxiiro@gmail.com>
Change-Id: Ie32ef32b3d89e98b9ea432bd8e2ac5ea91bf13b9
(cherry picked from commit da3cf4cd9f78d66a7edac29d6efa74a7b8a867b6)

4 years agoSpecialize JavaFileTemplate.importedName(Type) 17/85317/1
Robert Varga [Mon, 21 Oct 2019 18:46:29 +0000 (20:46 +0200)]
Specialize JavaFileTemplate.importedName(Type)

95% of call sites do not use annotations, hence we specialize
this method and support it through specialized
AbstractJavaGeneratedType.getReferenceString(Type).

This clearly separates the two codepaths and removes superfluous
checks and indirections in both paths.

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

4 years agoUse SUPPRESS_WARNINGS reference 16/85316/1
Robert Varga [Mon, 21 Oct 2019 19:15:07 +0000 (21:15 +0200)]
Use SUPPRESS_WARNINGS reference

When suppressing warnings, we should use the JavaTypeName constant
available in JavaFileTemplate.

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

4 years agoAdd @NonNull annotation to $YangModuleInfoImpl.qnameOf() 08/85308/3
Robert Varga [Mon, 21 Oct 2019 12:44:33 +0000 (14:44 +0200)]
Add @NonNull annotation to $YangModuleInfoImpl.qnameOf()

YangModuleInfoTemplate has a lot of ceremony when we statically
know the types being used by the template. Concentrate imports
into two sets, instantiate them as strings and be done with it.

Since this takes care of most dynamics, making things much easier
and predictable, we can easily add @NonNull annotations as needed.

JIRA: MDSAL-487
Change-Id: Ic9cd4da1002f3edea6f3fb18f9d49e4a377e145b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit b0ea6f0f70fbc597779703a4c65dd85b69355de3)

4 years agoCleanup YangModuleInfoTemplate 05/85305/1
Robert Varga [Tue, 15 Oct 2019 10:32:16 +0000 (12:32 +0200)]
Cleanup YangModuleInfoTemplate

generateModelProvider() returns a string, use the appropriate
template syntax. Also use Map.putIfAbsent() instead of
containsKey()/put() checks.

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

4 years agoFix spotbugs complaints around logging 97/85297/1
Robert Varga [Mon, 21 Oct 2019 16:52:35 +0000 (18:52 +0200)]
Fix spotbugs complaints around logging

Spotbugs is very much correct about warning about non-constant
format strings. This patch fixes that up.

Change-Id: I8df61b64be1478510e60af99dd2cd2365a98f2c1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 89ffe8626f4addebedc19f4c85e12d35d047b2e0)

4 years agoUse ImmutableSet in YangModuleInfo 96/85296/1
Robert Varga [Mon, 21 Oct 2019 15:23:01 +0000 (17:23 +0200)]
Use ImmutableSet in YangModuleInfo

This allows us to bind to a concrete implementation, improving
performance very slightly.

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

4 years agoBump versions to 4.0.8-SNAPSHOT 48/85248/1
Robert Varga [Sat, 19 Oct 2019 17:25:11 +0000 (19:25 +0200)]
Bump versions to 4.0.8-SNAPSHOT

This starts the next development iteration.

Change-Id: I9589b20f0349b7fad8eb0d86a35af81038b07e8c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoBump to odlparent-5.0.3/yangtools-3.0.6 33/85233/4
Robert Varga [Sat, 19 Oct 2019 09:45:08 +0000 (11:45 +0200)]
Bump to odlparent-5.0.3/yangtools-3.0.6

This ugprades both upstreams to latest versions.

Change-Id: I020a3bf0d107fbb105645ebf3a598c11ee7d972f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoAdd IetfYangUtil.physAddressBytes() 39/85239/2
Robert Varga [Sat, 19 Oct 2019 10:45:29 +0000 (12:45 +0200)]
Add IetfYangUtil.physAddressBytes()

This adds {mac,phys}AddressBytes() to extract these from well-known
objects.

JIRA: MDSAL-486
Change-Id: Id4a9825be476e4a83bf39c4372340b479dd76164
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit b6b5ca2897c00acb04367d009fa698235ba6de06)

4 years agoFix invalid augmentations 41/85241/1
Robert Varga [Sat, 19 Oct 2019 12:43:00 +0000 (14:43 +0200)]
Fix invalid augmentations

choice/case structures are collapsed to their parent data tree
node, hence it is invalid to define (in same namespace) the equivalent
of:

container {
  leaf foo { type string; }
  choice some {
    case foo {
      leaf foo { type string; }
    }
  }
}

Fix up the testing model.

Change-Id: I1e3ef8f9b38016e0290221f22b8233fba176bc0e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoFix bug5882 test case 37/85237/1
Robert Varga [Sat, 19 Oct 2019 10:18:54 +0000 (12:18 +0200)]
Fix bug5882 test case

This test case uses illegal duplicate leaves, fix that up.

Change-Id: I3330fafb11b798ab74f9a64b04f4bff8d82b2ce6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoAdd @Deprecated to obsolete elements 04/85204/1
Robert Varga [Sat, 12 Oct 2019 14:06:19 +0000 (16:06 +0200)]
Add @Deprecated to obsolete elements

This adds the functionality to add @Deprecated to obsolete components,
unlike the Java 9 counterpart, we are not marking the result for removal.

JIRA: MDSAL-481
Change-Id: I2e23e37e65b799b363a518fc5d737b40e5a64a3c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 510bf99c58b9b76611901d068ce23f32ca9a46a9)

4 years agoMake Builders sensitive to @Deprecated annotations 03/85203/1
Robert Varga [Sat, 12 Oct 2019 13:54:37 +0000 (15:54 +0200)]
Make Builders sensitive to @Deprecated annotations

When we are generating a builder for a deprecated type, we need to
consider how it deals with deprecated elements.

There are two scenarios here:

1) status=deprecated -> @Deprecated
In this case it is fair game to produce data, hence the builder
is not deprecated and therefore has @SuppressWarnings("deprecation")

2) status=obsolete -> @Deprecated(forRemoval = true)
In this case the data should not be produced at all, hence
the builder needs to be @Deprecated(forRemoval), too.

We recognize both these conditions and act accordingly. We misue
bug-586 test case to hijack compilation testing.

JIRA: MDSAL-485
Change-Id: I9d08116615cf8c5bdb6a8f4977c9810686618cda
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit e4ccdeadb4ffddae62860f8d080cb2a391a02f1f)

4 years agoFix space stripping 02/85202/1
Robert Varga [Tue, 6 Aug 2019 15:48:56 +0000 (17:48 +0200)]
Fix space stripping

This fixes the coded intended to strip leading/trailing spaces
from the line builder. This was ineffective due to how xtend
compares char-to-String and would not work anyway, as the stripping
was done in wrong order.

Change-Id: I119ed55492da17355e3f3137dcbb8862259dc44f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 41cf4c3d41e7779ab42d6fae87fd44f7c8b69dcf)

4 years agoAdd factory method for malformed messages 28/84828/2
Robert Varga [Mon, 30 Sep 2019 21:15:56 +0000 (23:15 +0200)]
Add factory method for malformed messages

This is a utility method to make it easier for users to create nice
messages when they cannot make sense of a message.

JIRA: MDSAL-455
Change-Id: Ic8292b3d766d53b17a5e3e3dd7fd5a625e7618bc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 8ca1742fc91ac9f21772c9b69879df134ecaf689)

4 years agoBump versions to 4.0.7-SNAPSHOT 74/84574/1
Robert Varga [Sun, 22 Sep 2019 16:02:18 +0000 (18:02 +0200)]
Bump versions to 4.0.7-SNAPSHOT

This starts the next development iteration.

Change-Id: I9c318073df441ac5a9517bb93473408a6f2ca75c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoRevert "Do not emit empty lists to NormalizedNodes" 72/84572/1
Robert Varga [Sun, 22 Sep 2019 02:12:42 +0000 (04:12 +0200)]
Revert "Do not emit empty lists to NormalizedNodes"

This reverts commit cbe6a8cafaec862f2a918ecc9af99720090d3c8a,
as it is breaing DTO behavior applications explicitly depend on.

The issue cannot be fixed without touching templates, i.e. requires
complete implementation of MDSAL-449.

JIRA: MDSAL-456
Change-Id: I07baf3a7be3867c6bee1b66a05b013ee0ba5171f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit f4f93bf1189e44a7e62a6c8396d7aa4fea03e5ca)

4 years agoRemove superfluous @NonNull annotation 80/84480/1
Robert Varga [Sun, 15 Sep 2019 10:11:14 +0000 (12:11 +0200)]
Remove superfluous @NonNull annotation

MoreObjects.toStringHelper() is not tagged properly, hence generated
toString() methods generate a ton of nullness warnings. Fix that up
by removing the annotation (to mirror what we are otherwise doing
in other methods).

Change-Id: Ib4fc3d3fdd3fab1e5fb257f3e85c344999d6eb1a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 8123a3db8da09c4773e64829225274e5f973c05d)

4 years agoBump versions to 4.0.6-SNAPSHOT 15/84415/3
Robert Varga [Fri, 13 Sep 2019 17:49:53 +0000 (19:49 +0200)]
Bump versions to 4.0.6-SNAPSHOT

This starts the next development iterator.

Change-Id: Id55e5d8dacc938e238d4dc5ae548849e78383164
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoMake BaseTemplate.asArguments() take a Collection 84/84384/1
Robert Varga [Thu, 5 Sep 2019 12:25:28 +0000 (14:25 +0200)]
Make BaseTemplate.asArguments() take a Collection

This side-steps the need for IterableExtensions, make the code
a tad faster.

Change-Id: I210d4da343bdae82b81dbb0fd30c6d8ed7d6c13e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 238b755b457a5e1fd9b85cd2fe8a9aea1db82322)

4 years agoRemove use of new Integer(String) 83/84383/1
Robert Varga [Thu, 5 Sep 2019 10:05:57 +0000 (12:05 +0200)]
Remove use of new Integer(String)

This constructor has been deprecated in Java 9, migrate to
Integer.valueOf(String) instead.

Change-Id: I5b6dfe27502408bab9ae2f2453dd1a713c00b6bd
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 9e2bced0e7e2945fed1b2981424f4fa5232c3ae5)

4 years agoOptimize array checks 82/84382/1
Robert Varga [Wed, 4 Sep 2019 14:24:01 +0000 (16:24 +0200)]
Optimize array checks

Rather than bouncing through .importedName().contains("[]"), we
can make this check through .name().endsWith("[]"), which prevents
a round-trip to import mechanics and is potentially faster.

Change-Id: I4a939333c294ffa94ac1c013a8e3cee466e32cb9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 35400adb8f5c7db3320fdf6fbcbadf377569c2e0)

4 years agoCache computed fieldName in templates 81/84381/1
Robert Varga [Wed, 4 Sep 2019 14:17:32 +0000 (16:17 +0200)]
Cache computed fieldName in templates

We end up using the same name multiple times, which really is an
invariant. Cache and reuse the constant, so that we end up with
more efficient code.

Change-Id: I6ee5cc162c43c542a08ba84250f42d9a30ba3f0d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 72585e1dff2c81af33f547b49694f7c976033bed)

4 years agoFix ClassTemplate.genConstructor() declaration 80/84380/1
Robert Varga [Wed, 4 Sep 2019 12:44:47 +0000 (14:44 +0200)]
Fix ClassTemplate.genConstructor() declaration

Using an array here is forcing us to needlessly unwrap the arraylist
(a perfectly iterable thing) to an array, which is only iterater over.

Fix this by passing down an iterable, which means the list can be
passed down as is.

Change-Id: I1572729d554c3ce8ae6ab94c1ba3d5547399e7ab
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 44e0faeba93e1ac992130b3b282c46186b13a076)

4 years agoAcquire first value manually in ClassTemplate 79/84379/1
Robert Varga [Wed, 4 Sep 2019 12:40:35 +0000 (14:40 +0200)]
Acquire first value manually in ClassTemplate

xtend's get(0) extension ends up creating a temporary list
holding a copy of the (single) value. This is not entirely
efficient, as we can get the same result from plain iterator.

Change-Id: I0f4398a47cb771e8ab7a212a67c5e402d49ffbf2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 878c3a64f17c7771bb6fac0d42f8e9c1307d6096)

4 years agoAcquire first entry of type constants in BuilderTemplate 78/84378/1
Robert Varga [Wed, 4 Sep 2019 12:30:47 +0000 (14:30 +0200)]
Acquire first entry of type constants in BuilderTemplate

Current code is relying on xtend Conversions to get first entry
from keySet/values separately. That code ends up copying the entire
collection into an array before picking the first element, which
is ... far from optimal.

Peel the first entrySet item using iterator().next() and then
reference key/value from there, which removes a dependency on
Conversions and is way more efficient.

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

4 years agoOptimize allProperties sorting 77/84377/1
Robert Varga [Wed, 4 Sep 2019 11:55:25 +0000 (13:55 +0200)]
Optimize allProperties sorting

Java 8 has list.sort(), which we can easily short-circuit to
ArrayList's implementation by using 'val' declaration. We can
also make the comparator a constant, so that it is widely reused.

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

4 years agoOptimize ClassTemplate.allProperties 76/84376/1
Robert Varga [Wed, 4 Sep 2019 11:46:14 +0000 (13:46 +0200)]
Optimize ClassTemplate.allProperties

This variable is guaranteed to be a List, declare it as such,
adding following benefits:
- eliminates ClassTemplate's reliance on IterableExtensions
- a few isEmpty() checks get be eliminated, as size() is now
  handled through List.size()

Change-Id: I14354dfef3a6b663c9a027353704127437d4344d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 425d13761fd76b0ca9691a4735977519e96adf45)

4 years agoOptimize BuilderTemplate string references 75/84375/1
Robert Varga [Wed, 4 Sep 2019 11:34:38 +0000 (13:34 +0200)]
Optimize BuilderTemplate string references

AUGMENTATION_FIELD.toFirstUpper is a true constant, make sure we
compute it only once.

Also, in case of augmentable, the augmentable imported name is an
invariant, hence precompute the string and use it multiple times
in the template.

Change-Id: I9607ac2e18e587118659545205323037db176fda
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 55f2409e9afd9eb7b82213bdd9e710b4e206495a)

4 years agoImprove generated builder documentation 74/84374/1
Robert Varga [Tue, 3 Sep 2019 20:01:24 +0000 (22:01 +0200)]
Improve generated builder documentation

This adds some sorely-needed guidelines as to how to use generated
builders.

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

4 years agoRemove use of YangInstanceIdentifier.EMPTY 59/84359/3
Robert Varga [Wed, 28 Aug 2019 19:22:36 +0000 (21:22 +0200)]
Remove use of YangInstanceIdentifier.EMPTY

This constant is deprecated, migrate users to empty().

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

4 years agoBump yangtools to 3.0.5 18/83918/4
Robert Varga [Thu, 22 Aug 2019 15:11:47 +0000 (17:11 +0200)]
Bump yangtools to 3.0.5

This bumps yangtools to pick up the latest fixes.

Change-Id: I67d6a5ce5f6026664eab973acfa214cf6891f58d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoBump odlparent to 5.0.2 17/83917/3
Robert Varga [Thu, 22 Aug 2019 15:10:18 +0000 (17:10 +0200)]
Bump odlparent to 5.0.2

This bumps odlparent to pick up the latest updates.

Change-Id: I9433dec861e25a103e5dfb7533ce958f79dbe7b3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoFix Builder javadoc mis-reference 84/84184/1
Robert Varga [Tue, 3 Sep 2019 19:24:17 +0000 (21:24 +0200)]
Fix Builder javadoc mis-reference

Builders should reference target type in their documentation.

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

4 years agoImprove BaseYangTypes lookups 52/84152/1
Robert Varga [Mon, 2 Sep 2019 15:42:40 +0000 (17:42 +0200)]
Improve BaseYangTypes lookups

Update constant definition to be bound to ImmutableSet, so that
JIT has an easier time optimizing these lookups.

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

4 years agoImprove TimerValue builder lookups 38/84138/1
Robert Varga [Mon, 2 Sep 2019 15:13:02 +0000 (17:13 +0200)]
Improve TimerValue builder lookups

The constant is an ImmutableMap, make that explicit, so lookups
can binding directly to it.

Change-Id: Ia4026c5dc10c6e7dcb2e8c2f99709d97e3876e84
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoFix mergeable if-the-else statements 08/83708/2
Robert Varga [Fri, 16 Aug 2019 13:32:11 +0000 (15:32 +0200)]
Fix mergeable if-the-else statements

This fixes DTOs to use simple return expressions. While we are in
the area, also optimize toString() methods to lower their footprint.

Change-Id: Ie206c2942c5fb9b6cbbdc2a31d197560559fd660
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 18748923d6759e0e301b608e6d6bb15a69583bbb)

4 years agoFix checkstyle 93/83893/2
Robert Varga [Thu, 22 Aug 2019 11:22:40 +0000 (13:22 +0200)]
Fix checkstyle

Enabled-by-default checkstyle is finding violations, fix them up.

Change-Id: I77933154813faecc87fd494caa5c51f96a56c0d1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoAdd missing yanglib docs references 05/83905/1
Robert Varga [Thu, 22 Aug 2019 11:48:08 +0000 (13:48 +0200)]
Add missing yanglib docs references

Reactor build order is showing that we are not documenting
these in mdsal-docs. Fix that.

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

4 years agoDo not emit empty lists to NormalizedNodes 07/83707/2
Robert Varga [Tue, 18 Jun 2019 19:26:20 +0000 (21:26 +0200)]
Do not emit empty lists to NormalizedNodes

This patch changes the representation of empty Binding lists in
DOM world. Empty lists are equivalent to being non-present, hence
they are not emitted.

This mirrors the getFoo()/nonnullFoo() accessor duality, i.e. empty
lists can be instantiated on-demand as placeholders for nulls.

In DOM world, list nodes are virtual containers, which do not hold
any semantics and are created on demand -- hence it does not make
sense to pass them down to DOM.

This does not create data tree operation changes, as lists are not
directly addressable, hence their WRITE/MERGE semantics are shared
by their parent. Empty merges have not semantic value, as empty
lists disappear on touch. Empty writes end up correctly observing
lifecycle -- empty lists end up disappearing, just as they would
be expected if they have undergone a lifecycle event (such as an
empty merge).

JIRA: MDSAL-456
Change-Id: I78efc4aa4c3b4100ff52490fefe94e2f65f43efc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 500a001ce41eb932997d70c43c9e7d07dbcca843)

4 years agoRestructure LengthGenerator.createExpressions() 99/83699/2
Robert Varga [Thu, 15 Aug 2019 11:36:49 +0000 (13:36 +0200)]
Restructure LengthGenerator.createExpressions()

SpotBugs is warning about INT_VACUOUS_COMPARISON at the head
of the 'min <= Integer.MAX_VALUE' comparison. This restructures
the logic to eliminate this check.

Change-Id: Ie465bb16443d9912a12a8b2f712851a24d339d78
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoFix runtime builder string duplication 96/83696/2
Robert Varga [Fri, 16 Aug 2019 11:36:16 +0000 (13:36 +0200)]
Fix runtime builder string duplication

This is a minor code smell, concentrate exception allocation to
get rid of it.

Change-Id: I3343b5dd844e4796cd781ef478412dd40e980152
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoRemove YangSyntaxErrorException throws 98/83698/2
Robert Varga [Fri, 16 Aug 2019 11:49:23 +0000 (13:49 +0200)]
Remove YangSyntaxErrorException throws

YangSyntaxErrorException is a subclass of YangParserException, hence
there is no need to declare it separately, as pointed out by Sonar.

Change-Id: I22b72d1e79b283db7d77b9cc720c3b80054cd03d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoRemove trailing comments 95/83695/2
Robert Varga [Fri, 16 Aug 2019 11:20:53 +0000 (13:20 +0200)]
Remove trailing comments

This fixes up minor code smells reported by sonar.

Change-Id: Ic7abd5e431f2fc5e91ebc251d5a1e65d3c26c2bc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoFix string duplication in Ipv6Utils 97/83697/1
Robert Varga [Fri, 16 Aug 2019 11:40:52 +0000 (13:40 +0200)]
Fix string duplication in Ipv6Utils

This is minor code smell, create a method to concentrate common
functionality.

Change-Id: I32fb6c5c29a099885413cf18361e53098593054e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoEliminate 'txt' temporary 87/83687/1
Robert Varga [Thu, 15 Aug 2019 11:29:15 +0000 (13:29 +0200)]
Eliminate 'txt' temporary

This variable is not really needed and the way it is used SpotBugs
reports a (valid) dead local store. Eliminate the variable completely.

Change-Id: I4fec53be80a54bedfc7481063bf507c9f10990a8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 59ccf2fab74b032e8f093e278cd9f186b333798b)

4 years agoDo not include byte-buddy META-INF in shade 78/83678/2
Robert Varga [Thu, 15 Aug 2019 12:23:33 +0000 (14:23 +0200)]
Do not include byte-buddy META-INF in shade

We do not want to leak module-info.class from byte-buddy, hence
filter all of its META-INF, as it does not provide anything of
value.

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

4 years agoFix use of StringTokenizer methods 70/83670/1
Robert Varga [Thu, 15 Aug 2019 11:21:56 +0000 (13:21 +0200)]
Fix use of StringTokenizer methods

Rather than using Enumeration-related methods (*Element()), use
the methods provided by StringTokenizer (*Token()), which have
the same functionality, but are not down-casted to Object.

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

4 years agoMake AlphabeticallyTypeMemberComparator Serializable 69/83669/1
Robert Varga [Thu, 15 Aug 2019 11:07:20 +0000 (13:07 +0200)]
Make AlphabeticallyTypeMemberComparator Serializable

Comparators are recommended to be serializable, this fulfills
the need.

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

4 years agoFix SpotBugs complaing around locale 68/83668/1
Robert Varga [Thu, 15 Aug 2019 11:05:50 +0000 (13:05 +0200)]
Fix SpotBugs complaing around locale

We are using english locale, which should work across the platform.

Change-Id: I552d4212d976c5034b76fb27bce887014b5edb9e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 6c5442b6f9b659f296c468f162e6253db00ce53e)

4 years agoFix InterfaceTemplate documentation 67/83667/1
Robert Varga [Thu, 15 Aug 2019 11:04:26 +0000 (13:04 +0200)]
Fix InterfaceTemplate documentation

InterfaceTemplate will fail to instantiate with a NPE if a null
type is ever passed in. Fix documentation and remove dead code.

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

4 years agoBump versions to 4.0.5-SNAPSHOT 43/83643/1
Robert Varga [Thu, 15 Aug 2019 06:22:59 +0000 (08:22 +0200)]
Bump versions to 4.0.5-SNAPSHOT

This starts the next development iteration.

Change-Id: I844a1b877546024657287839ec4a5464d9ed192d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoOptimize whitespace replacement 00/83600/2
Robert Varga [Tue, 6 Aug 2019 15:27:33 +0000 (17:27 +0200)]
Optimize whitespace replacement

Rather than doing two replacements, use a single two-character
matcher and a single replacement pass. While we're in the area,
also create a SPACE constant and use it where we mean ' ' as a
char (not a string).

Change-Id: I30d7c16074fe172a834ecf1bb0fe30a18fdc6bac
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoUse bulk-close for internal registrations 25/83625/3
Robert Varga [Wed, 14 Aug 2019 14:49:59 +0000 (16:49 +0200)]
Use bulk-close for internal registrations

Rather than using wrapped registrations through the public API,
we really want to first remove all modules and then update the
context (if needed).

JIRA: MDSAL-466
Change-Id: Ib281fff7264b3dd11b222095f8286087cb488002
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoDisable updates when we are stopping 59/83559/4
Robert Varga [Tue, 6 Aug 2019 17:48:05 +0000 (19:48 +0200)]
Disable updates when we are stopping

We should not be propagating bundle updates when we know we are
stopping. This patch marks that knowledge in the tracker.

JIRA: MDSAL-466
Change-Id: Ie4e8b96907a8909150b4080000888d1d10ce8e54
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoDo not lose newlines/tabs from javadoc 30/83430/2
Robert Varga [Tue, 6 Aug 2019 14:24:44 +0000 (16:24 +0200)]
Do not lose newlines/tabs from javadoc

When we are formatting javadoc for a accessor method, we must treat
any newlines/tabs as whitespace and not lose them, otherwise we would
end up with concatenated words.

JIRA: MDSAL-416
Change-Id: I3c0fc296692a141d6787a5cba8b17738a108274e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoFix curly braces 89/83489/2
Robert Varga [Tue, 6 Aug 2019 12:24:20 +0000 (14:24 +0200)]
Fix curly braces

These anonymous classes should be properly spelled out, as should
private constructors.

Change-Id: I314c92660703e68019da0562172ce3e9519ce882
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoReduce use of java.lang constructors 33/83433/2
Robert Varga [Tue, 6 Aug 2019 12:12:19 +0000 (14:12 +0200)]
Reduce use of java.lang constructors

Long/Integer constructors have been deprecated, reduce their use.

Change-Id: I2ce4e63904694d3fe442622b85d831253b4a87fb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoFix bad javadoc license headers 34/83434/2
Robert Varga [Mon, 5 Aug 2019 14:20:31 +0000 (16:20 +0200)]
Fix bad javadoc license headers

License headers should not be javadocs, fix that up.

Change-Id: I6496008bfa2e8d227de8bb2aab0b2888c3ffed83
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
4 years agoFixup cast in BindingReflections 32/83432/2
Robert Varga [Tue, 6 Aug 2019 11:37:54 +0000 (13:37 +0200)]
Fixup cast in BindingReflections

Use an explicit typed Class instead of raw class.

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