<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:10:30 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[MDSAL-673] Add nonnullFoo() getters for non-semantic objects</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-673</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;It is rather common to traverse a container hierarchy in search of a specific leaf, for example:&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;container foo {
  container bar {
    container baz {
      leaf xyzzy {
        type string;
      }
    }
  }
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;we would want to do:&lt;br/&gt;
&#160;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
Foo foo;
&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; xyzzy = foo.getBar().getBaz().getXyzzy()
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;but this breaks down on nullness of objects, i.e. if xyxxy does not exist, the datastore can remove it along the entire&#160; container hierarchy.&lt;/p&gt;

&lt;p&gt;We already deal with nullness for the case of YANG lists, by returning an empty list via nonnullFoo(), hence we should be able to generate:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt; Foo {
  &lt;span class=&quot;code-comment&quot;&gt;// Normal getter
&lt;/span&gt;  @Nullable Bar getBar();
  &lt;span class=&quot;code-comment&quot;&gt;// Defers to getBar(), or returns a (shared) empty instance
&lt;/span&gt;  @NonNull Bar nonnullBar();
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note BarBuilder.EMPTY_INSTANCE should probably not be visible outside the package and may need to be hidden behind a static method for proper laziness of implementation.&lt;/p&gt;

&lt;p&gt;Also this should not happen for containers with a &quot;presence&quot; statement.&lt;/p&gt;

&lt;p&gt;With this, we can do:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
Foo foo;
&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; xyzzy = foo.nonnullBar().nonnullBaz().getXyzzy()
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="34120">MDSAL-673</key>
            <summary>Add nonnullFoo() getters for non-semantic objects</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="opanasiuk">Oleksandr Panasiuk</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                            <label>pt</label>
                    </labels>
                <created>Wed, 23 Jun 2021 20:04:48 +0000</created>
                <updated>Wed, 2 Nov 2022 19:20:45 +0000</updated>
                            <resolved>Wed, 2 Nov 2022 19:20:45 +0000</resolved>
                                                    <fixVersion>11.0.0</fixVersion>
                                    <component>Binding codegen</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                    <issuelinks>
                            <issuelinktype id="10300">
                    <name>Issue split</name>
                                                                <inwardlinks description="split from">
                                        <issuelink>
            <issuekey id="33434">MDSAL-602</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03yf3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>