From e214685f68411ff9a254bf936337a9312c2f2276 Mon Sep 17 00:00:00 2001 From: Jie Han Date: Mon, 17 Jul 2017 20:06:33 +0800 Subject: [PATCH] Binding generator v2 - uses statement - uses leafref #1 - find parent module by original node for leafref node added by uses if the leafnode is not local. Change-Id: I14b57b796ba33f391d59e8ae7dd06b88ef7e0b51 Signed-off-by: Jie Han (cherry picked from commit 8570a7dd21fdaded0a48313ed4e8df62b10a50c0) --- .../generator/yang/types/TypeProviderImpl.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java index bc4f30078c..7faea06392 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java @@ -26,6 +26,7 @@ import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findD import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNodeForRelativeXPath; import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule; +import com.google.common.base.Optional; import com.google.common.annotations.Beta; import com.google.common.base.Preconditions; import com.google.common.base.Strings; @@ -64,6 +65,7 @@ import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; @@ -637,10 +639,16 @@ public final class TypeProviderImpl implements TypeProvider { final RevisionAwareXPath xpath = leafrefType.getPathStatement(); final String strXPath = xpath.toString(); - if (strXPath != null) { if (strXPath.indexOf('[') == -1) { - final Module module = findParentModule(schemaContext, parentNode); + final Module module; + if ((parentNode instanceof DerivableSchemaNode) && ((DerivableSchemaNode) parentNode).isAddedByUses()) { + final Optional originalNode = ((DerivableSchemaNode) parentNode).getOriginal(); + Preconditions.checkArgument(originalNode.isPresent(), "originalNode can not be null."); + module = findParentModule(schemaContext, originalNode.get()); + } else { + module = findParentModule(schemaContext, parentNode); + } Preconditions.checkArgument(module != null, "Failed to find module for parent %s", parentNode); final SchemaNode dataNode; -- 2.36.6