YANG leaf prefix defect fix + YANG augment and choice support in YMS
Change-Id: I271735ca879bff8b43229cf8f59d2f60b27d7750
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
index d381fd4..5010315 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
@@ -24,7 +24,8 @@
import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
import org.onosproject.yangutils.datamodel.utils.YangConstructType;
-import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil;
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils
+ .detectCollidingChildUtil;
/*-
* Reference RFC 6020.
@@ -79,12 +80,14 @@
*/
/**
- * Representation of data model node to maintain information defined in YANG augment.
+ * Representation of data model node to maintain information defined in YANG
+ * augment.
*/
public abstract class YangAugment
extends YangNode
- implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, Resolvable,
- YangXPathResolver, YangWhenHolder, YangIfFeatureHolder {
+ implements YangLeavesHolder, YangCommonInfo, Parsable,
+ CollisionDetector, Resolvable,
+ YangXPathResolver, YangWhenHolder, YangIfFeatureHolder {
private static final long serialVersionUID = 806201602L;
@@ -124,8 +127,10 @@
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
+ * 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;
@@ -153,14 +158,19 @@
}
@Override
- public void addToChildSchemaMap(YangSchemaNodeIdentifier schemaNodeIdentifier,
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo)
+ public void addToChildSchemaMap(
+ YangSchemaNodeIdentifier schemaNodeIdentifier,
+ YangSchemaNodeContextInfo yangSchemaNodeContextInfo)
throws DataModelException {
- getYsnContextInfoMap().put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo1 = new YangSchemaNodeContextInfo();
- yangSchemaNodeContextInfo1.setSchemaNode(yangSchemaNodeContextInfo.getSchemaNode());
+ getYsnContextInfoMap()
+ .put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
+ YangSchemaNodeContextInfo yangSchemaNodeContextInfo1 =
+ new YangSchemaNodeContextInfo();
+ yangSchemaNodeContextInfo1
+ .setSchemaNode(yangSchemaNodeContextInfo.getSchemaNode());
yangSchemaNodeContextInfo1.setContextSwitchedNode(this);
- getAugmentedNode().addToChildSchemaMap(schemaNodeIdentifier, yangSchemaNodeContextInfo1);
+ getAugmentedNode().addToChildSchemaMap(schemaNodeIdentifier,
+ yangSchemaNodeContextInfo1);
}
@Override
@@ -182,13 +192,18 @@
}
@Override
- public void addToDefaultChildMap(YangSchemaNodeIdentifier yangSchemaNodeIdentifier, YangSchemaNode yangSchemaNode) {
+ public void addToDefaultChildMap(
+ YangSchemaNodeIdentifier yangSchemaNodeIdentifier,
+ YangSchemaNode yangSchemaNode) {
// TODO
}
@Override
public YangSchemaNodeType getYangSchemaNodeType() {
- return YangSchemaNodeType.YANG_NON_DATA_NODE;
+ /*
+ * Augment node to switch the name space in YMS
+ */
+ return YangSchemaNodeType.YANG_AUGMENT_NODE;
}
/**
@@ -250,21 +265,25 @@
}
@Override
- public void detectCollidingChild(String identifierName, YangConstructType dataType)
+ public void detectCollidingChild(String identifierName,
+ YangConstructType dataType)
throws DataModelException {
// Detect colliding child.
detectCollidingChildUtil(identifierName, dataType, this);
}
@Override
- public void detectSelfCollision(String identifierName, YangConstructType dataType)
+ public void detectSelfCollision(String identifierName,
+ YangConstructType dataType)
throws DataModelException {
if (getName().equals(identifierName)) {
- throw new DataModelException("YANG file error: Duplicate input identifier detected, same as input \"" +
- getName() + " in " +
- getLineNumber() + " at " +
- getCharPosition() +
- " in " + getFileName() + "\"");
+ throw new DataModelException(
+ "YANG file error: Duplicate input identifier detected, " +
+ "same as input \"" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
@@ -336,7 +355,8 @@
}
// Add namespace for all leaf list.
for (YangLeafList yangLeafList : getListOfLeafList()) {
- yangLeafList.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
+ yangLeafList
+ .setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
}
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 cd08573..e864d1e 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
@@ -24,10 +24,14 @@
import org.onosproject.yangutils.datamodel.utils.Parsable;
import org.onosproject.yangutils.datamodel.utils.YangConstructType;
-import static org.onosproject.yangutils.datamodel.utils.YangConstructType.CHOICE_DATA;
-import static org.onosproject.yangutils.datamodel.utils.YangErrMsgConstants.DATA_MISSING_ERROR_TAG;
-import static org.onosproject.yangutils.datamodel.utils.YangErrMsgConstants.ERROR_PATH_MISSING_CHOICE;
-import static org.onosproject.yangutils.datamodel.utils.YangErrMsgConstants.MISSING_CHOICE_ERROR_APP_TAG;
+import static org.onosproject.yangutils.datamodel.utils.YangConstructType
+ .CHOICE_DATA;
+import static org.onosproject.yangutils.datamodel.utils.YangErrMsgConstants
+ .DATA_MISSING_ERROR_TAG;
+import static org.onosproject.yangutils.datamodel.utils.YangErrMsgConstants
+ .ERROR_PATH_MISSING_CHOICE;
+import static org.onosproject.yangutils.datamodel.utils.YangErrMsgConstants
+ .MISSING_CHOICE_ERROR_APP_TAG;
/*-
* Reference RFC 6020.
@@ -70,8 +74,10 @@
*/
public abstract class YangChoice
extends YangNode
- implements YangCommonInfo, Parsable, CollisionDetector, YangAugmentableNode,
- YangWhenHolder, YangIfFeatureHolder, YangAppErrorHolder, YangIsFilterContentNodes, YangConfig {
+ implements YangCommonInfo, Parsable, CollisionDetector,
+ YangAugmentableNode,
+ YangWhenHolder, YangIfFeatureHolder, YangAppErrorHolder,
+ YangIsFilterContentNodes, YangConfig {
private static final long serialVersionUID = 806201604L;
@@ -172,14 +178,19 @@
}
@Override
- public void addToChildSchemaMap(YangSchemaNodeIdentifier schemaNodeIdentifier,
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo)
+ public void addToChildSchemaMap(
+ YangSchemaNodeIdentifier schemaNodeIdentifier,
+ YangSchemaNodeContextInfo yangSchemaNodeContextInfo)
throws DataModelException {
- getYsnContextInfoMap().put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo1 = new YangSchemaNodeContextInfo();
- yangSchemaNodeContextInfo1.setSchemaNode(yangSchemaNodeContextInfo.getSchemaNode());
+ getYsnContextInfoMap()
+ .put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
+ YangSchemaNodeContextInfo yangSchemaNodeContextInfo1 =
+ new YangSchemaNodeContextInfo();
+ yangSchemaNodeContextInfo1
+ .setSchemaNode(yangSchemaNodeContextInfo.getSchemaNode());
yangSchemaNodeContextInfo1.setContextSwitchedNode(this);
- getParent().addToChildSchemaMap(schemaNodeIdentifier, yangSchemaNodeContextInfo1);
+ getParent().addToChildSchemaMap(schemaNodeIdentifier,
+ yangSchemaNodeContextInfo1);
}
@Override
@@ -197,14 +208,17 @@
}
@Override
- public void addToDefaultChildMap(YangSchemaNodeIdentifier yangSchemaNodeIdentifier, YangSchemaNode yangSchemaNode) {
+ public void addToDefaultChildMap(
+ YangSchemaNodeIdentifier yangSchemaNodeIdentifier,
+ YangSchemaNode yangSchemaNode) {
//For non data nodes, default child to be added to parent node.
// TODO
}
@Override
public YangSchemaNodeType getYangSchemaNodeType() {
- return YangSchemaNodeType.YANG_NON_DATA_NODE;
+ /*Choice node to be skipped in YANG data tree preperation*/
+ return YangSchemaNodeType.YANG_CHOICE_NODE;
}
/**
@@ -378,7 +392,8 @@
// Check whether default string matches the case
while (node != null) {
if (node instanceof YangCase) {
- if (defaultValueInString.equals(((YangCase) node).getName())) {
+ if (defaultValueInString
+ .equals(((YangCase) node).getName())) {
matched = true;
break;
}
@@ -387,36 +402,46 @@
}
if (!matched) {
- throw new DataModelException("YANG file error: default string \"" + defaultValueInString
- + "\" not matching choice \"" + getName() + "\" case.");
+ throw new DataModelException(
+ "YANG file error: default string \"" +
+ defaultValueInString
+ + "\" not matching choice \"" + getName() +
+ "\" case.");
}
}
}
@Override
- public void detectCollidingChild(String identifierName, YangConstructType dataType)
+ public void detectCollidingChild(String identifierName,
+ YangConstructType dataType)
throws DataModelException {
- if (getParent() instanceof YangCase && dataType != YangConstructType.CASE_DATA) {
- ((CollisionDetector) getParent()).detectCollidingChild(identifierName, dataType);
+ if (getParent() instanceof YangCase &&
+ dataType != YangConstructType.CASE_DATA) {
+ ((CollisionDetector) getParent())
+ .detectCollidingChild(identifierName, dataType);
}
YangNode node = getChild();
while (node != null) {
if (node instanceof CollisionDetector) {
- ((CollisionDetector) node).detectSelfCollision(identifierName, dataType);
+ ((CollisionDetector) node)
+ .detectSelfCollision(identifierName, dataType);
}
node = node.getNextSibling();
}
}
@Override
- public void detectSelfCollision(String identifierName, YangConstructType dataType)
+ public void detectSelfCollision(String identifierName,
+ YangConstructType dataType)
throws DataModelException {
if (dataType == CHOICE_DATA) {
if (getName().equals(identifierName)) {
- throw new DataModelException("YANG file error: Identifier collision detected in choice \"" +
- getName() + "\"");
+ throw new DataModelException(
+ "YANG file error: Identifier collision detected in " +
+ "choice \"" +
+ getName() + "\"");
}
return;
}
@@ -424,7 +449,8 @@
YangNode node = getChild();
while (node != null) {
if (node instanceof CollisionDetector) {
- ((CollisionDetector) node).detectSelfCollision(identifierName, dataType);
+ ((CollisionDetector) node)
+ .detectSelfCollision(identifierName, dataType);
}
node = node.getNextSibling();
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeType.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeType.java
index 03d0c6f..89a8c10 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeType.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeType.java
@@ -51,5 +51,16 @@
/**
* Represents node which is not a data node.
*/
- YANG_NON_DATA_NODE
+ YANG_NON_DATA_NODE,
+
+ /**
+ * Represents node which cannot be instantiated.
+ */
+ YANG_CHOICE_NODE,
+
+ /**
+ * Represents the Augmented Node.
+ */
+ YANG_AUGMENT_NODE
+
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
index 4ffd942..25535e2 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
@@ -22,22 +22,28 @@
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType;
-import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
+import org.onosproject.yangutils.translator.tojava.javamodel
+ .AttributesJavaDataType;
+import org.onosproject.yangutils.translator.tojava.javamodel
+ .JavaLeafInfoContainer;
import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import com.google.common.base.MoreObjects;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
-import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportClass;
-import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportPackage;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype
+ .YangDataTypes.BINARY;
+import static org.onosproject.yangutils.translator.tojava.javamodel
+ .AttributesJavaDataType.getJavaImportClass;
+import static org.onosproject.yangutils.translator.tojava.javamodel
+ .AttributesJavaDataType.getJavaImportPackage;
import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS;
/**
* Represents the information about individual imports in the generated file.
*/
-public class JavaQualifiedTypeInfoTranslator extends JavaQualifiedTypeInfo
+public class JavaQualifiedTypeInfoTranslator
+ extends JavaQualifiedTypeInfo
implements Comparable<JavaQualifiedTypeInfoTranslator>, Serializable {
private static final long serialVersionUID = 806201634L;
@@ -89,21 +95,27 @@
*
* @param leaf leaf whose java information is being updated
*/
- public static void updateLeavesJavaQualifiedInfo(JavaLeafInfoContainer leaf) {
+ public static void updateLeavesJavaQualifiedInfo(
+ JavaLeafInfoContainer leaf) {
- JavaQualifiedTypeInfoTranslator importInfo = (JavaQualifiedTypeInfoTranslator) leaf.getJavaQualifiedInfo();
+ JavaQualifiedTypeInfoTranslator importInfo =
+ (JavaQualifiedTypeInfoTranslator) leaf.getJavaQualifiedInfo();
if (leaf.getDataType() == null) {
- throw new TranslatorException("missing data type of leaf " + leaf.getName()
- + " in " + leaf.getLineNumber() + " at" + leaf.getCharPosition() + " in " + leaf.getFileName());
+ throw new TranslatorException(
+ "missing data type of leaf " + leaf.getName()
+ + " in " + leaf.getLineNumber() + " at" +
+ leaf.getCharPosition() + " in " +
+ leaf.getFileName());
}
/*
* Current leaves holder is adding a leaf info as a attribute to the
* current class.
*/
- String className = getJavaImportClass(leaf.getDataType(), leaf.isLeafList(),
- leaf.getConflictResolveConfig());
+ String className =
+ getJavaImportClass(leaf.getDataType(), leaf.isLeafList(),
+ leaf.getConflictResolveConfig());
if (className != null) {
/*
* Corresponding to the attribute type a class needs to be imported,
@@ -111,11 +123,16 @@
*/
importInfo.setClassInfo(className);
String classPkg = getJavaImportPackage(leaf.getDataType(),
- leaf.isLeafList(), leaf.getConflictResolveConfig());
+ leaf.isLeafList(),
+ leaf.getConflictResolveConfig());
if (classPkg == null) {
- throw new TranslatorException("import package cannot be null when the class is used for "
- + leaf.getName()
- + " in " + leaf.getLineNumber() + " at" + leaf.getCharPosition() + " in " + leaf.getFileName());
+ throw new TranslatorException(
+ "import package cannot be null when the class is used" +
+ " for "
+ + leaf.getName()
+ + " in " + leaf.getLineNumber() + " at" +
+ leaf.getCharPosition() + " in " +
+ leaf.getFileName());
}
importInfo.setPkgInfo(classPkg);
} else {
@@ -123,43 +140,56 @@
* The attribute does not need a class to be imported, for example
* built in java types.
*/
- String dataTypeName = AttributesJavaDataType.getJavaDataType(leaf.getDataType());
+ String dataTypeName =
+ AttributesJavaDataType.getJavaDataType(leaf.getDataType());
if (dataTypeName == null) {
throw new TranslatorException("not supported data type for "
- + leaf.getName()
- + " in " + leaf.getLineNumber() + " at" + leaf.getCharPosition() + " in " + leaf.getFileName());
+ + leaf.getName()
+ + " in " +
+ leaf.getLineNumber() +
+ " at" +
+ leaf.getCharPosition() +
+ " in " +
+ leaf.getFileName());
}
importInfo.setClassInfo(dataTypeName);
}
- leaf.getJavaQualifiedInfo().setJavaAttributeName(leaf.getJavaName(null));
+ leaf.getJavaQualifiedInfo().setJavaAttributeName(leaf.getJavaName(
+ leaf.getConflictResolveConfig()));
}
/**
* Returns the import info for an attribute, which needs to be used for code
* generation for import or for qualified access.
*
- * @param curNode current data model node for which the java file is being
+ * @param curNode current data model node for which the java file
+ * is being
* generated
* @param attributeName name of the attribute being added, it will used in
* import info for child class
* @return return the import info for this attribute
*/
- public static JavaQualifiedTypeInfoTranslator getQualifiedTypeInfoOfCurNode(YangNode curNode,
- String attributeName) {
+ public static JavaQualifiedTypeInfoTranslator getQualifiedTypeInfoOfCurNode(
+ YangNode curNode,
+ String attributeName) {
- JavaQualifiedTypeInfoTranslator importInfo = new JavaQualifiedTypeInfoTranslator();
+ JavaQualifiedTypeInfoTranslator importInfo =
+ new JavaQualifiedTypeInfoTranslator();
if (!(curNode instanceof JavaFileInfoContainer)) {
- throw new TranslatorException("missing java file information to get the package details "
- + "of attribute corresponding to child node " + curNode.getName() +
- " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition() + " in " +
- curNode.getFileName());
+ throw new TranslatorException(
+ "missing java file information to get the package details "
+ + "of attribute corresponding to child node " +
+ curNode.getName() +
+ " in " + curNode.getLineNumber() + " at " +
+ curNode.getCharPosition() + " in " +
+ curNode.getFileName());
}
importInfo.setClassInfo(attributeName);
importInfo.setPkgInfo(((JavaFileInfoContainer) curNode)
- .getJavaFileInfo().getPackage());
+ .getJavaFileInfo().getPackage());
return importInfo;
}
@@ -171,23 +201,28 @@
* @param conflictResolver plugin configurations
* @return return the import info for this attribute
*/
- static JavaQualifiedTypeInfoTranslator getQualifiedInfoOfFromString(JavaAttributeInfo referredTypesAttrInfo,
- YangToJavaNamingConflictUtil conflictResolver) {
+ static JavaQualifiedTypeInfoTranslator getQualifiedInfoOfFromString(
+ JavaAttributeInfo referredTypesAttrInfo,
+ YangToJavaNamingConflictUtil conflictResolver) {
/*
* Get the java qualified type information for the wrapper classes and
* set it in new java attribute information.
*/
- JavaQualifiedTypeInfoTranslator qualifiedInfoOfFromString = new JavaQualifiedTypeInfoTranslator();
+ JavaQualifiedTypeInfoTranslator qualifiedInfoOfFromString =
+ new JavaQualifiedTypeInfoTranslator();
if (referredTypesAttrInfo.getAttributeType().getDataType() == BINARY) {
qualifiedInfoOfFromString.setClassInfo(BASE64);
qualifiedInfoOfFromString.setPkgInfo(COLLECTION_IMPORTS);
} else {
qualifiedInfoOfFromString.setClassInfo(
- getJavaImportClass(referredTypesAttrInfo.getAttributeType(), true, conflictResolver));
+ getJavaImportClass(referredTypesAttrInfo.getAttributeType(),
+ true, conflictResolver));
qualifiedInfoOfFromString.setPkgInfo(
- getJavaImportPackage(referredTypesAttrInfo.getAttributeType(), true, conflictResolver));
+ getJavaImportPackage(
+ referredTypesAttrInfo.getAttributeType(), true,
+ conflictResolver));
}
return qualifiedInfoOfFromString;
}
@@ -204,7 +239,8 @@
return true;
}
if (obj instanceof JavaQualifiedTypeInfoTranslator) {
- JavaQualifiedTypeInfoTranslator other = (JavaQualifiedTypeInfoTranslator) obj;
+ JavaQualifiedTypeInfoTranslator other =
+ (JavaQualifiedTypeInfoTranslator) obj;
return Objects.equals(pkgInfo, other.pkgInfo) &&
Objects.equals(classInfo, other.classInfo);
}