[ONOS-5768] defect fix in yangtools
Change-Id: Ib7b9bf1d0f845184d27d01c799687f11a8d2fc6a
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 0c16a44..6c52346 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
@@ -43,4 +43,9 @@
* @return list of augment info
*/
List<YangAugment> getAugmentedInfoList();
+
+ /**
+ * Clones augment info.
+ */
+ void cloneAugmentInfo();
}
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 3b6957c..ba7e362 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
@@ -144,7 +144,7 @@
*/
private List<YangIfFeature> ifFeatureList;
- private final List<YangAugment> yangAugmentedInfo;
+ private List<YangAugment> yangAugmentedInfo;
/**
* Creates a choice node.
@@ -440,4 +440,9 @@
yangLeafList.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
}
+
+
+ public void cloneAugmentInfo() {
+ yangAugmentedInfo = new ArrayList<>();
+ }
}
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 17976e6..e8a7190 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
@@ -160,7 +160,7 @@
*/
private List<YangIfFeature> ifFeatureList;
- private final List<YangAugment> yangAugmentedInfo;
+ private List<YangAugment> yangAugmentedInfo;
/**
* YANG application error information.
@@ -487,4 +487,7 @@
return yangAppErrorInfo;
}
+ public void cloneAugmentInfo() {
+ yangAugmentedInfo = new ArrayList<>();
+ }
}
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 30c9ec9..85a81e0 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
@@ -516,4 +516,8 @@
yangLeafList.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
}
+
+ public void cloneAugmentInfo() {
+ yangAugmentedInfo = new ArrayList<>();
+ }
}
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 642e8fd..07d816a 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
@@ -94,7 +94,7 @@
*/
private List<YangLeafList> listOfLeafList;
- private final List<YangAugment> yangAugmentedInfo;
+ private List<YangAugment> yangAugmentedInfo;
/**
* Create a rpc input node.
@@ -224,4 +224,8 @@
yangLeafList.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
}
+
+ public void cloneAugmentInfo() {
+ yangAugmentedInfo = new ArrayList<>();
+ }
}
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 918bb53..c350e8f 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
@@ -16,16 +16,16 @@
package org.onosproject.yangutils.datamodel;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
import org.onosproject.yangutils.datamodel.utils.Parsable;
import org.onosproject.yangutils.datamodel.utils.YangConstructType;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil;
/*
@@ -90,7 +90,7 @@
/**
* Reference RFC 6020.
- *
+ * <p>
* The "key" statement, which MUST be present if the list represents
* configuration, and MAY be present otherwise, takes as an argument a
* string that specifies a space-separated list of leaf identifiers of this
@@ -98,39 +98,39 @@
* such leaf identifier MUST refer to a child leaf of the list. The leafs
* can be defined directly in sub-statements to the list, or in groupings
* used in the list.
- *
+ * <p>
* The combined values of all the leafs specified in the key are used to
* uniquely identify a list entry. All key leafs MUST be given values when a
* list entry is created. Thus, any default values in the key leafs or their
* types are ignored. It also implies that any mandatory statement in the
* key leafs are ignored.
- *
+ * <p>
* A leaf that is part of the key can be of any built-in or derived type,
* except it MUST NOT be the built-in type "empty".
- *
+ * <p>
* All key leafs in a list MUST have the same value for their "config" as
* the list itself.
- *
+ * <p>
* List of key leaf names.
*/
private List<String> keyList;
/**
* Reference RFC 6020.
- *
+ * <p>
* The "unique" statement is used to put constraints on valid list
* entries. It takes as an argument a string that contains a space-
* separated list of schema node identifiers, which MUST be given in the
* descendant form. Each such schema node identifier MUST refer to a leaf.
- *
+ * <p>
* If one of the referenced leafs represents configuration data, then
* all of the referenced leafs MUST represent configuration data.
- *
+ * <p>
* The "unique" constraint specifies that the combined values of all the
* leaf instances specified in the argument string, including leafs with
* default values, MUST be unique within all list entry instances in
* which all referenced leafs exist.
- *
+ * <p>
* List of unique leaf/leaf-list names
*/
private List<String> uniqueList;
@@ -149,32 +149,32 @@
/**
* Reference RFC 6020.
- *
+ * <p>
* The "max-elements" statement, which is optional, takes as an argument a
* positive integer or the string "unbounded", which puts a constraint on
* valid list entries. A valid leaf-list or list always has at most
* max-elements entries.
- *
+ * <p>
* If no "max-elements" statement is present, it defaults to "unbounded".
*/
private YangMaxElement maxElements;
/**
* Reference RFC 6020.
- *
+ * <p>
* The "min-elements" statement, which is optional, takes as an argument a
* non-negative integer that puts a constraint on valid list entries. A
* valid leaf-list or list MUST have at least min-elements entries.
- *
+ * <p>
* If no "min-elements" statement is present, it defaults to zero.
- *
+ * <p>
* The behavior of the constraint depends on the type of the leaf-list's or
* list's closest ancestor node in the schema tree that is not a non-
* presence container:
- *
+ * <p>
* o If this ancestor is a case node, the constraint is enforced if any
* other node from the case exists.
- *
+ * <p>
* o Otherwise, it is enforced if the ancestor node exists.
*/
private YangMinElement minElements;
@@ -371,11 +371,11 @@
if (getKeyList().contains(key)) {
throw new DataModelException("A leaf identifier must not appear more than once in the\n" +
- " key" +
- getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ " key" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
getKeyList().add(key);
@@ -394,11 +394,11 @@
}
if (getUniqueList().contains(unique)) {
throw new DataModelException("A leaf identifier must not appear more than once in the\n" +
- " unique" +
- getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ " unique" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
getUniqueList().add(unique);
}
@@ -578,10 +578,10 @@
if (isConfig && (keys.isEmpty() || leaves.isEmpty()) && !isUsesPresentInList()
&& !isListPresentInGrouping()) {
throw new DataModelException("A list must have atleast one key leaf if config is true; " +
- getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
} else if (keys != null) {
validateKey(leaves, keys);
}
@@ -605,11 +605,11 @@
for (YangLeaf leaf : leaves) {
if (leaf.isConfig()) {
throw new DataModelException("If a list has \"config\" set to \"false\", no node underneath " +
- "it can have \"config\" set to \"true\"." +
- getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ "it can have \"config\" set to \"true\"." +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
}
@@ -618,10 +618,10 @@
for (YangLeafList leafList : leafLists) {
if (leafList.isConfig()) {
throw new DataModelException("If a list has \"config\" set to \"false\", no node underneath " +
- "it can have \"config\" set to \"true\"." + getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ "it can have \"config\" set to \"true\"." + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
}
@@ -649,11 +649,11 @@
if (key.equals(leaf.getName())) {
if (leaf.getDataType().getDataType() == YangDataTypes.EMPTY) {
throw new DataModelException(" A leaf that is part of the key must not be the built-in " +
- "type \"empty\"." +
- getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ "type \"empty\"." +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
leafFound = true;
keyLeaves.add(leaf);
@@ -664,10 +664,10 @@
if (!leafFound && !isUsesPresentInList() && !isListPresentInGrouping()) {
throw new DataModelException("An identifier, in key, must refer to a child leaf of the list" +
- getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
leafFound = false;
}
@@ -679,11 +679,11 @@
for (YangLeaf keyLeaf : keyLeaves) {
if (isConfig != keyLeaf.isConfig()) {
throw new DataModelException("All key leafs in a list must have the same value for their" +
- " \"config\" as the list itself." +
- getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ " \"config\" as the list itself." +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
}
@@ -700,10 +700,10 @@
throws DataModelException {
if (getName().equals(identifierName)) {
throw new DataModelException("YANG file error: Duplicate input identifier detected, same as list \"" +
- getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
@@ -793,4 +793,8 @@
yangLeafList.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
}
+
+ public void cloneAugmentInfo() {
+ yangAugmentedInfo = new ArrayList<>();
+ }
}
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 bc665ff..9aab675 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
@@ -421,6 +421,9 @@
clonedNode.yangSchemaNodeIdentifier =
clonedNode.yangSchemaNodeIdentifier.clone();
clonedNode.ysnContextInfoMap = new HashMap<>();
+ if (clonedNode instanceof YangAugmentableNode) {
+ ((YangAugmentableNode) clonedNode).cloneAugmentInfo();
+ }
return clonedNode;
}
@@ -505,7 +508,6 @@
* update the traversal's current node.
*/
nextNodeToClone = nextNodeToClone.getChild();
-
} else if (nextNodeToClone.getNextSibling() != null) {
curTraversal = SIBILING;
@@ -523,7 +525,6 @@
" at " + nextNodeToClone.getCharPosition() +
" in " + nextNodeToClone.getFileName() + "\"");
}
-
}
/**
@@ -573,7 +574,6 @@
" at " + currentNode.getCharPosition() +
" in " + currentNode.getFileName() + "\"");
}
-
}
/**
@@ -618,7 +618,6 @@
* as the current node's parent
*/
newSibling.setParent(getParent());
-
} else {
throw new DataModelException("Node is already part of a tree, " +
"and cannot be added as a " +
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 dbca232..982aee2 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
@@ -20,6 +20,7 @@
import org.onosproject.yangutils.datamodel.utils.Parsable;
import org.onosproject.yangutils.datamodel.utils.YangConstructType;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -120,7 +121,7 @@
*/
private List<YangIfFeature> ifFeatureList;
- private final List<YangAugment> yangAugmentedInfo;
+ private List<YangAugment> yangAugmentedInfo;
/**
* Create a notification node.
@@ -291,4 +292,8 @@
yangLeafList.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
}
+
+ public void cloneAugmentInfo() {
+ yangAugmentedInfo = new ArrayList<>();
+ }
}
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 280da96..ffd2920 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
@@ -92,7 +92,7 @@
*/
private List<YangLeafList> listOfLeafList;
- private final List<YangAugment> yangAugmentedInfo;
+ private List<YangAugment> yangAugmentedInfo;
/**
* Create a rpc output node.
@@ -220,4 +220,8 @@
yangLeafList.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
}
+
+ public void cloneAugmentInfo() {
+ yangAugmentedInfo = new ArrayList<>();
+ }
}