<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:54:58 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>[YANGTOOLS-1022] Rework NormalizedNode class hierarchy and design</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1022</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;NormalizedNode interface has a number of deficiencies, which make it non-trivial to use and implement.&lt;/p&gt;

&lt;p&gt;Most notably:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;it uses generics to capture identifier type and value type&lt;/li&gt;
	&lt;li&gt;it generalizes that all NormalizedNodes have value, which would seem to indicate it can be used for comparison, but&lt;/li&gt;
	&lt;li&gt;NormalizedNodeContainer.getValue() codifies it to a Collection, which wrecks equality contract, and&lt;/li&gt;
	&lt;li&gt;That contract is not really accurate, as all implementations really want to say Set, but they are also implementing the contract through a Map, which does not have a valueSet() and entrySet() actually is not useful&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;While we cannot get rid of the generic type for identifier type (as it leads to Identifiable&amp;lt;T&amp;gt;), we should eliminate the notion that a raw normalized node has a value and reserve that to ValueNodes only. Furthermore the notion of children being present needs to be abstracted towards the end specializations, so they can provide an accurate view based on semantics.&lt;/p&gt;

&lt;p&gt;For NormalizedNodeContainer this amounts to replicating java.util.Map contract, with the inherent understanding that children are unique based on their identifier &#8211; essentially the map there interpret NormalizedNode as an Entry&amp;lt;node.getIdentifier(), node&amp;gt; when adding them. Note that NormalizedNode cannot be an Entry, as it inherently would violate the Entry.hashCode() contract.&lt;/p&gt;</description>
                <environment></environment>
        <key id="31934">YANGTOOLS-1022</key>
            <summary>Rework NormalizedNode class hierarchy and design</summary>
                <type id="10000" iconUrl="https://jira.opendaylight.org/images/icons/issuetypes/epic.svg">Epic</type>
                                            <priority id="2" iconUrl="https://jira.opendaylight.org/images/icons/priorities/critical.svg">High</priority>
                        <status id="10003" iconUrl="https://jira.opendaylight.org/images/icons/status_generic.gif" description="">Confirmed</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                    </labels>
                <created>Fri, 30 Aug 2019 10:44:48 +0000</created>
                <updated>Thu, 23 Nov 2023 15:49:24 +0000</updated>
                                                            <fixVersion>14.0.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="68757" author="rovarga" created="Fri, 13 Nov 2020 22:17:33 +0000"  >&lt;p&gt;There is a further wrinkle of not being able to identify ItemOrdering &#8211; which is explicit incompatible contract. We effectively need to split MapNode into MapNode&amp;lt;O&amp;gt; and UnorderedMapNode.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="36219">YANGTOOLS-1455</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_10004" key="com.pyxis.greenhopper.jira:gh-epic-label">
                        <customfieldname>Epic Name</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Redesign NormalizedNode</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03qqk:</customfieldvalue>

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