- 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 <han.jie@zte.com.cn>
(cherry picked from commit
8570a7dd21fdaded0a48313ed4e8df62b10a50c0)
import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNodeForRelativeXPath;
import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule;
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;
import com.google.common.annotations.Beta;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
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.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;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
final RevisionAwareXPath xpath = leafrefType.getPathStatement();
final String strXPath = xpath.toString();
final RevisionAwareXPath xpath = leafrefType.getPathStatement();
final String strXPath = xpath.toString();
if (strXPath != null) {
if (strXPath.indexOf('[') == -1) {
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<? extends SchemaNode> 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;
Preconditions.checkArgument(module != null, "Failed to find module for parent %s", parentNode);
final SchemaNode dataNode;