Add nonnullFoo() getters for non-semantic objects 10/98210/92
authorIvan Hrasko <ivan.hrasko@pantheon.tech>
Thu, 4 Nov 2021 14:10:26 +0000 (15:10 +0100)
committerRobert Varga <nite@hq.sk>
Wed, 2 Nov 2022 19:20:33 +0000 (19:20 +0000)
commite129fc7e9ef9b0074e4b26c2cfd6f6f2a394b13e
tree753edf566ba0954c1fe29894f4a51ef5ad8dc932
parentd0bd732a9218806467b6c9f6652acd9ea2468c26
Add nonnullFoo() getters for non-semantic objects

Add non-null getters for containers without presence statement. They
return a lazy-initialized containers' empty instances in case the
container is null.

Non-null getters are implemented in Builder's inner implementation
of the container's parent.

Container's empty instance is located in container's builder class
and is hidden behind a static method.

In the binding codec part a nonnull method is generated using usual
lazy proxy backed by an empty ContainerNode.

JIRA: MDSAL-673
Change-Id: I3a5a346b32b89e7c28cad31536593824dee3c232
Signed-off-by: Ivan Hrasko <ivan.hrasko@pantheon.tech>
Signed-off-by: Samuel Schneider <samuel.schneider@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
20 files changed:
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CodecDataObject.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CodecDataObjectGenerator.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ContainerNodeCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/NonPresenceContainerNodeCodecContext.java [new file with mode: 0644]
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/PropertyInfo.java [new file with mode: 0644]
binding/mdsal-binding-dom-codec/src/test/java/org/opendaylight/mdsal/binding/dom/codec/impl/Mdsal673Test.java [new file with mode: 0644]
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/ContainerGenerator.java
binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenEnumResolvingTest.java
binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesTest.java
binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UsesTest.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderImplTemplate.xtend
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/GeneratorUtil.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/InterfaceTemplate.xtend
binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/CompilationTest.java
binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/PresenceContainerTest.java [new file with mode: 0644]
binding/mdsal-binding-java-api-generator/src/test/resources/compilation/containers-gen/test.yang [new file with mode: 0644]
binding/mdsal-binding-java-api-generator/src/test/resources/presence-container.yang [new file with mode: 0644]