<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:54:15 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-768] Unable to read root container with JsonParserStream</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-768</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;While exexuting following&lt;/p&gt;

&lt;p&gt;public static ContainerNode readJson(@Nonnull final SchemaContext schemaContext,&lt;br/&gt;
                                         @Nonnull final InputStream stream,&lt;br/&gt;
                                         @Nonnull final SchemaNode parentSchema) {&lt;br/&gt;
        final DataContainerNodeAttrBuilder&amp;lt;YangInstanceIdentifier.NodeIdentifier, ContainerNode&amp;gt; builder =&lt;br/&gt;
            Builders.containerBuilder().withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(schemaContext.getQName()));&lt;br/&gt;
        final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(builder);&lt;/p&gt;

&lt;p&gt;        try (final JsonParserStream jsonParser = JsonParserStream.create(writer, schemaContext, parentSchema)) &lt;/p&gt;
{
            final JsonReader reader = new JsonReader(new InputStreamReader(stream, Charsets.UTF_8));
            jsonParser.parse(reader);
        }
&lt;p&gt; catch (IOException e) &lt;/p&gt;
{
            LOG.warn(&quot;Unable to close json parser. Ignoring exception&quot;, e);
        }

&lt;p&gt;        return builder.build();&lt;br/&gt;
    }&lt;/p&gt;

&lt;p&gt;Where &lt;br/&gt;
schemaContext = valid schema context&lt;br/&gt;
stream(content of it) = ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:hc:test?revision=2015-01-05)simple-container, value=&lt;span class=&quot;error&quot;&gt;&amp;#91;ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:hc:test?revision=2015-01-05)simple-container-name, value=value2, attributes={}}&amp;#93;&lt;/span&gt;, attributes={}}&lt;br/&gt;
parentSchema = its root container == schemaContext&lt;/p&gt;

&lt;p&gt;Following error is showed&lt;/p&gt;

&lt;p&gt;java.lang.IllegalArgumentException: Node (urn:ietf:params:xml:ns:netconf:base:1.0)data is not a simple type&lt;/p&gt;

&lt;p&gt;	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.setValue(JsonParserStream.java:269)&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.read(JsonParserStream.java:178)&lt;br/&gt;
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.parse(JsonParserStream.java:99)&lt;br/&gt;
	at io.fd.honeycomb.translate.util.JsonUtils.readJson(JsonUtils.java:95)&lt;br/&gt;
	at io.fd.honeycomb.translate.util.JsonUtils.readJsonRoot(JsonUtils.java:83)&lt;br/&gt;
	at io.fd.honeycomb.test.tools.ContainerNodeDataProcessor.getNodeData(ContainerNodeDataProcessor.java:74)&lt;br/&gt;
	at io.fd.honeycomb.test.tools.YangDataProcessorRegistry.getNodeData(YangDataProcessorRegistry.java:61)&lt;br/&gt;
	at io.fd.honeycomb.data.init.DiffFileTemplateImpl.deserializeUpdateModification(DiffFileTemplateImpl.java:186)&lt;br/&gt;
	at io.fd.honeycomb.data.init.DiffFileTemplateImpl.stringToDataObjectUpdates(DiffFileTemplateImpl.java:110)&lt;br/&gt;
	at io.fd.honeycomb.data.init.DiffFileTemplateImplTest.testStringToDataObjectUpdates(DiffFileTemplateImplTest.java:69)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br/&gt;
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)&lt;br/&gt;
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br/&gt;
	at java.lang.reflect.Method.invoke(Method.java:498)&lt;br/&gt;
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)&lt;br/&gt;
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)&lt;br/&gt;
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)&lt;br/&gt;
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)&lt;br/&gt;
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)&lt;br/&gt;
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)&lt;br/&gt;
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)&lt;br/&gt;
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)&lt;br/&gt;
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)&lt;br/&gt;
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)&lt;br/&gt;
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)&lt;br/&gt;
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)&lt;br/&gt;
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)&lt;br/&gt;
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)&lt;br/&gt;
	at org.junit.runner.JUnitCore.run(JUnitCore.java:160)&lt;br/&gt;
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)&lt;br/&gt;
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)&lt;br/&gt;
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)&lt;br/&gt;
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)&lt;/p&gt;

&lt;p&gt;When digging to JsonParserStream code, i&apos;ve probably discovered whats is the problem&lt;/p&gt;


&lt;p&gt;public JsonParserStream parse(final JsonReader reader) {&lt;br/&gt;
...&lt;br/&gt;
// This is &lt;br/&gt;
final CompositeNodeDataWithSchema compositeNodeDataWithSchema = new CompositeNodeDataWithSchema(parentNode);&lt;br/&gt;
            read(reader, compositeNodeDataWithSchema);&lt;br/&gt;
...&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt; public void read(final JsonReader in, AbstractNodeDataWithSchema parent) throws IOException {&lt;br/&gt;
        switch (in.peek()) {&lt;br/&gt;
        case STRING:&lt;br/&gt;
        case NUMBER:&lt;br/&gt;
            setValue(parent, in.nextString());&lt;br/&gt;
            break;&lt;br/&gt;
...&lt;/p&gt;

&lt;p&gt;The problem is that first thig that setValue does is &lt;/p&gt;

&lt;p&gt;Preconditions.checkArgument(parent instanceof SimpleNodeDataWithSchema, &quot;Node %s is not a simple type&quot;,&lt;br/&gt;
                parent.getSchema().getQName());&lt;/p&gt;

&lt;p&gt;Which of course will fail becuase as shown in parse method, node is created &lt;br/&gt;
as CompositeNodeDataWithSchema.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="23188">YANGTOOLS-768</key>
            <summary>Unable to read root container with JsonParserStream</summary>
                <type id="10104" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10303&amp;avatarType=issuetype">Bug</type>
                                                <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="10003">Cannot Reproduce</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="jsrnicek@cisco.com">Jan Srnicek</reporter>
                        <labels>
                    </labels>
                <created>Wed, 29 Mar 2017 14:55:53 +0000</created>
                <updated>Sun, 10 Apr 2022 18:35:58 +0000</updated>
                            <resolved>Wed, 29 Mar 2017 15:03:23 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>0</watches>
                                                                                                                <comments>
                            <comment id="44401" author="jsrnicek@cisco.com" created="Wed, 29 Mar 2017 14:55:53 +0000"  >&lt;p&gt;Attachment full_log_json_stream_parser.txt has been added with description: Full Log&lt;/p&gt;</comment>
                            <comment id="44400" author="jsrnicek@cisco.com" created="Wed, 29 Mar 2017 15:03:23 +0000"  >&lt;p&gt;Sorry, wrong format of deserialized data&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="13077" name="full_log_json_stream_parser.txt" size="29308" author="jsrnicek@cisco.com" created="Wed, 29 Mar 2017 14:55:53 +0000"/>
                    </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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>8101</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=8101]]></customfieldvalue>

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

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