<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:55:03 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-1050] Leafref resolution breaks down on leafref involving deref()</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1050</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;The following model:&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;
module opendaylight-leafref-deref {
  yang-version 1.1;
  namespace &lt;span class=&quot;code-quote&quot;&gt;&quot;urn:opendaylight:leafref:deref&quot;&lt;/span&gt;;
  prefix test;

  identity target-base;

  typedef target-type {
    type identityref {
      base target-base;
    }
  }

  grouping grp {
    leaf id {
      type string;
    }
    leaf type {
      type target-type;
    }

    list secondary {
      key &lt;span class=&quot;code-quote&quot;&gt;&quot;id type&quot;&lt;/span&gt;;
      leaf id {
        type leafref {
          path &lt;span class=&quot;code-quote&quot;&gt;&quot;/grp-uses/id&quot;&lt;/span&gt;;
        }
      }
      leaf type {
        type leafref {
          path &lt;span class=&quot;code-quote&quot;&gt;&quot;deref(../id)/../type&quot;&lt;/span&gt;;
        }
      }
    }
  }

  list grp-uses {
    uses grp;
    key &lt;span class=&quot;code-quote&quot;&gt;&quot;id type&quot;&lt;/span&gt;;
  }
}

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;causes a StackOverflowError:&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;
Exception in thread &lt;span class=&quot;code-quote&quot;&gt;&quot;main&quot;&lt;/span&gt; java.lang.StackOverflowError
        at com.google.common.base.CharMatcher$BitSetMatcher.matches(CharMatcher.java:997)
        at org.opendaylight.yangtools.yang.common.AbstractQName.checkLocalName(AbstractQName.java:69)
        at org.opendaylight.yangtools.yang.common.QName.create(QName.java:116)
        at org.opendaylight.yangtools.yang.common.QName.create(QName.java:142)
        at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.stringPathPartToQName(SchemaContextUtil.java:548)
        at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.lambda$resolveRelativeXPath$2(SchemaContextUtil.java:615)
        at com.google.common.collect.Iterators$6.transform(Iterators.java:783)
        at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
        at com.google.common.collect.Iterators$ConcatenatedIterator.next(Iterators.java:1361)
        at com.google.common.collect.Iterables$6$1.next(Iterables.java:882)
        at com.google.common.collect.Iterables$6$1.next(Iterables.java:882)
        at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findNodeIn(SchemaContextUtil.java:364)
        at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findNodeIn(SchemaContextUtil.java:375)
        at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findNodeInModule(SchemaContextUtil.java:333)
        at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findNodeInSchemaContext(SchemaContextUtil.java:241)
        at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNodeForRelativeXPath(SchemaContextUtil.java:210)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.provideTypeForLeafref(AbstractTypeProvider.java:522)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForLeafrefOrIdentityRef(AbstractTypeProvider.java:302)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:196)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:159)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.resolveTypeFromDataSchemaNode(AbstractTypeProvider.java:726)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.provideTypeForLeafref(AbstractTypeProvider.java:564)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForLeafrefOrIdentityRef(AbstractTypeProvider.java:302)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:196)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:159)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.resolveTypeFromDataSchemaNode(AbstractTypeProvider.java:726)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.provideTypeForLeafref(AbstractTypeProvider.java:564)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForLeafrefOrIdentityRef(AbstractTypeProvider.java:302)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:196)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:159)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.resolveTypeFromDataSchemaNode(AbstractTypeProvider.java:726)
        at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.provideTypeForLeafref(AbstractTypeProvider.java:564)
[...]

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="32272">YANGTOOLS-1050</key>
            <summary>Leafref resolution breaks down on leafref involving deref()</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</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>Sun, 22 Dec 2019 08:58:36 +0000</created>
                <updated>Sun, 10 Apr 2022 18:36:04 +0000</updated>
                            <resolved>Tue, 24 Dec 2019 22:44:04 +0000</resolved>
                                    <version>4.0.3</version>
                    <version>3.0.7</version>
                    <version>2.1.14</version>
                                    <fixVersion>4.0.4</fixVersion>
                    <fixVersion>3.0.8</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="67588" author="rovarga" created="Sun, 22 Dec 2019 09:40:16 +0000"  >&lt;p&gt;The leafref here is using an incompatible extension to RFC7950, i.e. the path is invalid as per RFC7950, but there is a request to add this functionality.&lt;/p&gt;</comment>
                            <comment id="67590" author="rovarga" created="Sun, 22 Dec 2019 12:58:31 +0000"  >&lt;p&gt;I think SchemaContextUtil is getting confused here and resolves &apos;/grp-uses/secondary/type&apos; to itself, rather than &apos;/grp-uses/type&apos;. Note both have the same QName, hence it may work for different naming.&lt;/p&gt;</comment>
                            <comment id="67591" author="rovarga" created="Mon, 23 Dec 2019 17:13:20 +0000"  >&lt;p&gt;Yeah, SchemaContextUtil.splitXPath() is doing the wrong thing as it does not actually dereference target leaf, just concatenates it &#8211; hence it ends up self-referencing.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="31442">MDSAL-423</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="31516">YANGTOOLS-968</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|i03qhj:</customfieldvalue>

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