[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 =