[ONOS-4799],[ONOS-4351] Augment inter file linker and Generated Code refactored.
Change-Id: Id1f3ac9c90a632373f51cc75d499c3110216be17
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/ResolvableType.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/ResolvableType.java
index ad00cae..1be5cac 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/ResolvableType.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/ResolvableType.java
@@ -49,5 +49,10 @@
/**
* Identifies the identityref.
*/
- YANG_IDENTITYREF
+ YANG_IDENTITYREF,
+
+ /**
+ * Identifies the augment.
+ */
+ YANG_AUGMENT
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
index ae9ff3a..9d37d46 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
@@ -20,6 +20,7 @@
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
import org.onosproject.yangutils.datamodel.utils.Parsable;
+import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
import org.onosproject.yangutils.datamodel.utils.YangConstructType;
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil;
@@ -81,7 +82,8 @@
*/
public class YangAugment
extends YangNode
- implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangWhenHolder, YangIfFeatureHolder {
+ implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentedInfo, Resolvable,
+ YangXPathResolver, YangWhenHolder, YangIfFeatureHolder {
private static final long serialVersionUID = 806201602L;
@@ -108,7 +110,7 @@
/**
* List of node identifiers.
*/
- private List<YangNodeIdentifier> targetNode;
+ private List<YangAtomicPath> targetNode;
/**
* Reference of the YANG augment.
@@ -121,6 +123,19 @@
private YangStatusType status;
/**
+ * Resolved augmented node.
+ */
+ private YangNode augmentedNode;
+
+ /**
+ * Status of resolution. If completely resolved enum value is "RESOLVED",
+ * if not enum value is "UNRESOLVED", in case reference of grouping/typedef
+ * is added to uses/type but it's not resolved value of enum should be
+ * "INTRA_FILE_RESOLVED".
+ */
+ private ResolvableStatus resolvableStatus;
+
+ /**
* When data of the node.
*/
private YangWhen when;
@@ -135,6 +150,7 @@
*/
public YangAugment() {
super(YangNodeType.AUGMENT_NODE);
+ resolvableStatus = ResolvableStatus.UNRESOLVED;
}
/**
@@ -142,7 +158,7 @@
*
* @return the augmented node
*/
- public List<YangNodeIdentifier> getTargetNode() {
+ public List<YangAtomicPath> getTargetNode() {
return targetNode;
}
@@ -151,7 +167,7 @@
*
* @param nodeIdentifiers the augmented node
*/
- public void setTargetNode(List<YangNodeIdentifier> nodeIdentifiers) {
+ public void setTargetNode(List<YangAtomicPath> nodeIdentifiers) {
targetNode = nodeIdentifiers;
}
@@ -371,6 +387,24 @@
this.name = name;
}
+ /**
+ * Returns augmented node.
+ *
+ * @return augmented node
+ */
+ public YangNode getAugmentedNode() {
+ return augmentedNode;
+ }
+
+ /**
+ * Sets augmented node.
+ *
+ * @param augmentedNode augmented node
+ */
+ public void setAugmentedNode(YangNode augmentedNode) {
+ this.augmentedNode = augmentedNode;
+ }
+
@Override
public List<YangIfFeature> getIfFeatureList() {
return ifFeatureList;
@@ -388,4 +422,20 @@
public void setIfFeatureList(List<YangIfFeature> ifFeatureList) {
this.ifFeatureList = ifFeatureList;
}
+
+ @Override
+ public ResolvableStatus getResolvableStatus() {
+ return resolvableStatus;
+ }
+
+ @Override
+ public void setResolvableStatus(ResolvableStatus resolvableStatus) {
+ this.resolvableStatus = resolvableStatus;
+
+ }
+
+ @Override
+ public void resolve() throws DataModelException {
+ // Resolving of target node is being done in XPathLinker.
+ }
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
new file mode 100644
index 0000000..f3952c6
--- /dev/null
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.datamodel;
+
+import java.util.List;
+
+/**
+ * Represents YANG constructs which can be augmented.
+ */
+public interface YangAugmentableNode {
+
+ /**
+ * Adds augment info to the augment info list.
+ *
+ * @param augmentInfo augment info of node
+ */
+ void addAugmentation(YangAugmentedInfo augmentInfo);
+
+ /**
+ * Removes augment info from the node.
+ *
+ * @param augmentInfo augment info of node
+ */
+ void removeAugmentation(YangAugmentedInfo augmentInfo);
+
+ /**
+ * Returns list of augment info.
+ *
+ * @return list of augment info
+ */
+ List<YangAugmentedInfo> getAugmentedInfoList();
+}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentationHolder.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentedInfo.java
similarity index 86%
copy from utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentationHolder.java
copy to utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentedInfo.java
index aa2b678..b6e55e6 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentationHolder.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentedInfo.java
@@ -17,7 +17,7 @@
package org.onosproject.yangutils.datamodel;
/**
- * Represents YANG constructs which can be augmented.
+ * Abstraction of an entity which represents YANG augmented info.
*/
-public interface YangAugmentationHolder {
+public interface YangAugmentedInfo {
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
index eb7d6fd..bb3c3cc 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.yangutils.datamodel;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -94,7 +95,7 @@
*/
public class YangCase
extends YangNode
- implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder,
+ implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentableNode,
YangWhenHolder, YangIfFeatureHolder {
private static final long serialVersionUID = 806201603L;
@@ -141,6 +142,8 @@
*/
private List<YangIfFeature> ifFeatureList;
+ private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+
/**
* Creates a choice node.
*/
@@ -392,4 +395,19 @@
public void setIfFeatureList(List<YangIfFeature> ifFeatureList) {
this.ifFeatureList = ifFeatureList;
}
+
+ @Override
+ public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.add(augmentInfo);
+ }
+
+ @Override
+ public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.remove(augmentInfo);
+ }
+
+ @Override
+ public List<YangAugmentedInfo> getAugmentedInfoList() {
+ return yangAugmentedInfo;
+ }
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
index 5262119..5e78d55 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.yangutils.datamodel;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
@@ -63,8 +64,8 @@
* Represents data model node to maintain information defined in YANG choice.
*/
public class YangChoice extends YangNode
- implements YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder, YangWhenHolder,
- YangIfFeatureHolder {
+ implements YangCommonInfo, Parsable, CollisionDetector, YangAugmentableNode,
+ YangWhenHolder, YangIfFeatureHolder {
private static final long serialVersionUID = 806201604L;
@@ -156,6 +157,8 @@
*/
private List<YangIfFeature> ifFeatureList;
+ private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+
/**
* Create a choice node.
*/
@@ -418,4 +421,18 @@
this.ifFeatureList = ifFeatureList;
}
+ @Override
+ public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.add(augmentInfo);
+ }
+
+ @Override
+ public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.remove(augmentInfo);
+ }
+
+ @Override
+ public List<YangAugmentedInfo> getAugmentedInfoList() {
+ return yangAugmentedInfo;
+ }
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
index 7bb34e2..65261cc 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
@@ -16,6 +16,7 @@
package org.onosproject.yangutils.datamodel;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -89,8 +90,8 @@
*/
public class YangContainer
extends YangNode
- implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder,
- YangMustHolder, YangWhenHolder, YangIfFeatureHolder {
+ implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector,
+ YangAugmentableNode, YangMustHolder, YangWhenHolder, YangIfFeatureHolder {
private static final long serialVersionUID = 806201605L;
@@ -130,6 +131,8 @@
*/
private String reference;
+ private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+
/**
* Status of the node.
*/
@@ -518,4 +521,18 @@
getListOfMust().add(must);
}
+ @Override
+ public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.add(augmentInfo);
+ }
+
+ @Override
+ public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.remove(augmentInfo);
+ }
+
+ @Override
+ public List<YangAugmentedInfo> getAugmentedInfoList() {
+ return yangAugmentedInfo;
+ }
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
index 7238a3e..091a15f 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
@@ -16,6 +16,7 @@
package org.onosproject.yangutils.datamodel;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -70,7 +71,7 @@
*/
public class YangInput
extends YangNode
- implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentationHolder {
+ implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentableNode {
private static final long serialVersionUID = 806201608L;
@@ -89,6 +90,8 @@
*/
private List<YangLeafList> listOfLeafList;
+ private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+
/**
* Create a rpc input node.
*/
@@ -171,4 +174,19 @@
public void setName(String name) {
this.name = name;
}
+
+ @Override
+ public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.add(augmentInfo);
+ }
+
+ @Override
+ public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.remove(augmentInfo);
+ }
+
+ @Override
+ public List<YangAugmentedInfo> getAugmentedInfoList() {
+ return yangAugmentedInfo;
+ }
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafRef.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafRef.java
index 6b49fcd..0c3a98f 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafRef.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafRef.java
@@ -43,7 +43,8 @@
*
* @param <T> YANG leafref info
*/
-public class YangLeafRef<T> implements Parsable, Resolvable, Serializable, YangIfFeatureHolder {
+public class YangLeafRef<T> implements Parsable, Resolvable, Serializable, YangIfFeatureHolder,
+ YangXPathResolver {
private static final long serialVersionUID = 286201644L;
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
index d09f8d5..2d28525 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
@@ -16,6 +16,7 @@
package org.onosproject.yangutils.datamodel;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -70,8 +71,8 @@
*/
public class YangList
extends YangNode
- implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder,
- YangMustHolder, YangIfFeatureHolder, YangDataNode {
+ implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector,
+ YangAugmentableNode, YangMustHolder, YangIfFeatureHolder, YangDataNode {
private static final long serialVersionUID = 806201609L;
@@ -127,6 +128,8 @@
*/
private List<YangLeafList> listOfLeafList;
+ private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+
/**
* Reference RFC 6020.
*
@@ -570,8 +573,7 @@
* @throws DataModelException a violation of data model rules
*/
private void validateKey(List<YangLeaf> leaves, List<YangLeafList> leafLists, List<String> keys)
- throws
- DataModelException {
+ throws DataModelException {
boolean leafFound = false;
List<YangLeaf> keyLeaves = new LinkedList<>();
List<YangLeafList> keyLeafLists = new LinkedList<>();
@@ -713,4 +715,19 @@
}
getListOfMust().add(must);
}
+
+ @Override
+ public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.add(augmentInfo);
+ }
+
+ @Override
+ public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.remove(augmentInfo);
+ }
+
+ @Override
+ public List<YangAugmentedInfo> getAugmentedInfoList() {
+ return yangAugmentedInfo;
+ }
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java
index 6e515ad..81bbd41 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java
@@ -201,30 +201,34 @@
private List<YangResolutionInfo> derivedTypeResolutionList;
/**
- * uses resolution list.
+ * Uses resolution list.
*/
private List<YangResolutionInfo> usesResolutionList;
/**
- * if-feature resolution list.
+ * If-feature resolution list.
*/
private List<YangResolutionInfo> ifFeatureResolutionList;
/**
- * leafref resolution list.
+ * Leafref resolution list.
*/
private List<YangResolutionInfo> leafrefResolutionList;
/**
- * base resolution list.
+ * Base resolution list.
*/
private List<YangResolutionInfo> baseResolutionList;
/**
- * identityref resolution list.
+ * Identityref resolution list.
*/
private List<YangResolutionInfo> identityrefResolutionList;
+ /**
+ * Augment resolution list.
+ */
+ private List<YangResolutionInfo> augmentResolutionList;
/**
* Creates a YANG node of module type.
@@ -233,6 +237,7 @@
super(YangNodeType.MODULE_NODE);
derivedTypeResolutionList = new LinkedList<>();
+ augmentResolutionList = new LinkedList<>();
usesResolutionList = new LinkedList<>();
ifFeatureResolutionList = new LinkedList<>();
leafrefResolutionList = new LinkedList<>();
@@ -608,6 +613,8 @@
return derivedTypeResolutionList;
} else if (type == ResolvableType.YANG_USES) {
return usesResolutionList;
+ } else if (type == ResolvableType.YANG_AUGMENT) {
+ return augmentResolutionList;
} else if (type == ResolvableType.YANG_IF_FEATURE) {
return ifFeatureResolutionList;
} else if (type == ResolvableType.YANG_LEAFREF) {
@@ -632,6 +639,8 @@
leafrefResolutionList.add(resolutionInfo);
} else if (type == ResolvableType.YANG_BASE) {
baseResolutionList.add(resolutionInfo);
+ } else if (type == ResolvableType.YANG_AUGMENT) {
+ augmentResolutionList.add(resolutionInfo);
} else if (type == ResolvableType.YANG_IDENTITYREF) {
identityrefResolutionList.add(resolutionInfo);
}
@@ -650,6 +659,8 @@
leafrefResolutionList = resolutionList;
} else if (type == ResolvableType.YANG_BASE) {
baseResolutionList = resolutionList;
+ } else if (type == ResolvableType.YANG_AUGMENT) {
+ augmentResolutionList = resolutionList;
} else if (type == ResolvableType.YANG_IDENTITYREF) {
identityrefResolutionList = resolutionList;
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
index 62ee584..b08fb03 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
@@ -16,6 +16,7 @@
package org.onosproject.yangutils.datamodel;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -76,8 +77,8 @@
*/
public class YangNotification
extends YangNode
- implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder,
- YangIfFeatureHolder {
+ implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector,
+ YangAugmentableNode, YangIfFeatureHolder {
private static final long serialVersionUID = 806201611L;
@@ -116,6 +117,8 @@
*/
private List<YangIfFeature> ifFeatureList;
+ private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+
/**
* Create a notification node.
*/
@@ -245,4 +248,19 @@
public void setIfFeatureList(List<YangIfFeature> ifFeatureList) {
this.ifFeatureList = ifFeatureList;
}
+
+ @Override
+ public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.add(augmentInfo);
+ }
+
+ @Override
+ public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.remove(augmentInfo);
+ }
+
+ @Override
+ public List<YangAugmentedInfo> getAugmentedInfoList() {
+ return yangAugmentedInfo;
+ }
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
index f06ca01..7e14bc8 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
@@ -16,6 +16,7 @@
package org.onosproject.yangutils.datamodel;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@@ -69,7 +70,7 @@
*/
public class YangOutput
extends YangNode
- implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentationHolder {
+ implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentableNode {
private static final long serialVersionUID = 806201612L;
@@ -88,6 +89,8 @@
*/
private List<YangLeafList> listOfLeafList;
+ private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+
/**
* Create a rpc output node.
*/
@@ -170,4 +173,19 @@
public void setName(String name) {
this.name = name;
}
+
+ @Override
+ public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.add(augmentInfo);
+ }
+
+ @Override
+ public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ yangAugmentedInfo.remove(augmentInfo);
+ }
+
+ @Override
+ public List<YangAugmentedInfo> getAugmentedInfoList() {
+ return yangAugmentedInfo;
+ }
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathArgType.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathArgType.java
index 5939829..26e1fb2 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathArgType.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathArgType.java
@@ -20,10 +20,13 @@
*/
public enum YangPathArgType {
- // Absolute path.
+ /**
+ * Absolute path.
+ */
ABSOLUTE_PATH,
- // Relative path.
+ /**
+ * Relative path.
+ */
RELATIVE_PATH
-
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathOperator.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathOperator.java
index 718c30c..0594af8 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathOperator.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathOperator.java
@@ -20,6 +20,8 @@
*/
public enum YangPathOperator {
- // Path expression contains equal to.
+ /**
+ * Path expression contains equal-to.
+ */
EQUALTO
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java
index 498f5e7..438dc1f 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java
@@ -199,36 +199,42 @@
private List<YangResolutionInfo> derivedTypeResolutionList;
/**
- * uses resolution list.
+ * Uses resolution list.
*/
private List<YangResolutionInfo> usesResolutionList;
/**
- * if-feature resolution list.
+ * If-feature resolution list.
*/
private List<YangResolutionInfo> ifFeatureResolutionList;
/**
- * leafref resolution list.
+ * Leafref resolution list.
*/
private List<YangResolutionInfo> leafrefResolutionList;
/**
- * base resolution list.
+ * Base resolution list.
*/
private List<YangResolutionInfo> baseResolutionList;
/**
- * identityref resolution list.
+ * Identityref resolution list.
*/
private List<YangResolutionInfo> identityrefResolutionList;
/**
+ * Augment resolution list.
+ */
+ private List<YangResolutionInfo> augmentResolutionList;
+
+ /**
* Creates a sub module node.
*/
public YangSubModule() {
super(YangNodeType.SUB_MODULE_NODE);
derivedTypeResolutionList = new LinkedList<>();
+ augmentResolutionList = new LinkedList<>();
usesResolutionList = new LinkedList<>();
ifFeatureResolutionList = new LinkedList<>();
leafrefResolutionList = new LinkedList<>();
@@ -569,6 +575,8 @@
return derivedTypeResolutionList;
} else if (type == ResolvableType.YANG_USES) {
return usesResolutionList;
+ } else if (type == ResolvableType.YANG_AUGMENT) {
+ return augmentResolutionList;
} else if (type == ResolvableType.YANG_IF_FEATURE) {
return ifFeatureResolutionList;
} else if (type == ResolvableType.YANG_LEAFREF) {
@@ -593,6 +601,8 @@
leafrefResolutionList.add(resolutionInfo);
} else if (type == ResolvableType.YANG_BASE) {
baseResolutionList.add(resolutionInfo);
+ } else if (type == ResolvableType.YANG_AUGMENT) {
+ augmentResolutionList.add(resolutionInfo);
} else if (type == ResolvableType.YANG_IDENTITYREF) {
identityrefResolutionList.add(resolutionInfo);
}
@@ -611,6 +621,8 @@
leafrefResolutionList = resolutionList;
} else if (type == ResolvableType.YANG_BASE) {
baseResolutionList = resolutionList;
+ } else if (type == ResolvableType.YANG_AUGMENT) {
+ augmentResolutionList = resolutionList;
} else if (type == ResolvableType.YANG_IDENTITYREF) {
identityrefResolutionList = resolutionList;
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentationHolder.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangXPathResolver.java
similarity index 86%
rename from utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentationHolder.java
rename to utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangXPathResolver.java
index aa2b678..db94660 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentationHolder.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangXPathResolver.java
@@ -17,7 +17,7 @@
package org.onosproject.yangutils.datamodel;
/**
- * Represents YANG constructs which can be augmented.
+ * Abstraction of an entity which can be resolved with x-path linker.
*/
-public interface YangAugmentationHolder {
+public interface YangXPathResolver {
}
diff --git a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java
index 489ac5c..410e025 100644
--- a/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java
+++ b/utils/yangutils/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java
@@ -16,12 +16,17 @@
package org.onosproject.yangutils.datamodel.utils;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.onosproject.yangutils.datamodel.CollisionDetector;
import org.onosproject.yangutils.datamodel.ResolvableType;
import org.onosproject.yangutils.datamodel.YangIfFeature;
+import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangBase;
import org.onosproject.yangutils.datamodel.YangIdentityRef;
import org.onosproject.yangutils.datamodel.YangLeaf;
@@ -171,6 +176,10 @@
resolutionNode.addToResolutionList(resolutionInfo,
ResolvableType.YANG_USES);
} else if (resolutionInfo.getEntityToResolveInfo()
+ .getEntityToResolve() instanceof YangAugment) {
+ resolutionNode.addToResolutionList(resolutionInfo,
+ ResolvableType.YANG_AUGMENT);
+ } else if (resolutionInfo.getEntityToResolveInfo()
.getEntityToResolve() instanceof YangIfFeature) {
resolutionNode.addToResolutionList(resolutionInfo,
ResolvableType.YANG_IF_FEATURE);
@@ -272,4 +281,30 @@
*/
return currentNode.getParent();
}
+
+ /**
+ * Returns de-serializes YANG data-model nodes.
+ *
+ * @param serializableInfoSet YANG file info set
+ * @return de-serializes YANG data-model nodes
+ * @throws IOException when fails do IO operations
+ */
+ public static List<YangNode> deSerializeDataModel(List<String> serializableInfoSet) throws IOException {
+
+ List<YangNode> nodes = new ArrayList<>();
+ for (String fileInfo : serializableInfoSet) {
+ YangNode node = null;
+ try {
+ FileInputStream fileInputStream = new FileInputStream(fileInfo);
+ ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
+ node = (YangNode) objectInputStream.readObject();
+ nodes.add(node);
+ objectInputStream.close();
+ fileInputStream.close();
+ } catch (IOException | ClassNotFoundException e) {
+ throw new IOException(fileInfo + " not found.");
+ }
+ }
+ return nodes;
+ }
}