[ONOS-5330] Code-Reusability by generating code for Grouping rather then uses
Change-Id: I80a7d5c92a47e30c5ea0fe45c407a8246d9994d7
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index 2d9538f..e22465c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -489,11 +489,11 @@
/**
* Appends all the contents into a generated java file.
*
- * @param file generated file
- * @param fileName generated file name
- * @param genType generated file type
- * @param importsList list of java imports
- * @param pkg generated file package
+ * @param file generated file
+ * @param fileName generated file name
+ * @param genType generated file type
+ * @param importsList list of java imports
+ * @param pkg generated file package
* @throws IOException when fails to append contents
*/
private static void appendContents(File file, String fileName, int genType,
@@ -794,9 +794,13 @@
public static String isTypeNameLeafref(String attributeName,
YangType<?> attributeType) {
if (attributeName.equalsIgnoreCase(LEAFREF)) {
- return attributeType.getDataTypeName();
+ YangLeafRef leafRef = (YangLeafRef) attributeType.getDataTypeExtendedInfo();
+ if (!leafRef.isInGrouping()) {
+ return attributeType.getDataTypeName();
+ }
}
return attributeName;
+ // TODO handle union scenario, having multiple leafref.
}
/**
@@ -809,7 +813,9 @@
if (attributeType.getDataType() == YangDataTypes.LEAFREF) {
YangLeafRef leafRef = (YangLeafRef) attributeType
.getDataTypeExtendedInfo();
- return leafRef.getEffectiveDataType();
+ if (!leafRef.isInGrouping()) {
+ return leafRef.getEffectiveDataType();
+ }
}
return attributeType;
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
index e7e83f4..e1b4913 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
@@ -216,16 +216,27 @@
getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
attributeName);
} else if (dataType.getDataType() == LEAFREF) {
- YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo())
- .getEffectiveDataType();
- if (StringGenerator.isPrimitiveDataType(type.getDataType())) {
- attrQualifiedType =
- getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
- attributeName);
- } else {
+
+ // When leafref in grouping.
+ if (((YangLeafRef) dataType.getDataTypeExtendedInfo())
+ .isInGrouping()) {
attrQualifiedType =
getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
attributeName);
+ } else {
+
+ YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo())
+ .getEffectiveDataType();
+
+ if (StringGenerator.isPrimitiveDataType(type.getDataType())) {
+ attrQualifiedType =
+ getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
+ attributeName);
+ } else {
+ attrQualifiedType =
+ getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
+ attributeName);
+ }
}
} else {
attrQualifiedType =