* </ul>\r
*/
private def boolean resolveLeafSchemaNodeAsProperty(GeneratedTOBuilder toBuilder, LeafSchemaNode leaf,
- boolean isReadOnly) {
+ boolean isReadOnly, Module module) {
if ((leaf !== null) && (toBuilder !== null)) {
val leafName = leaf.QName.localName;
var String leafDesc = leaf.description;
leafDesc = "";
}
- if (leafName !== null) {
- val TypeDefinition<?> typeDef = leaf.type;
+ if (leafName !== null) {\r
+ var Type returnType = null;
+ val TypeDefinition<?> typeDef = leaf.type;\r
+ if (typeDef instanceof UnionTypeDefinition) {\r
+ // GeneratedType for this type definition should be already created\r
+ var qname = typeDef.QName\r
+ var Module unionModule = null\r
+ if (qname.prefix == null || qname.prefix.empty) {\r
+ unionModule = module\r
+ } else {\r
+ unionModule = findModuleFromImports(module.imports, qname.prefix)\r
+ }\r
+ val ModuleContext mc = genCtx.get(unionModule)\r
+ returnType = mc.typedefs.get(typeDef.path)\r
+ } else {\r
+ returnType = typeProvider.javaTypeForSchemaDefinitionType(typeDef, leaf);\r
+ }
- // TODO: properly resolve enum types\r
- val returnType = typeProvider.javaTypeForSchemaDefinitionType(typeDef, leaf);
if (returnType !== null) {
val propBuilder = toBuilder.addProperty(parseToValidParamName(leafName));
propBuilder.setReadOnly(isReadOnly);
val leafName = leaf.QName.localName;\r
resolveLeafSchemaNodeAsMethod(typeBuilder, leaf);
if (listKeys.contains(leafName)) {
- resolveLeafSchemaNodeAsProperty(genTOBuilder, leaf, true);
+ resolveLeafSchemaNodeAsProperty(genTOBuilder, leaf, true, module)
}
} else if (!schemaNode.addedByUses) {
if (schemaNode instanceof LeafListSchemaNode) {