<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:54:48 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-961] Integrate NormalizedNodes with RFC7952 metadata/attributes</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-961</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Current integration of NormalizedNodes and XML attributes is tacky in multiple ways:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;ImmutableNormalizedNodeStreamWriter completely ignores attributes&lt;/li&gt;
	&lt;li&gt;attribute streaming is bolted on as a separate NormalizedNodeStreamWriter interface&lt;/li&gt;
	&lt;li&gt;attributes are Map&amp;lt;QName,String&amp;gt; pairs, which means they are not normalized&lt;/li&gt;
	&lt;li&gt;the integration completely ignores RFC7952 guidance&lt;/li&gt;
	&lt;li&gt;attributes do not contribute to hashCode/equals&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The only user of attributes is NETCONF, which uses yang.data.api.ModifyAction, a manifestation of RFC6241 Section 7.2 &#8211; which should be easy to update.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="31471">YANGTOOLS-961</key>
            <summary>Integrate NormalizedNodes with RFC7952 metadata/attributes</summary>
                <type id="10101" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10318&amp;avatarType=issuetype">Task</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="rovarga">Robert Varga</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                    </labels>
                <created>Thu, 28 Feb 2019 10:16:46 +0000</created>
                <updated>Thu, 4 Apr 2019 17:59:45 +0000</updated>
                            <resolved>Thu, 4 Apr 2019 17:59:45 +0000</resolved>
                                                    <fixVersion>3.0.0</fixVersion>
                                    <component>data-impl</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="66501" author="rovarga" created="Thu, 28 Feb 2019 11:16:14 +0000"  >&lt;p&gt;RFC7952 defines metadata annotations as a separate entity which semantically attaches to some data in a way which is compatible with XML attributes. Annotations are defined to not affect the data itself, but provide additional information (such as originating store in ietf-origin.yang) and can potentially be unrelated to the data itself (example-last-modified).&lt;/p&gt;

&lt;p&gt;When we consider how this would play out in case of DataTree interactions, it is obvious that attributes are &lt;b&gt;not&lt;/b&gt; part of NormalizedNode structure, but rather are a separate metadata tree whose layout mirrors NormalizedNodes. This means that a DataTree instance would maintain it separately, perhaps exposing an interface which would allow querying the metadata and data tree in unison or separately.&lt;/p&gt;

&lt;p&gt;We therefore need to decouple yang.data.api.AttributesContainer from NormalizedNode implementations and reshape it in terms of a TreeNode structure &#8211; MetadataTree (or somesuch). This has the benefit of allowing the lifecycle to be disconnected, and thus the same NormalizedNode structure being attached to different MetadataTree.&lt;/p&gt;

&lt;p&gt;In terms of NormalizedNodeStreamWriter and its events, though, the two trees should be fused, so that metadata in concert with data &#8211; i.e. event sources would walk both trees at the same time, emitting metadata content before emitting data content (to match XML semantics) and receivers would either directly emit it (XML, JSON container), cache-and-emit (JSON leaf), place it it a separate structure (ImmutableNormalizedNodeStreamWriter with metadata) or discard it (ImmutableNormalizedNodeStreamWriter with plain NormalizedNode result).&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="31468">YANGTOOLS-960</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="30241">MDSAL-357</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="22789">YANGTOOLS-369</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|i03muf:</customfieldvalue>

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