<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:56:14 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-1468] JsonParserStream cannot read augmentations</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1468</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;JsonParserStream is not able to read augmented container data.&lt;/p&gt;

&lt;p&gt;Here is the log:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;java.lang.IllegalStateException: Schema node with name container-aug was not found under (test-ns-aug)container-aug.&#160; &#160; at org.opendaylight.yangtools.yang.data.codec.gson/org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.resolveNamespace(JsonParserStream.java:410)
&#160; &#160; at org.opendaylight.yangtools.yang.data.codec.gson/org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.read(JsonParserStream.java:308)
&#160; &#160; at org.opendaylight.yangtools.yang.data.codec.gson/org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.parse(JsonParserStream.java:193)
&#160; &#160; at org.opendaylight.yangtools.yang.data.codec.gson/org.opendaylight.yangtools.yang.data.codec.gson.YT1468JsonTest.fromJSON(YT1468JsonTest.java:70)
&#160; &#160; at org.opendaylight.yangtools.yang.data.codec.gson/org.opendaylight.yangtools.yang.data.codec.gson.YT1468JsonTest.testReadAugmentedContainer(YT1468JsonTest.java:59)
&#160; &#160; at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
&#160; &#160; at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
&#160; &#160; at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
&#160; &#160; at java.base/java.lang.reflect.Method.invoke(Method.java:568)
&#160; &#160; at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
&#160; &#160; at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
&#160; &#160; at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
&#160; &#160; at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
&#160; &#160; at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
&#160; &#160; at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
&#160; &#160; at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
&#160; &#160; at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
&#160; &#160; at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
&#160; &#160; at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
&#160; &#160; at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
&#160; &#160; at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
&#160; &#160; at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
&#160; &#160; at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
&#160; &#160; at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
&#160; &#160; at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
&#160; &#160; at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
&#160; &#160; at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
&#160; &#160; at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
&#160; &#160; at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
&#160; &#160; at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
&#160; &#160; at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
&#160; &#160; at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
&#160; &#160; at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Please see a reproducer in &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/yangtools/+/103307&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/yangtools/+/103307&lt;/a&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="36325">YANGTOOLS-1468</key>
            <summary>JsonParserStream cannot read augmentations</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="10001">Won&apos;t Do</resolution>
                                        <assignee username="rkashapov">Ruslan Kashapov</assignee>
                                    <reporter username="ivanhrasko">Ivan Hrasko</reporter>
                        <labels>
                            <label>pt</label>
                    </labels>
                <created>Tue, 22 Nov 2022 13:38:16 +0000</created>
                <updated>Wed, 15 Mar 2023 09:27:03 +0000</updated>
                            <resolved>Wed, 15 Mar 2023 09:18:44 +0000</resolved>
                                                                    <component>codecs</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="71961" author="JIRAUSER13216" created="Fri, 3 Feb 2023 09:49:57 +0000"  >&lt;p&gt;there is no issues parsing augmented nodes, see &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/yangtools/+/104237&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/yangtools/+/104237&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so called &lt;ins&gt;parentNode&lt;/ins&gt; parameter used to define non-root element to parse has a different meanings for XML and JSON parsers&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;in XML parser &lt;ins&gt;parentNode&lt;/ins&gt; points to &lt;b&gt;root xml element&lt;/b&gt;, so returned node identifier matches it &lt;b&gt;exactly&lt;/b&gt; the one of &lt;ins&gt;parentNode&lt;/ins&gt;&lt;/li&gt;
	&lt;li&gt;in JSON parser &lt;ins&gt;parentNode&lt;/ins&gt; indicates parsing &lt;b&gt;context&lt;/b&gt; (belongings of top level parenthesis), and returned node is a recognized &lt;b&gt;direct child&lt;/b&gt; of &lt;ins&gt;parentNode&lt;/ins&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;this difference is historical and assumes significant code base which relies on behavior explained above&lt;/p&gt;

&lt;p&gt;for augmentation case the augmentation itself became a standalone (structural, non-data) node within hierarchy of parsed node structure:&lt;br/&gt;
&lt;tt&gt;container-root &amp;gt; container-lvl1 &amp;gt; augmentation &amp;gt; container-aug &amp;gt; leaf-aug&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;according to behavior explained above same&lt;/p&gt;

&lt;p&gt;&lt;ins&gt;parentNode&lt;/ins&gt; -&amp;gt; &lt;b&gt;container-aug&lt;/b&gt; means (to parse and return) &lt;b&gt;container-aug&lt;/b&gt; for XML parser and &lt;b&gt;leaf-aug&lt;/b&gt; for JSON parser&lt;br/&gt;
&lt;ins&gt;parentNode&lt;/ins&gt; -&amp;gt; &lt;b&gt;container-lvl1&lt;/b&gt; means &lt;b&gt;container-lvl1&lt;/b&gt; for XML parser and &lt;b&gt;augmentation&lt;/b&gt; node for JSON parser&#160;&lt;/p&gt;

&lt;p&gt;due to &lt;ins&gt;parentNode&lt;/ins&gt; cannot be pointed to &lt;b&gt;augmentation&lt;/b&gt; node JSON parser cannot return &lt;b&gt;container-aug&lt;/b&gt; as direct child&lt;/p&gt;

&lt;p&gt;due to JSON parser cannot define exact node to parse, it&apos;s not reasonable to expect exact node to be returned by parser.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;next action (to confirm)&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;close as not a bug&lt;/li&gt;
	&lt;li&gt;normalize behavior: same meaning of parentNode for both parsers (significant effort and impact expected)&lt;/li&gt;
	&lt;li&gt;add a workaround to never return augmentation node as top level node on parsing (seems unjustified)&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="71962" author="ivanhrasko" created="Fri, 3 Feb 2023 12:46:45 +0000"  >&lt;p&gt;Original tests in &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/yangtools/+/103307&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/yangtools/+/103307&lt;/a&gt; contain additional check that the returned data is a container.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Even if you use parent node as parameter in JSON you read augmentation - but we would like to get container.&lt;/li&gt;
	&lt;li&gt;Different node/parent node parameters should be documented.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="71963" author="ivanhrasko" created="Fri, 3 Feb 2023 12:47:48 +0000"  >&lt;p&gt;In addition, it looks like a new bug is there - we cannot read leaf value from XML: &lt;a href=&quot;https://git.opendaylight.org/gerrit/c/yangtools/+/104237/1..2&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://git.opendaylight.org/gerrit/c/yangtools/+/104237/1..2&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="72054" author="ivanhrasko" created="Wed, 15 Mar 2023 09:20:10 +0000"  >&lt;p&gt;The problems will be addressed in &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-1415&quot; title=&quot;Deal with leading YangInstanceIdentifier fragment&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-1415&quot;&gt;YANGTOOLS-1415&lt;/a&gt;.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="36307">NETCONF-911</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </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|i043hr:</customfieldvalue>

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