if (strXPath != null) {
if (strXPath.indexOf('[') == -1) {
final Module module;
+ final SchemaNode actualParentSchemaNode;
if ((parentNode instanceof DerivableSchemaNode) && ((DerivableSchemaNode) parentNode).isAddedByUses()) {
final Optional<? extends SchemaNode> originalNode = ((DerivableSchemaNode) parentNode).getOriginal();
Preconditions.checkArgument(originalNode.isPresent(), "originalNode can not be null.");
+ actualParentSchemaNode = originalNode.get();
module = findParentModule(schemaContext, originalNode.get());
} else {
+ actualParentSchemaNode = parentNode;
module = findParentModule(schemaContext, parentNode);
}
Preconditions.checkArgument(module != null, "Failed to find module for parent %s", parentNode);
if (xpath.isAbsolute()) {
dataNode = findDataSchemaNode(schemaContext, module, xpath);
} else {
- dataNode = findDataSchemaNodeForRelativeXPath(schemaContext, module, parentNode, xpath);
+ dataNode = findDataSchemaNodeForRelativeXPath(schemaContext, module, actualParentSchemaNode, xpath);
}
Preconditions.checkArgument(dataNode != null, "Failed to find leafref target: %s in module %s (%s)",
strXPath, getParentModule(parentNode, schemaContext).getName(), parentNode.getQName().getModule());