[ONOS-4829] Augmented data method generator implmentation.
Change-Id: I0cb68dd10a748e5b66eec0b832574f408a23ba5c
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
index 38a8188..76098fb 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
@@ -21,6 +21,7 @@
import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangAugmentableNode;
import org.onosproject.yangutils.datamodel.YangAugmentedInfo;
+import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangLeaf;
import org.onosproject.yangutils.datamodel.YangLeafList;
import org.onosproject.yangutils.datamodel.YangLeavesHolder;
@@ -36,8 +37,7 @@
}
/**
- * Detects collision between target nodes leaf/leaf-list or child node with
- * augmented leaf/leaf-list or child node.
+ * Detects collision between target nodes leaf/leaf-list or child node with augmented leaf/leaf-list or child node.
*
* @param targetNode target node
* @param augment augment node
@@ -46,57 +46,66 @@
YangNode targetNodesChild = targetNode.getChild();
YangNode augmentsChild = augment.getChild();
YangLeavesHolder augmentsLeavesHolder = augment;
- YangLeavesHolder targetNodesLeavesHolder = (YangLeavesHolder) targetNode;
+ if (targetNode instanceof YangChoice) {
+ if (augmentsLeavesHolder.getListOfLeaf() != null
+ || augmentsLeavesHolder.getListOfLeafList() != null) {
+ throw new LinkerException("target node " + targetNode.getName()
+ + "is a instance of choice. it can " +
+ "only be augmented with leaf using a case node.");
+ }
+ } else {
+ YangLeavesHolder targetNodesLeavesHolder = (YangLeavesHolder) targetNode;
- YangNode parent = targetNode;
- if (targetNode instanceof YangAugment) {
- parent = targetNode.getParent();
- } else {
- while (parent.getParent() != null) {
- parent = parent.getParent();
- }
- }
- if (augmentsLeavesHolder.getListOfLeaf() != null && augmentsLeavesHolder.getListOfLeaf().size() != 0
- && targetNodesLeavesHolder.getListOfLeaf() != null) {
- for (YangLeaf leaf : augmentsLeavesHolder.getListOfLeaf()) {
- for (YangLeaf targetLeaf : targetNodesLeavesHolder.getListOfLeaf()) {
- if (targetLeaf.getName().equals(leaf.getName())) {
- throw new LinkerException("target node " + targetNode.getName()
- + " contains augmented leaf " + leaf.getName() + " in module "
- + parent.getName());
- }
+ YangNode parent = targetNode;
+ if (targetNode instanceof YangAugment) {
+ parent = targetNode.getParent();
+ } else {
+ while (parent.getParent() != null) {
+ parent = parent.getParent();
}
}
- } else if (augmentsLeavesHolder.getListOfLeafList() != null
- && augmentsLeavesHolder.getListOfLeafList().size() != 0
- && targetNodesLeavesHolder.getListOfLeafList() != null) {
- for (YangLeafList leafList : augmentsLeavesHolder.getListOfLeafList()) {
- for (YangLeafList targetLeafList : targetNodesLeavesHolder.getListOfLeafList()) {
- if (targetLeafList.getName().equals(leafList.getName())) {
- throw new LinkerException("target node " + targetNode.getName()
- + " contains augmented leaf-list" + leafList.getName() + " in module "
- + parent.getName());
+ if (augmentsLeavesHolder.getListOfLeaf() != null && augmentsLeavesHolder.getListOfLeaf().size() != 0
+ && targetNodesLeavesHolder.getListOfLeaf() != null) {
+ for (YangLeaf leaf : augmentsLeavesHolder.getListOfLeaf()) {
+ for (YangLeaf targetLeaf : targetNodesLeavesHolder.getListOfLeaf()) {
+ if (targetLeaf.getName().equals(leaf.getName())) {
+ throw new LinkerException("target node " + targetNode.getName()
+ + " contains augmented leaf " + leaf.getName() + " in module "
+ + parent.getName());
+ }
}
}
- }
- } else {
- while (augmentsChild != null) {
- while (targetNodesChild != null) {
- if (targetNodesChild.getName().equals(augmentsChild.getName())) {
- throw new LinkerException("target node " + targetNode.getName()
- + " contains augmented child node" + augmentsChild.getName() + " in module "
- + parent.getName());
+ } else if (augmentsLeavesHolder.getListOfLeafList() != null
+ && augmentsLeavesHolder.getListOfLeafList().size() != 0
+ && targetNodesLeavesHolder.getListOfLeafList() != null) {
+ for (YangLeafList leafList : augmentsLeavesHolder.getListOfLeafList()) {
+ for (YangLeafList targetLeafList : targetNodesLeavesHolder.getListOfLeafList()) {
+ if (targetLeafList.getName().equals(leafList.getName())) {
+ throw new LinkerException("target node " + targetNode.getName()
+ + " contains augmented leaf-list" + leafList.getName() + " in module "
+ + parent.getName());
+ }
}
- targetNodesChild = targetNodesChild.getNextSibling();
}
- augmentsChild = augmentsChild.getNextSibling();
+ } else {
+ while (augmentsChild != null) {
+ while (targetNodesChild != null) {
+ if (targetNodesChild.getName().equals(augmentsChild.getName())) {
+ throw new LinkerException("target node " + targetNode.getName()
+ + " contains augmented child node" + augmentsChild.getName() + " in module "
+ + parent.getName());
+ }
+ targetNodesChild = targetNodesChild.getNextSibling();
+ }
+ augmentsChild = augmentsChild.getNextSibling();
+ }
}
}
}
/**
- * Detects collision between target nodes and its all leaf/leaf-list or child node with
- * augmented leaf/leaf-list or child node.
+ * Detects collision between target nodes and its all leaf/leaf-list or child node with augmented leaf/leaf-list or
+ * child node.
*
* @param targetNode target node
* @param augment augment node