<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:10:47 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-733] Change &apos;type identityref&apos; Binding representation to normal objects</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-733</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;For &apos;identity&apos; statements we currently generate a plain interface:&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;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt; Foo
 &#160;&#160;&#160;&lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt;
 &#160;&#160;&#160;BaseIdentity
{
 &#160;&#160;&#160;&lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; @NonNull QName QNAME = $YangModuleInfoImpl.qnameOf(&lt;span class=&quot;code-quote&quot;&gt;&quot;foo&quot;&lt;/span&gt;);

}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;without any instantiation. We then use these classes as values wherever we have an identityref. This leads to a rather not nice user experience, where users spell out Foo.class. Furthermore it is also a source of issues, as Class objects require different handling in Java source (see &lt;a href=&quot;https://jira.opendaylight.org/browse/MDSAL-732&quot; title=&quot;Binding generator generates uncompilable code for leafref chain with identityref at the end&quot; class=&quot;issue-link&quot; data-issue-key=&quot;MDSAL-732&quot;&gt;&lt;del&gt;MDSAL-732&lt;/del&gt;&lt;/a&gt;) as well as runtime &#8211; instead of a plain Class.isInstance() checks an additional Class.isAssignableFrom() to ascertain type safety.&lt;/p&gt;

&lt;p&gt;Update the design so that we generate a Foo.VALUE field, which implements the generated interface and also properly expose implementedInterface():&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;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt; Foo
 &#160;&#160;&#160;&lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt;
 &#160;&#160;&#160;BaseIdentity
{
    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; @NonNull QName QNAME = $YangModuleInfoImpl.qnameOf(&lt;span class=&quot;code-quote&quot;&gt;&quot;foo&quot;&lt;/span&gt;);
    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; @NonNull Foo VALUE = &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; Foo() {
        @Override
        &lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;&amp;lt;Foo&amp;gt; implementedInterface() {
            &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; Foo.class;
        }
    };

    @Override
    &lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;&amp;lt;? &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; Foo&amp;gt; implementedInterface();
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;For identityref leaf/leaf-list members change the mapping from Class&amp;lt;? extends Foo&amp;gt; to plain Foo. Users will then use Foo.VALUE instead of Foo.class to identify instances.&lt;/p&gt;</description>
                <environment></environment>
        <key id="35337">MDSAL-733</key>
            <summary>Change &apos;type identityref&apos; Binding representation to normal objects</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="2" iconUrl="https://jira.opendaylight.org/images/icons/priorities/critical.svg">High</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="rovarga">Robert Varga</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                    </labels>
                <created>Sat, 12 Mar 2022 01:17:16 +0000</created>
                <updated>Thu, 14 Apr 2022 22:48:16 +0000</updated>
                            <resolved>Thu, 14 Apr 2022 22:48:16 +0000</resolved>
                                                    <fixVersion>10.0.0</fixVersion>
                                    <component>Binding codegen</component>
                    <component>Binding runtime</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="70806" author="rovarga" created="Thu, 14 Apr 2022 20:13:56 +0000"  >&lt;p&gt;Changing the mapping removes type erasure from the picture by introducing a reified type for each identity.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="35419">MDSAL-740</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="26871">MDSAL-49</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="35431">MDSAL-741</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="35336">MDSAL-732</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|i041sf:</customfieldvalue>

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