<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:55:04 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-1060] SchemaContextUtil fails to resolve submodule-only prefixes</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1060</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;If the submodule contains import with prefix and this prefix is used in extension or path substatement but this import is not in its parent module as well source generation will fail with with no module found for prefix. Interestingly this does not apply for uses or types.&lt;/p&gt;

&lt;p&gt;The unit test results in:&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;
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.153 s &amp;lt;&amp;lt;&amp;lt; FAILURE! - in org.opendaylight.mdsal.binding.generator.impl.Mdsal499Test
[ERROR] testSubmoduleImport(org.opendaylight.mdsal.binding.generator.impl.Mdsal499Test)  Time elapsed: 0.153 s  &amp;lt;&amp;lt;&amp;lt; ERROR!
java.lang.IllegalArgumentException: Failed to resolve xpath: no module found &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; prefix imp in module parent
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:441)
	at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.stringPathPartToQName(SchemaContextUtil.java:542)
	at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.xpathToQNamePath(SchemaContextUtil.java:513)
	at org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNode(SchemaContextUtil.java:143)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.isLeafRefSelfReference(AbstractTypeProvider.java:284)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForLeafrefOrIdentityRef(AbstractTypeProvider.java:300)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:196)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveLeafSchemaNodeAsMethod(AbstractTypeGenerator.java:1404)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToBuilderAsMethod(AbstractTypeGenerator.java:1105)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveDataSchemaNodes(AbstractTypeGenerator.java:1058)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.containerToGenType(AbstractTypeGenerator.java:307)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToBuilderAsMethod(AbstractTypeGenerator.java:1109)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveDataSchemaNodes(AbstractTypeGenerator.java:1058)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.moduleToGenTypes(AbstractTypeGenerator.java:244)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.&amp;lt;init&amp;gt;(AbstractTypeGenerator.java:205)
	at org.opendaylight.mdsal.binding.generator.impl.CodegenTypeGenerator.&amp;lt;init&amp;gt;(CodegenTypeGenerator.java:32)
	at org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl.generateTypes(BindingGeneratorImpl.java:64)
	at org.opendaylight.mdsal.binding.generator.api.BindingGenerator.generateTypes(BindingGenerator.java:30)
	at org.opendaylight.mdsal.binding.generator.impl.Mdsal499Test.testSubmoduleImport(Mdsal499Test.java:25)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="32253">YANGTOOLS-1060</key>
            <summary>SchemaContextUtil fails to resolve submodule-only prefixes</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="miro.kovac">Miroslav Kovac</reporter>
                        <labels>
                    </labels>
                <created>Mon, 16 Dec 2019 14:37:40 +0000</created>
                <updated>Mon, 30 Dec 2019 21:55:53 +0000</updated>
                            <resolved>Mon, 30 Dec 2019 21:55:53 +0000</resolved>
                                    <version>3.0.7</version>
                    <version>4.0.4</version>
                                    <fixVersion>3.0.8</fixVersion>
                    <fixVersion>4.0.5</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="67568" author="miro.kovac" created="Tue, 17 Dec 2019 14:39:10 +0000"  >&lt;p&gt;This seemes to be more of a yangtools problem creating wrong schemaContext. I think this should be moved under yangtools project...&lt;/p&gt;</comment>
                            <comment id="67596" author="rovarga" created="Sat, 28 Dec 2019 23:27:08 +0000"  >&lt;p&gt;Probably, but it needs a bit of analysis first&lt;/p&gt;</comment>
                            <comment id="67597" author="rovarga" created="Sat, 28 Dec 2019 23:32:32 +0000"  >&lt;p&gt;So the problem is that SchemaContextUtil.findDataSchemaNode() cannot find the imported prefix, which is not known in the Module passed in by MD-SAL. Correct import actually exists in the submodule and Submodule extends Module &#8211; hence MD-SAL could pass in the correct Submodule and things would work just fine. The problem with that approach is that MD-SAL would have to go fishing for the right submodule &#8211; which is clearly wrong.--&lt;/p&gt;</comment>
                            <comment id="67598" author="rovarga" created="Sun, 29 Dec 2019 09:03:28 +0000"  >&lt;p&gt;For yangtools-{3,4}.0.x this ends up being rather simple &#8211; the path in question is absolute and has prefixes &#8211; hence in reality the PathExpression already contains the QNames in resolved form and we only need to teach SchemaContextUtil.findDataSchemaNode() to use it.&lt;/p&gt;</comment>
                    </comments>
                    <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|i03qdb:</customfieldvalue>

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