Details
-
Bug
-
Status: Resolved
-
Medium
-
Resolution: Done
-
None
-
None
Description
module
module a {
yang-version 1;
namespace "a";
prefix "a";
grouping foo_grp {
leaf key_leaf1 {
type leafref {
path "../../../a:foo_list/a:name";
}
}
leaf key_leaf2 {
type string;
}
leaf key_leaf3 {
type string;
}
}
container foo_cont {
list foo_list {
key "name";
leaf name {
type string {
length "1..255";
}
}
}
container foo_cont2 {
list foo_list2 {
key "key_leaf1 key_leaf2 key_leaf3";
uses foo_grp;
}
}
}
}
generates code with no error but when maven tries to compile it will receive an error:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project lighty-models-skeleton: Compilation failure [ERROR] /home/miroslav/projects/java/pt-ldl/distribution/scripts/user/java/lighty-models-skeleton/target/generated-sources/mdsal-binding/org/opendaylight/yang/gen/v1/a/norev/foo_cont/foo_cont2/FooList2Builder.java:[157,60] incompatible types: java.lang.Object cannot be converted to java.lang.String
the problem is with following generated code:
FooList2Impl(FooList2Builder base) {
super(base.augmentation);
if (base.key() != null) {
this.key = base.key();
} else {
this.key = new FooList2Key(base.getKeyLeaf1(), base.getKeyLeaf2(), base.getKeyLeaf3());
}
this._keyLeaf1 = key.getKeyLeaf1();
this._keyLeaf2 = key.getKeyLeaf2();
this._keyLeaf3 = key.getKeyLeaf3();
}
here we can see that it is trying to create instance of FooList2KEY with three keys from base. Where base is:
public class FooList2Builder implements Builder<FooList2> { private Object _keyLeaf1; private String _keyLeaf2; private String _keyLeaf3; private FooList2Key key;
as you can see the first field is Object _keyLeaf1 which is a problem because FooList2Key constructor is generated like this:
public FooList2Key(String _keyLeaf1, String _keyLeaf2, String _keyLeaf3) { this._keyLeaf1 = _keyLeaf1; this._keyLeaf2 = _keyLeaf2; this._keyLeaf3 = _keyLeaf3; }
String _keyLeaf1 !!!
Attachments
Issue Links
| # | Subject | Branch | Project | Status | CR | V |
|---|---|---|---|---|---|---|
| 88401,86 | Specialize relative leafref types during instantiation | master | mdsal | Status: MERGED | +2 | +1 |
| 94282,4 | Specialize relative leafref types during instantiation | 6.0.x | mdsal | Status: ABANDONED | 0 | -1 |