return null;
}
+ private static void setNodeAugmenting(DataSchemaNodeBuilder node) {
+ node.setAugmenting(true);
+ if (node instanceof DataNodeContainerBuilder) {
+ for (DataSchemaNodeBuilder child : ((DataNodeContainerBuilder)node).getChildNodeBuilders()) {
+ setNodeAugmenting(child);
+ }
+ }
+ if (node instanceof ChoiceBuilder) {
+ for (ChoiceCaseBuilder child : ((ChoiceBuilder)node).getCases()) {
+ setNodeAugmenting(child);
+ }
+ }
+ }
+
/**
* Add nodes defined in uses target grouping to uses parent.
*
// child nodes
for (DataSchemaNodeBuilder child : usesNode.getTargetChildren()) {
- if (child instanceof GroupingMember) {
- ((GroupingMember) child).setAddedByUses(true);
- }
+ setAddedByUsesToNode(child);
- if (child instanceof GroupingMember) {
- GroupingMember gm = (GroupingMember) child;
- if (gm.isAddedByUses()) {
- if (usesNode.isAugmenting()) {
- child.setAugmenting(true);
- }
- if (usesNode.isAugmenting()
- && !(usesNode.getParentAugment().getParent() instanceof UsesNodeBuilder)) {
- AugmentationSchemaBuilder parentAugment = usesNode.getParentAugment();
- ModuleBuilder m = ParserUtils.getParentModule(parentAugment);
- correctNodePathForUsesNodes(child, parentPath, m);
- } else {
- child.setQName(new QName(ns, rev, prefix, child.getQName().getLocalName()));
- correctNodePathForUsesNodes(child, parentPath, module);
- }
- }
+ if (usesNode.isAugmenting()) {
+ //child.setAugmenting(true);
+ setNodeAugmenting(child);
+ }
+ if (usesNode.isAugmenting() && !(usesNode.getParentAugment().getParent() instanceof UsesNodeBuilder)) {
+ AugmentationSchemaBuilder parentAugment = usesNode.getParentAugment();
+ ModuleBuilder m = ParserUtils.getParentModule(parentAugment);
+ correctNodePathForUsesNodes(child, parentPath, m);
} else {
- throw new YangParseException(module.getName(), usesNode.getLine(),
- "Failed to process uses node: unresolved child node");
+ child.setQName(new QName(ns, rev, prefix, child.getQName().getLocalName()));
+ correctNodePathForUsesNodes(child, parentPath, module);
}
parent.addChildNode(child);
// groupings
for (GroupingBuilder gb : usesNode.getTargetGroupings()) {
- gb.setAddedByUses(true);
+ setAddedByUsesToNode(gb);
gb.setQName(new QName(ns, rev, prefix, gb.getQName().getLocalName()));
correctNodePathForUsesNodes(gb, parentPath, module);
parent.addGrouping(gb);
// typedefs
for (TypeDefinitionBuilder tdb : usesNode.getTargetTypedefs()) {
- tdb.setAddedByUses(true);
+ setAddedByUsesToNode(tdb);
tdb.setQName(new QName(ns, rev, prefix, tdb.getQName().getLocalName()));
correctNodePathForUsesNodes(tdb, parentPath, module);
parent.addTypedef(tdb);
}
}
+ private static void setAddedByUsesToNode(GroupingMember node) {
+ node.setAddedByUses(true);
+ if (node instanceof DataNodeContainerBuilder) {
+ for (DataSchemaNodeBuilder child : ((DataNodeContainerBuilder) node).getChildNodeBuilders()) {
+ setAddedByUsesToNode(child);
+
+ }
+ } else if (node instanceof ChoiceBuilder) {
+ for (ChoiceCaseBuilder caseNode : ((ChoiceBuilder) node).getCases()) {
+ setAddedByUsesToNode((caseNode));
+ }
+ }
+ }
+
/**
* Read data defined in target grouping builder, make a copy and add them to
* uses node builder.
}
if (!exists) {
DataSchemaNodeBuilder copy = CopyUtils.copy(childNode, parent, true);
+ setAddedByUsesToNode(copy);
collection.add(copy);
}
}