Description
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.
The unit test results in:
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.153 s <<< FAILURE! - in org.opendaylight.mdsal.binding.generator.impl.Mdsal499Test
[ERROR] testSubmoduleImport(org.opendaylight.mdsal.binding.generator.impl.Mdsal499Test) Time elapsed: 0.153 s <<< ERROR!
java.lang.IllegalArgumentException: Failed to resolve xpath: no module found for 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.<init>(AbstractTypeGenerator.java:205)
at org.opendaylight.mdsal.binding.generator.impl.CodegenTypeGenerator.<init>(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)
Attachments
| # | Subject | Branch | Project | Status | CR | V |
|---|---|---|---|---|---|---|
| 86432,10 | Fix path namespace resolution | master | mdsal | Status: MERGED | +2 | +1 |
| 86611,16 | Fix SchemaContextUtils.findDataSchemaNode() namespace handling | master | yangtools | Status: MERGED | +2 | +1 |
| 86621,6 | Add another alternative SchemaContextUtil.findDataSchemaNode() | master | yangtools | Status: MERGED | +2 | +1 |
| 86636,1 | Add another alternative SchemaContextUtil.findDataSchemaNode() | v3.0.x | yangtools | Status: MERGED | +2 | +1 |
| 86637,2 | Fix SchemaContextUtils.findDataSchemaNode() namespace handling | v3.0.x | yangtools | Status: MERGED | +2 | +1 |
| 86648,1 | Add missing test assertions | master | yangtools | Status: MERGED | +2 | +1 |
| 86652,1 | Add missing test assertions | v3.0.x | yangtools | Status: MERGED | +2 | +1 |
| 87021,1 | Fix path namespace resolution | 5.0.x | mdsal | Status: MERGED | +2 | +1 |
| 87022,1 | Fix path namespace resolution | v4.0.x | mdsal | Status: MERGED | +2 | +1 |