<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:54:37 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-901] Use SchemaContext to guide NormalizedNode traversal of choices</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-901</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;LeafRefValidation currently includes the following ugly piece:&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;
&#160;&#160;&#160; &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; void processChildNode(&lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; Set&amp;lt;&lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;&amp;gt; values, &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; DataContainerNode&amp;lt;?&amp;gt; parent,
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; PathArgument arg, &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; List&amp;lt;QNamePredicate&amp;gt; nodePredicates, &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; Deque&amp;lt;QNameWithPredicate&amp;gt; path,
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; YangInstanceIdentifier current) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; Optional&amp;lt;DataContainerChild&amp;lt;?, ?&amp;gt;&amp;gt; child = parent.getChild(arg);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!child.isPresent()) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; DataContainerChild&amp;lt;?, ?&amp;gt; mixin : parent.getValue()) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (mixin &lt;span class=&quot;code-keyword&quot;&gt;instanceof&lt;/span&gt; AugmentationNode || mixin &lt;span class=&quot;code-keyword&quot;&gt;instanceof&lt;/span&gt; ChoiceNode) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addValues(values, mixin, nodePredicates, path, current);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addNextValues(values, child.get(), nodePredicates, path, current);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
&#160;&#160;&#160; }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;which is fishing through {Augmentation,Choice}Nodes &#8211; which is inefficient. Since we have a SchemaContext near, we should be able to capture the guidance to cross ChoiceNodes directly, i.e. by having a QName-&amp;gt;List&amp;lt;PathArgument&amp;gt; lookup.&lt;/p&gt;

&lt;p&gt;One way of achieving this would be to modify QNameWithPredicate to actually be a PathArgument and have LeafRefPath follow the YangInstanceIdentifier structure.&lt;/p&gt;</description>
                <environment></environment>
        <key id="30715">YANGTOOLS-901</key>
            <summary>Use SchemaContext to guide NormalizedNode traversal of choices</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="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>Mon, 10 Sep 2018 15:49:44 +0000</created>
                <updated>Thu, 21 Dec 2023 08:54:42 +0000</updated>
                                                            <fixVersion>14.0.0</fixVersion>
                                    <component>data-impl</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                        <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|i03ilz:</customfieldvalue>

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