Jie Han [Tue, 29 Aug 2017 10:55:15 +0000 (18:55 +0800)]
Binding v2 - Map 'type empty' to yangtools.yang.common.Empty
- make generator map Empty to empty leaf and use prefix 'get'
for getter methos.
- fix codec for type Empty and its derived type correspondingly.
Change-Id: Icbc5c729ce4f035323fffc775f4943bc7ce50989
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Robert Varga [Wed, 28 Feb 2018 22:51:02 +0000 (23:51 +0100)]
Export declared regexes to generated code
This patch exports declared pattern regular expressions to binding
generators, thus allowing them to report violations using the declared
string rather than the mangled Pattern string we use to implement
enforcement.
As it turns out there is place for improvement with generated code
size, as decoding pattern negation requires a bit of repetition
as well as needing to capture additional strings. Since we can take
advantage of common code library, do not encapsulate single expressions
in an array.
This patch battles those ill effects by exposing CodeHelpers class
from yang-binding, which hosts common code blocks for reuse by
generated code. This means classes generated by this and newer codegen
plugins require a matching or newer version of yang-binding at runtime.
JIRA: MDSAL-313
Change-Id: I8abb33660c5182703f2db5faf0eee7e08ce15f06
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Michael Vorburger [Thu, 1 Mar 2018 14:57:29 +0000 (15:57 +0100)]
bump xtendbeans 1.3.0 → 1.3.1
for https://github.com/vorburger/xtendbeans/commit/
52e4b617e9e077763c2bbedc5fd6e202ca87a7e8
see also https://lists.opendaylight.org/pipermail/netvirt-dev/2018-March/006421.html
no other changes are included in this release
Change-Id: I44c5d4a58601b99579597fc7e4c496587a354cee
Signed-off-by: Michael Vorburger <vorburger@redhat.com>
Robert Varga [Wed, 7 Mar 2018 13:40:48 +0000 (14:40 +0100)]
Append result entries directly to result
Instead of using Collectors.toList() and addAll(), use a direct
result:add methodhandle.
Change-Id: Ib055d675c125cac3ed957399709434c0b8255703
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Tue, 29 Aug 2017 02:10:31 +0000 (10:10 +0800)]
Bug 8903: Binding v2 - binding-data-codec does not work with boolean type using typedef
- Ported from
Bug 8903 - binding-data-codec does not work with boolean type using typedef
https://git.opendaylight.org/gerrit/62389
Change-Id: I14820662036aa3536ebfd32ea5d6af2c92d0f995
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Tue, 27 Feb 2018 02:27:01 +0000 (10:27 +0800)]
MDSAL-304: Binding V2 maps identities to java.lang.Class
- Make BaseIdentity an interface, change abstract classs
to interface for identifier binding.
Change-Id: I256f650da0e535fbbe2d1671efdc503b7912f86f
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Tom Pantelis [Fri, 2 Mar 2018 03:35:52 +0000 (22:35 -0500)]
Workaround for Findbugs unconfirmed cast
EntityOwnershipChange inherits the getEntity method from
GenericEntityOwnershipChange whose return type is parameterized
to Entity however Findbugs gets confused with
Entity entity = entityOwnershipChange.getEntity();
and flags a violation for "Unchecked/unconfirmed cast" from
GenericEntity to Entity. I believe this is due to erasure of the
actual return type. To alleviate this, override getEntity() in
EntityOwnershipChange with the actual return type Entity.
Change-Id: I5cf8aa7ab4672c9efb0e13244e698ea9595bfbe5
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
Robert Varga [Tue, 6 Mar 2018 10:27:48 +0000 (11:27 +0100)]
Revert "Add YangModuleInfoTemplate hashCode/equals"
This reverts commit
16f4a3460a35c4def10c9c78f5eede48d3eaf025.
Change-Id: Id4645c94387b301413566e6a70f1a6bdbed65caf
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Tue, 29 Aug 2017 01:50:00 +0000 (09:50 +0800)]
Bug 8903 - binding-data-codec does not work with boolean type using typedef
Change-Id: Ib47bedea0e6bbebf7c5e3dbbd012b0df3e872a4b
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Mon, 5 Feb 2018 06:38:14 +0000 (14:38 +0800)]
Binding V2 generator - fix choice/case
- Make generated type of choice implement Instantiable.
- Pass down the closest ancestor parent type (childOf) through
choice/cases to their children data nodes.
- Fix generate types from augmentd choice/cases as well as
unit tests.
- Cleanup GenHelperUtil a bit.
Change-Id: Id65d1025a173298dd25e70f36f9c8e3723d460c5
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Thu, 1 Mar 2018 07:13:49 +0000 (15:13 +0800)]
Binding v2 - Cleanup AugmentToGentype
- Cleanup deprecated methods, since uses augment would be
processed as inline nodes in binding v2, we do not need
these methods at all.
Change-Id: Ic8b9e27805fa3bd978e4b069edfe88f8ce891e80
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Thu, 1 Mar 2018 06:06:45 +0000 (14:06 +0800)]
Binding v2 - Eliminate suffix for the binding name of schema nodes in grouping
- It's not necessory to append 'Data' or 'Grouping' to the type name
of nodes in grouping, since they're naturally not in the same path.
for the top directory, one is in 'grp' and the other is in 'data'.
- Suffix also can't be used to resolve name collisions.
See details in JIRA:MDSAL-271
Change-Id: I5c5cc4774644e089bedb200b25c6854f0cf077b7
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Thu, 1 Mar 2018 05:53:27 +0000 (13:53 +0800)]
Binding v2 - Optimize acceptable condition for BuilderGenerator
- Since GeneratedTypeForBuilder mark a type which has its builder,
it is nice to use it for judgment.
Change-Id: Ia09f49b7c3cd88f6bfa606a78d6c108f23d306bd
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Robert Varga [Mon, 5 Mar 2018 08:20:06 +0000 (09:20 +0100)]
Add YangModuleInfoTemplate hashCode/equals
If two instances of the same YangModuleInfo get compared, they should
compare as equals.
Change-Id: I0ba756e411b97cb273ed824b53ce9593d9c4824a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 5 Mar 2018 08:16:03 +0000 (09:16 +0100)]
Fix YangModuleInfoTemplate
YangModuleInfoTemplate has a wrong check for null, where it should
be checking for Optional.present. Fix that.
Change-Id: I95ccfd7a938b173cd0cc8aa6be997a2afe471056
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 1 Mar 2018 23:23:38 +0000 (00:23 +0100)]
Split out JavaFileTemplate
This is a useful piece with a bit of logic. Separate it out into
Java, where maintenance is easier. This forces us to define operations
on import map, which is always good.
Change-Id: Idf279352c57a96112b235f700ec7e910bf886461
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 1 Mar 2018 12:12:54 +0000 (13:12 +0100)]
Fix checkstyle in mdsal-binding-test-model
Fix checkstyle and enable enforcement.
Change-Id: I2680c421ed4703170f6ea0dfdd9a7ee662d4776d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 1 Mar 2018 15:34:15 +0000 (16:34 +0100)]
Speed up javadoc formatting
Initializing a StringBuilder with a string results in it being
sized to contain only that string -- hence forcing a reallocation
on next append.
This patch updates javadoc formatting code to use a default allocation
and append the initial string afterwards -- leaving some room for
further appends.
Change-Id: I910a3c84d37f462d99815f5ea63700cc78dfd2cc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 1 Mar 2018 10:15:06 +0000 (11:15 +0100)]
Do not open-code ImmutableMap.copyOf()
This is a remnant of the early days when we did not want to depend
on Guava. Do not generate open-coded map squashing code but rather
use ImmutableMap.copyOf().
Change-Id: I4700b4c17aecbe604ddf62f817481f0067babf7a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 1 Mar 2018 09:41:31 +0000 (10:41 +0100)]
Fix deprecation warnings in RangeGenerators
Propagate @Deprecated annotation outward, removing most of the warnings.
Change-Id: I4c4da282bfe4fca1b43c00d2826e3161ac288a2e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Tue, 6 Feb 2018 10:30:59 +0000 (18:30 +0800)]
MDSAL-253: Binding v2 - BindingToNormalizedNodeCodec fails to deserialize union of leafrefs
- Ported from Binding v1:
https://git.opendaylight.org/gerrit/#/c/60698/
Change-Id: I82e9c71a662c228e77668e70c648d048a18922e6
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Robert Varga [Wed, 28 Feb 2018 15:03:09 +0000 (16:03 +0100)]
Invert enforcement patterns when needed
RFC7950 and yang-model-api defines pattern modifier invert-match,
which needs to be taken into account when validating incoming strings.
Mutate the pattern we expose to the codegen such that it captures
the inversion operation. This code is closely related to generated
code and string formats used therein, hence the beef of the
implementation lives in BindingMapping.
JIRA: MDSAL-314
Change-Id: Ie29745d3343f565ac6b1b5716b1ec38dd0f09bc9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 28 Feb 2018 12:32:55 +0000 (13:32 +0100)]
Fix a patterns reference
We should be referencing the constant name rather than hard-coding
it in the template.
Change-Id: Ib552b37cdfb4e3f8cef794d764ba8558f6db3df6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 28 Feb 2018 15:52:33 +0000 (16:52 +0100)]
Use org.apache.commons.text.StringEscapeUtils
StringEscapeUtils have moved from commons-lang to commons-text,
use them from their new location.
Change-Id: I256e64de78de253592e2cd22cc17b2f66d2d95e5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 26 Feb 2018 00:04:00 +0000 (01:04 +0100)]
Eliminate twirl execution from mdsal-binding2-generator-impl
We do not have any templates left, speed up compilation by eliminating
unneeded plugin invocations. Also fixe project import in default Eclipse.
Change-Id: I3416f2cd5ed50e4a914817a205a5ca56a85091da
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 27 Feb 2018 23:56:28 +0000 (00:56 +0100)]
Silence code generator a bit
We do not need an explicit INFO whenever a service is generated.
Lower the level at which this information is logged to debug.
Change-Id: Ifab29e0cec7519135e1d96adc486134d3204c329
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 21 Feb 2018 14:49:18 +0000 (15:49 +0100)]
Squash regular expression constants
A heap dump analysis has shown we are retaining default-sized
sparse ArrayLists in ConstantImpl. Make sure we squash them to
a properly-sized ImmutableList.
Change-Id: I0b83440af46bcaad334d55506c2f08e36d9a7727
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Anil Belur [Mon, 26 Feb 2018 07:41:44 +0000 (17:41 +1000)]
Bump versions by x.(y+1).z for next dev cycle
Change-Id: Ib4799fb36fc0de8b41418ccc547eaa3c061c7396
Signed-off-by: Anil Belur <abelur@linuxfoundation.org>
Jie Han [Sat, 24 Feb 2018 07:33:31 +0000 (15:33 +0800)]
MDSAL-301: Binding v2 - Rework javadoc generation
- ported from:
https://git.opendaylight.org/gerrit/68191
https://git.opendaylight.org/gerrit/68254
- Move javadoc generation from mdsal-binding2-generator-impl
to mdsal-binding2-java-api-generator
Change-Id: Ia9a23af5528f7511908d13a0570e8900daeb60a1
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Robert Varga [Fri, 23 Feb 2018 15:43:04 +0000 (16:43 +0100)]
Eliminate XtendHelper and SchemaLock
These classes are not used anywhere, eliminate them.
Change-Id: If3e726219b8a5e62a2138a3d98bc1ebd7d86a405
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Mon, 28 Aug 2017 06:59:50 +0000 (14:59 +0800)]
Binding codec v2 - fix anyxml #3
- Add AnyxmlNodeCodecContext
Change-Id: I76d3cec49cbd98747f666719908be304057bf364
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Mon, 28 Aug 2017 06:46:01 +0000 (14:46 +0800)]
Binding codec v2 - fix anyxml #2
- Add AnyxmlCodec to serialize/deserialize between
Document and DOMSource.
Change-Id: Idf3c6be4fa1e88874aa331b170301fa65ce10e1c
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Mon, 28 Aug 2017 06:34:40 +0000 (14:34 +0800)]
Binding codec v2 - fix anyxml #1
- Support Anyxml node codec
Change-Id: Ic2ff67cf1be56f4e560b929cc695c329268d1d4e
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Thu, 24 Aug 2017 07:25:26 +0000 (15:25 +0800)]
Binding codec v2 - fix notification implements Instantiable
- Call implementedInterface to get class to
get serializer.
Change-Id: I53c7422b0d15167452e9e30a3d3a43557831389a
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Wed, 11 Oct 2017 06:49:05 +0000 (14:49 +0800)]
Binding codec v2 - fix augmentation #7
- add yangs and tests
- add comment
Change-Id: I7bf32c49a68cd7724da4a0cf355a755178f119c1
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Wed, 11 Oct 2017 06:41:10 +0000 (14:41 +0800)]
Binding codec v2 - fix augmentation #6
- Add AbstractStreamWriterGenerator to support multiple
augmentation schemas with the same target path for
one generated type.
Change-Id: Iac5ec67adb6f77da2e181c59c4e6cecb0239fb9d
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Robert Varga [Mon, 29 Jan 2018 17:49:44 +0000 (18:49 +0100)]
Switch to java.util.function.Supplier
This is an internal interface, we can safely switch it to
Java 8 interface rather than the Guava one.
Change-Id: Ie199bb690e80958c859036708ce1945e3ed313f6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 14 Feb 2018 13:06:02 +0000 (14:06 +0100)]
Re-organize YANG snippet generation and comment confusion
This is a follow-up cleanup on the previous patch, which has created
an unnecessary interface and tunneling contract. We instead record
the details of why a class was generated, capturing comments correctly
in GeneratedType.comment. mdsal-binding-java-api-generator is then
taught to use this information correctly and generate the YANG snippet
as it sees fit.
Change-Id: I25580c6310d05007fea63e04d70cd12d5c6f9ace
JIRA: MDSAL-301
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 13 Feb 2018 13:02:44 +0000 (14:02 +0100)]
Eliminate xtend from mdsal-binding-generator-impl
This patch moves YangTextTemplate into mdsal-binding-java-api-generator
and bridges it into BindingGeneratorImpl, without it having to be lug
all the extent stuff around. This slims down the runtime classes by
143kB.
JIRA: MDSAL-301
Change-Id: Ibdafa574c5a825aa7a02b9ecef5352fff78ae035
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sun, 4 Feb 2018 18:46:17 +0000 (19:46 +0100)]
Cleanup properties
Properties should not be used for versions, clean them up in parent
poms. Everything the users need is communicated via
dependency/pluginManagement.
Also ditches down-revisioned maven-depends-plugin, as that is already
provided by odlparent and removes unneeded site plugin configuration.
Change-Id: I54b507342c995c5e3589171c42e708829acc908b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 13 Feb 2018 12:19:10 +0000 (13:19 +0100)]
Fix odl-mdsal-dom-broker
It should depend on odl-yangtools-data so it does not package
yang-data-impl.
Change-Id: Ia8d852c24b6fa6e929d84265f8bd1309116f35df
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Wed, 11 Oct 2017 06:35:24 +0000 (14:35 +0800)]
Binding codec v2 - fix augmentation #5
- Since all augmentation with the same target would be
taken into one generated type, the map of type and schema
would not correct at all, just to delete it.
Change-Id: I705383ca58a9ba1e64c77dffdd4470b60d4aca73
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Thu, 24 Aug 2017 10:11:47 +0000 (18:11 +0800)]
Binding codec v2 - fix augmentation #4
- Since uses nodes were processed as-if they were direct
children of parent node, so just to find target node
(added by uses) not its original node which would result
in wrong augmentation type.
Change-Id: I8d74e368e44075eb6e273119c07578ff16a4f1dc
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Wed, 23 Aug 2017 09:19:50 +0000 (17:19 +0800)]
Binding codec v2 - fix augmentation #3
- Since multiple augments with same target were grouped as like
just one augment, all child nodes of them were resolved as methods
to the generated type, so in runtime, it should also find all these
child nodes to add to the new EffectiveAugmentSchema object as
real childs.
Change-Id: I433930be45007e545b2e2fb074af32e118aa7cd4
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Wed, 7 Feb 2018 08:55:16 +0000 (16:55 +0800)]
MDSAL-218: Binding v2 - *Builder classes for 'type union' YANG gen. code should have private constructor
- Do not affect old generated class, one should mannually rebuild to update.
Change-Id: I7682fc19e29e659589b71695403c83094b138e48
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Wed, 7 Feb 2018 08:50:57 +0000 (16:50 +0800)]
MDSAL-218: Binding v1 - *Builder classes for 'type union' YANG gen. code should have private constructor
- Do not affect old generated class, one should mannually rebuild to update.
Change-Id: Ib45f7aca1aa261b2c4bce433b139cd94b91a5066
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jaime Caamaño Ruiz [Fri, 9 Feb 2018 19:41:25 +0000 (20:41 +0100)]
Delay snapshot backed transaction ready error
Delay snapshot backed transaction ready error to 3PC canCommit.
Change-Id: Ie4004db194483dfa1528258b464df8a2f8fa573e
JIRA: CONTROLLER-1812
Signed-off-by: Jaime Caamaño Ruiz <jcaamano@suse.com>
Jaime Caamaño Ruiz [Fri, 9 Feb 2018 09:47:26 +0000 (10:47 +0100)]
Fix infinite loop on cancel transaction
This patch fixes a problem where you would run into an infinite loop
after cancelling DOMForwardedWriteTransaction following an exception
thrown by the backed transaction ready or submit methods.
Change-Id: I14bcca6727ab2f173d481b84742c4edbf7bf9dd8
JIRA: CONTROLLER-1812
Signed-off-by: Jaime Caamaño Ruiz <jcaamano@suse.com>
Robert Varga [Wed, 7 Feb 2018 15:50:05 +0000 (16:50 +0100)]
Speed up whitespace replacement
Rather than compiling a pattern, pre-compile it once and keep it
around.
Change-Id: Ibb1879d2546f731daa25e536ef45f48bde671f4f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 5 Feb 2018 01:15:48 +0000 (02:15 +0100)]
Fix a few warnings
- unneeded imports
- potentially static methods
- unneeded @SupressWarnings
Change-Id: I0c80e0a7e917ec9b71147e582df4b6f4c7a698a2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Jan 2018 18:14:12 +0000 (19:14 +0100)]
MDSAL-269: fix missing identityref union members
Due to a API consistency issue in binding specification typedefs
which point to leafref and identityref types do not get a generated
encapsulation class.
BUG-8449/MDSAL-253 has dealt with the leafref case, but has omitted
identityref case. This patch corrects the situation, providing a bit
of background and a testcase.
Change-Id: Ib4247e0690c2aaa89aef51b3986bf848ce6b8192
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Tue, 8 Aug 2017 01:26:17 +0000 (09:26 +0800)]
Binding codec v2 - fix augmentation #2
- filter out local augments by using a child node qname of
augment schema.
Change-Id: I475e399460e3b19cbc1691a8c0be10cd1a2e0298
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Tue, 8 Aug 2017 01:00:54 +0000 (09:00 +0800)]
Binding codec v2 - fix augmentation #1
- Since if target node in same module as augment, data nodes are represented as-if
their statements were inlined in target. so we should process these data nodes from
binding structs to normalized nodes.
Change-Id: Ib024517f050758cadfbd016b96cf2821bc7c689c
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Tue, 10 Oct 2017 05:28:35 +0000 (13:28 +0800)]
Binding v2 generator - fix JavaCodePrettyPrint
- Specially, such as union builder, these isn't any import,
it doesn't work well.
Change-Id: I84b2408bd2f840bdc19e3c1c39ee731369f23361
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Thu, 31 Aug 2017 07:36:22 +0000 (15:36 +0800)]
Binding codec v2 - fix get implemented interface as input of getCacheSerializer
- The class of input is the intern class xxxImpl in Builder,
it should be the interface, so we should call implementedInterface.
Change-Id: I880cb750cf418541c1f27849dec9c83b4eff8bf8
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Thu, 24 Aug 2017 07:16:21 +0000 (15:16 +0800)]
Binding codec v2 - fix collect all properties from generated type
- Since uses nodes were processed as-if they were direct children
of parent node, so it's no need and not uncorrect to get properties
from implements which would overwrite the return type for the same
getter method.
Change-Id: I68b565d71ddf17cc13b98e29450aa144f0733adc
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Robert Varga [Tue, 30 Jan 2018 15:58:54 +0000 (16:58 +0100)]
MDSAL-206: improve DOMEvent instant resolution
Rather than using a Date, use an java.time.Instant, which is more
appropriate.
Change-Id: I45513f12f83065d9fc7016e357c53332d0070d6e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 1 Feb 2018 16:37:20 +0000 (17:37 +0100)]
Lookup leaf key methods in parents
Union is a valid key type and it can actually come from a grouping,
in which case it gets generated as an inner type. If that happens
the typedef is not populated into the usual places, leading to
a failure to find method return type -- leading to a missing key
member.
This is a problem similar to YANGTOOLS-424, so let's use the same
ModuleContext approach taken then.
JIRA: MDSAL-161
Change-Id: Id342701d603bdd2b9b78ba3295c8eae60f253429
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 29 Jan 2018 13:18:05 +0000 (14:18 +0100)]
MDSAL-298: properly handle unkeyed lists
Unkeyed lists are not representable in binding, which means they
cannot be reported as modified children, either. This has implications
for any data change which contains unrepresentable fields as child
modifications.
Previously we would report SUBTREE_MODIFIED for the container node,
but would fail to report any children, which is obviously wrong, as the
user is left guessing as to what exactly happened.
This patch modifies LazyDataObjectModification to report a WRITE event
if modifications to unrepresentable children are found in SUBTREE_MODIFIED
case. Since this is a potentially expensive operation, we cache a child
addressability summary in BindingCodecTreeNode, so that we go to this
slow path only when needed.
We also expose BindingStructuralType enumeration, so controller's
sal-binding-broker can reuse the implementation rather than having its
own copy.
Change-Id: I6642166cd262d0dddb1b2ed6d73a20785d0efff6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 29 Jan 2018 16:20:14 +0000 (17:20 +0100)]
Fix BindingCodecTreeNode.getSchema() a bit
Using Object as the return type of getSchema() is confusing, as it
does not provide a proper anchor point for users. While subclasses
provide proper access point, further restricting the domain to
DocumentedNode.WithStatus provides for a better experience.
Change-Id: Iebd198b695f5271ebadd5315c1ec22b8488c227c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Jan 2018 21:26:29 +0000 (22:26 +0100)]
Cache group replacement pattern
Rather than compiling it over and over again, compile it once.
Change-Id: Id8699f42c081b06197b769f22539e918457b5298
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 30 Jan 2018 19:00:36 +0000 (20:00 +0100)]
Migrate to commons-text StringEscapeUtils
The utilities from commons-lang3 are deprecated, move on to their
replacement.
Change-Id: I7ed6f163d8414ef6db27876101ceaa43218ead37
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 29 Jan 2018 14:39:16 +0000 (15:39 +0100)]
Fix YangTemplate key statement generation
key statement should be terminated by a semicolon and it should be
emitted only if the key definition is really present.
Change-Id: I499b697be586d5cf92149a14a8ca763ba2272816
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 29 Jan 2018 13:17:30 +0000 (14:17 +0100)]
Add DataTreeIdentifier.toString()
Adding a toString() method aids debugging and is generally nice.
Change-Id: I70944c85d6507e47aec282a018e7e101c684de62
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 29 Jan 2018 09:07:24 +0000 (10:07 +0100)]
Lower DataObjectCodecContext method visibility
This class is not leaked outside of the package, lower visibility
of its methods.
Change-Id: I486bf3d407eabb99f5ee5cafd08d4e7cb76d2c50
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 26 Jan 2018 12:24:54 +0000 (13:24 +0100)]
MDSAL-302: make sure uses+augment works in RPCs
Add missing callouts to generate uses augments for RPC input/output
nodes. This complements processing for data nodes and notifications.
Change-Id: I4f0d9fddce1e019c57b9a45874a45b22ffe6a15f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 24 Jan 2018 13:58:44 +0000 (14:58 +0100)]
Eliminate odl-mdsal-dom-schema-service-osgi
This is osgi-specific bundle and since karaf is all about OSGi,
we should not pretend odl-mdsal-dom-broker feature can work without
it. Eliminate the feature, bundling the artifact inside
odl-mdsal-dom-broker instead.
Change-Id: I8436d331ff391c72593bfb03aa0aeb422dee4c49
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Tue, 10 Oct 2017 00:44:59 +0000 (08:44 +0800)]
Binding v2 codec - fix KeyedListNodeCodecContext
- change geyKey to getIdentifier for using
concepts.Identifiable
Change-Id: I8e903186c6d7962091ce4d45da3f73c0e9e1cc27
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Tue, 22 Aug 2017 07:20:57 +0000 (15:20 +0800)]
Binding codec v2 - fix startMapEntryNode
- Cast return type of treeIdentifier() to be
IdentifiableItem manually since it was erased.
Change-Id: I4daef75919d38ca64c5a37defacc58653195496f
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Tue, 22 Aug 2017 07:11:44 +0000 (15:11 +0800)]
Binding codec v2 - fix startMapNode/startOrderedMapNode parameter
- It should be class type for these two methods
Change-Id: I0be5296c835b3948392382e8fe4200e8427ca2f4
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Tue, 22 Aug 2017 01:48:14 +0000 (09:48 +0800)]
Binding generator v2 - fix IdentifiableItem and Item
- Support generated interface of List implements
kind of TreeChildNode<ParentClass,IdentifiableItem<Class,KeyClass>>
- Other interface implements
kind of TreeChildNode<ParentClass,Item<Class>>
- checkstyle
Change-Id: Ia0c5805e20c1ecb75a507aeaa02ed165b14b4986
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Robert Varga [Thu, 18 Jan 2018 19:38:45 +0000 (20:38 +0100)]
Use ranges to cross-reference yangtools features
This allows run-time to work with compatible versions of yangtools,
even when a new version is introduced after compilation. Also fixes
an odl-lmax-3 range omission and removes unneeded feature dependencies
when they are brought in transitively.
Change-Id: I10753809286b4df71abd62526d5b5ca1effdf2ec
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 17 Jan 2018 19:00:33 +0000 (20:00 +0100)]
Bump yangtools to 2.0.1
Pick up latest fixes in yangtools, notably API contract violations
in SchemaContext.{get,find}Modules().
Change-Id: I34b803a60037ba2db1f1ecabc699d506b32de460
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 17 Jan 2018 15:58:59 +0000 (16:58 +0100)]
Fix type ordering assumptions
There are two types in this test with the same name. Do not assume
they will be reported in a particular order, but rather pick the
correct one for testing.
Change-Id: I0593b6505d7aec985504e92f8487b562c96c2a7d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 11 Jan 2018 20:48:02 +0000 (21:48 +0100)]
Fix wrong ietf-type-util version
We inadvertently dropped the -SNAPSHOT suffix, which is not correct
and hence we are failing to deploy correctly.
Change-Id: I87280b7c863946e9fadcec1e33f933dfecc05116
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Stephen Kitt [Thu, 21 Dec 2017 09:18:43 +0000 (10:18 +0100)]
Use version ranges for odlparent features
odlparent allows the use of ranged imports, take advantage of that.
Change-Id: I64e2968ab50e556b190dddf5824891ec50acaa14
Signed-off-by: Stephen Kitt <skitt@redhat.com>
Robert Varga [Wed, 11 Oct 2017 15:03:32 +0000 (17:03 +0200)]
Adjust to yangtools-2.0.0 changes
Most notable adjustments:
- type empty requires Empty
- Date -> Revision, with the possibility of being absent
- This changes behaviour for revisionless modules, these are now
generated as '.norev' rather than '.rev700101'
- Length constraint update to match
- QName requires namespace to be non-null
- SchemaContext.getModule() et al., which also improves performance
- binding tests are updated to eliminate useless reflection
- bump twirl-api to 1.3.13
- bump scala-maven-plugin to 3.3.1
- bump twirl-maven-plugin to 1.1.0
Change-Id: Ie35090cc0f60a2411399e5b2d3fe59246bbfbdba
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 11 Oct 2017 14:54:31 +0000 (16:54 +0200)]
Bump yangtools dependency to 2.0.0
This patch adopts odlparent-3.0.2 and yangtools-2.0.0. As such it is
not expected to pass compilation due to the amount of breaking changes
in yangtools. It is separated out to allow review of changes at the
build system level.
Adjustments include:
- feature reference updates, so we pull in correct yangtools features
- bump scala-maven-plugin to 3.3.1
- bump twirl-maven-plugin to 1.1.0
- bump twirl-api to 1.3.13
Follow-up patch adapts the codebase to the inbound changes, making
the compilation pass.
Change-Id: I21a3d55969c31b89b56c6ba637593f033b035e14
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 8 Jan 2018 17:19:45 +0000 (18:19 +0100)]
Share pre-generated non-verbose string
As it turns out, xtend does not do any sort of constant folding,
hence we need to share the strings instance ourselves to get
the most speed out of quick profile.
Change-Id: I83239aa27567d2927fbed2039f28f7e17461db4e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Tue, 22 Aug 2017 02:07:49 +0000 (10:07 +0800)]
Binding generator v2 - fix list/key implements identifiable/identifier
- Support keyed list type implements
Identifiable and its key implements Identifier.
Change-Id: I0d12d2154f727a0088dc5329a4bd748edfa3e9f6
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jie Han [Mon, 9 Oct 2017 08:26:30 +0000 (16:26 +0800)]
Binding generator v2 - Add concepts.Identifiable to BindingTypes
- Use Identifiable defined in concepts without duplication.
Change-Id: Ia4fbcb481f41368d81f03aef829561d5fc4a1ce5
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Robert Varga [Wed, 15 Nov 2017 12:30:58 +0000 (13:30 +0100)]
Fix odlparent-3.0.0 checkstyle issues
This fixes issues identitifed by checkstyle in odlparent-3.0.0,
split out of the bump proper to keep the migration patch smaller.
Change-Id: Ib42dbebb0bdbcec770cb9e4daaf24fb14dccde6b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Fri, 3 Nov 2017 01:05:09 +0000 (09:05 +0800)]
MDSAL-294: Binding v1 generator - Add @CheckReturnValue on RPC methods
- Use @CheckReturnValue annotation in static code analysis
to ensure that all users of the RPC do check the Future RpcResult
for errors - even if there is no Output.
Change-Id: I7b4e5f0d7ca81db154a39325490a46bfcf8820a4
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Tom Pantelis [Wed, 25 Oct 2017 18:58:57 +0000 (14:58 -0400)]
MDSAL-107: Fix pre-existing data notification for wildcarded DTCL
This issue was fixed in CDS a while but should also be fixed for the
in-memory DOM data store.
Change-Id: Ib3e25c6164d6868f5b80680467732aed0beac093
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
Jie Han [Thu, 19 Oct 2017 05:45:02 +0000 (13:45 +0800)]
Fix checkstyle in mdsal-binding2-dom-codec
- Fix checkstyle issues and activate enforcement.
Change-Id: I9857df844aba6bee4ddc729fb8246a2d8a085ad5
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Robert Varga [Tue, 17 Oct 2017 18:17:48 +0000 (20:17 +0200)]
Fix checkstyle in mdsal-binding-dom-codec
Fix checkstyle issues and activate enforcement.
Change-Id: I5ef078ba907284d5885521971cb0391a28fa2e57
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 17 Oct 2017 16:03:40 +0000 (18:03 +0200)]
Fix checkstyle in maven-sal-api-gen-plugin
Fix violations and enable enforcement.
Change-Id: Ibc88fbe40b09a0aeff977bd1aaeed408954c201a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 17 Oct 2017 14:58:56 +0000 (16:58 +0200)]
Fix checkstyle violations in yang-binding
Fixes violations and activates enforcement.
Change-Id: Iaa11d659549fa62a35201dea77992b32aebbd998
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Tom Pantelis [Tue, 10 Jan 2017 04:27:42 +0000 (23:27 -0500)]
Add read-write transaction to the AsyncDataBroker APIs
Read-write transactions were ommitted from the AsyncDataBroker
and related APIs. It is unclear as to why but the DOMStore API
defines read-write transaction as do the equivalent controller
APIs so clients will expect it when converting to the mdsal APIs.
Plus we want to convert the CDS to the mdsal APIs and deprecate the
controller APIs but we cannot provide an adapter between the two
without read-write transactions.
Change-Id: I46cd1783931044a34039f4a2100c50b645446bf2
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
David Suarez [Thu, 5 Oct 2017 17:52:43 +0000 (19:52 +0200)]
Fix some checkstyle and other issues
- Make some classes final
- Remove redundant "extends Object"
- Remove types that can be inferred by the compiler
- Make some variables final
- Avoid potential NPEs
Change-Id: I6ab30e3015e00f8e7e1df3e33b6aae0cf57dbede
Signed-off-by: David Suarez <david.suarez.fuentes@gmail.com>
Tom Pantelis [Wed, 11 Jan 2017 06:31:50 +0000 (01:31 -0500)]
Add ClusteredDOMDataTreeChangeListener interface
Change-Id: Ifa302db331ae7518c5327f7616171390b0e64eed
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
Robert Varga [Thu, 12 Oct 2017 11:34:58 +0000 (13:34 +0200)]
Use mdsal's MappingCheckedFuture
yangtools is getting rid of this class, use our internal copy
of it.
Change-Id: I8522672bdc6c8a93d55336415a02b2c32ea0fd44
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 11 Oct 2017 17:14:08 +0000 (19:14 +0200)]
Fix odlparent references
These have been left behind in the version bump, fix them up.
Change-Id: Ie3df04a7650fe572a3b223c143fe309c07dc5448
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 10 Oct 2017 13:36:55 +0000 (15:36 +0200)]
BUG-9043: import MappingCheckedFuture from yangtools
This patch moves MappingCheckedFuture from yangtools to mdsal,
where it is required to retain API compatibility, as we cannot
get rid of CheckedFuture just yet.
Change-Id: I33096b80de2d355181aafdfc69b38394f6fcfe80
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 9 Oct 2017 17:03:46 +0000 (19:03 +0200)]
Fix wrong yangtools import
We should be importing 1.2.0, not its snapshot.
Change-Id: I9910ade87e596a57f24b531c657fb2aa7a9e74f3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 21 Sep 2017 23:00:04 +0000 (01:00 +0200)]
BUG-9145: rework singleton service group state tracking
The beef of the issue here is that there are multiple codepaths
which end up sharing state transitions -- hence we could erroneously
end up waiting for entity release, when if fact we have already
lost it.
Rather than going the explicit FSM route, which would require quite
a few more states, rework state tracking such that each event is
evaluated against current state. This has the nice feature of making
duplicate events idempotent, as the code is all about reconciling
current and intended state.
This also disentangles the loss of ownership codepaths, which means
we can optimize behavior when partitions are involved -- specifically
jeopardy service entity ownership does not result in service shutdown,
because service liveness is actually guaranteed by cleanup entity.
Hence we can keep the services and the cleanup entity intact, leading
to less churn during partitions.
Should the cleanup entity report jeopardy, we need to bring the services
down, but we do not need to unregister the cleanup entity -- if the
partition is healed, we can start services again without the delay
incurred by EOS. If we end up losing partition healing, cleanup entity
ownership will be taken from us, at which point we also unregister.
Change-Id: Id5c8a97722b9a21114135554d92c17898dd0150e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Thu, 28 Sep 2017 06:07:42 +0000 (14:07 +0800)]
Binding v2 Generator - fix dependency yang-ext of mdsal-binding2-test-model
- It should depend on yang-ext in binding2 model for
using generated codes v2.
Change-Id: I3c5b597285b3ca67c376184b2b080745776c2d94
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Jakub Toth [Thu, 24 Aug 2017 10:46:16 +0000 (12:46 +0200)]
Bug 8326 - Split out OsgiBundleScanningSchemaService
* move osgi part of mdsal-dom broker to new module
mdsal-dom-schema-service-osgi (with unit tests)
Change-Id: I2eb2e4f96f50456f84982e5de6d439b0306bcc0f
Signed-off-by: Jakub Toth <jakub.toth@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Jie Han [Thu, 17 Aug 2017 06:03:52 +0000 (14:03 +0800)]
Binding codec v2 - cast case type to get serializer
- it should be type of generated interface to get serializer for case,
not the class type in builder.
Change-Id: Ibe2fdfaf2db7e95027809183c29011fb62b56058
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Vratko Polak [Thu, 5 Oct 2017 11:29:37 +0000 (13:29 +0200)]
Add yang-ext to model-binding2
- add yang-ext to resolve denpendency of odl-mdsal-binding2-base
Change-Id: Ie02a799b795a2b38009721339f2ff831694f5b51
Signed-off-by: Jie Han <han.jie@zte.com.cn>
Signed-off-by: Vratko Polak <vrpolak@cisco.com>