[ONOS-5186]adding isDescendant node augmented flag in YANG node to handle augment scenario in YMS
Change-Id: I39dc042825feb4a668933fca4ed67dfaa106da1b
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
index 5fb0653..0c16a44 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
@@ -43,18 +43,4 @@
* @return list of augment info
*/
List<YangAugment> getAugmentedInfoList();
-
- /**
- * Sets the isAugmented flag.
- *
- * @param isAugmented the flag value to set
- */
- void setIsAugmented(boolean isAugmented);
-
- /**
- * Returns the isAugmented flag.
- *
- * @return if isAugmented flag
- */
- boolean isAugmented();
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
index 7e6d875..09cb104 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
@@ -138,8 +138,6 @@
private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
- private boolean isAugmented;
-
/**
* Creates a choice node.
*/
@@ -430,16 +428,6 @@
}
@Override
- public void setIsAugmented(boolean isAugmented) {
- this.isAugmented = isAugmented;
- }
-
- @Override
- public boolean isAugmented() {
- return isAugmented;
- }
-
- @Override
public void setLeafNameSpaceAndAddToParentSchemaMap() {
// Add namespace for all leafs.
for (YangLeaf yangLeaf : getListOfLeaf()) {
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
index 8aaeeaa..cd08573 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
@@ -159,8 +159,6 @@
*/
private YangAppErrorInfo yangAppErrorInfo;
- private boolean isAugmented;
-
/**
* Create a choice node.
*/
@@ -466,16 +464,6 @@
}
@Override
- public void setIsAugmented(boolean isAugmented) {
- this.isAugmented = isAugmented;
- }
-
- @Override
- public boolean isAugmented() {
- return isAugmented;
- }
-
- @Override
public void setAppErrorInfo(YangAppErrorInfo yangAppErrorInfo) {
this.yangAppErrorInfo = yangAppErrorInfo;
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
index 16f826a..30c9ec9 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
@@ -130,8 +130,6 @@
private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
- private boolean isAugmented;
-
/**
* Status of the node.
*/
@@ -508,16 +506,6 @@
}
@Override
- public void setIsAugmented(boolean isAugmented) {
- this.isAugmented = isAugmented;
- }
-
- @Override
- public boolean isAugmented() {
- return isAugmented;
- }
-
- @Override
public void setLeafNameSpaceAndAddToParentSchemaMap() {
// Add namespace for all leafs.
for (YangLeaf yangLeaf : getListOfLeaf()) {
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
index eff6acf..a1b82fd 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
@@ -88,8 +88,6 @@
private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
- private boolean isAugmented;
-
/**
* Create a rpc input node.
*/
@@ -222,16 +220,6 @@
}
@Override
- public void setIsAugmented(boolean isAugmented) {
- this.isAugmented = isAugmented;
- }
-
- @Override
- public boolean isAugmented() {
- return isAugmented;
- }
-
- @Override
public void setLeafNameSpaceAndAddToParentSchemaMap() {
// Add namespace for all leafs.
for (YangLeaf yangLeaf : getListOfLeaf()) {
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
index f0d5c99..918bb53 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
@@ -209,8 +209,6 @@
*/
private transient YangCompilerAnnotation compilerAnnotation;
- private boolean isAugmented;
-
/**
* Creates a YANG list object.
*/
@@ -785,16 +783,6 @@
}
@Override
- public void setIsAugmented(boolean isAugmented) {
- this.isAugmented = isAugmented;
- }
-
- @Override
- public boolean isAugmented() {
- return isAugmented;
- }
-
- @Override
public void setLeafNameSpaceAndAddToParentSchemaMap() {
// Add namespace for all leafs.
for (YangLeaf yangLeaf : getListOfLeaf()) {
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
index cd6cc7c..2d419c9 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
@@ -96,6 +96,11 @@
private Map<YangSchemaNodeIdentifier, YangSchemaNode> defaultChildMap;
/**
+ * Flag to check whether any descendant node is augmented.
+ */
+ private boolean isDescendantNodeAugmented;
+
+ /**
* Returns the priority of the node.
*
* @return priority of the node
@@ -133,6 +138,24 @@
}
/**
+ * Returns true if descendant node is augmented.
+ *
+ * @return true if descendant node is augmented
+ */
+ public boolean isDescendantNodeAugmented() {
+ return isDescendantNodeAugmented;
+ }
+
+ /**
+ * Sets true if descendant node is augmented.
+ *
+ * @param descendantNodeAugmented true if descendant node is augmented.
+ */
+ public void setDescendantNodeAugmented(boolean descendantNodeAugmented) {
+ isDescendantNodeAugmented = descendantNodeAugmented;
+ }
+
+ /**
* Returns the node type.
*
* @return node type
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
index 0802366..b70190c 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
@@ -115,8 +115,6 @@
private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
- private boolean isAugmented;
-
/**
* Create a notification node.
*/
@@ -279,16 +277,6 @@
}
@Override
- public void setIsAugmented(boolean isAugmented) {
- this.isAugmented = isAugmented;
- }
-
- @Override
- public boolean isAugmented() {
- return isAugmented;
- }
-
- @Override
public void setLeafNameSpaceAndAddToParentSchemaMap() {
// Add namespace for all leafs.
for (YangLeaf yangLeaf : getListOfLeaf()) {
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
index 52044df..d3d9cb7 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
@@ -87,8 +87,6 @@
private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
- private boolean isAugmented;
-
/**
* Create a rpc output node.
*/
@@ -221,16 +219,6 @@
}
@Override
- public void setIsAugmented(boolean isAugmented) {
- this.isAugmented = isAugmented;
- }
-
- @Override
- public boolean isAugmented() {
- return isAugmented;
- }
-
- @Override
public void setLeafNameSpaceAndAddToParentSchemaMap() {
// Add namespace for all leafs.
for (YangLeaf yangLeaf : getListOfLeaf()) {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
index f0d4608..1281bb8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
@@ -1249,8 +1249,8 @@
if (targetNode instanceof YangAugmentableNode) {
detectCollisionForAugmentedNode(targetNode, augment);
((YangAugmentableNode) targetNode).addAugmentation(augment);
- ((YangAugmentableNode) targetNode).setIsAugmented(true);
augment.setAugmentedNode(targetNode);
+ setAugmentedFlagInAncestors(targetNode);
Resolvable resolvable = (Resolvable) entityToResolve;
resolvable.setResolvableStatus(RESOLVED);
} else {
@@ -1842,4 +1842,16 @@
return null;
}
+ /**
+ * Sets descendant node augmented flag in ancestors.
+ *
+ * @param targetNode augmented YANG node
+ */
+ private void setAugmentedFlagInAncestors(YangNode targetNode) {
+ targetNode = targetNode.getParent();
+ while (targetNode != null) {
+ targetNode.setDescendantNodeAugmented(true);
+ targetNode = targetNode.getParent();
+ }
+ }
}