[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/YangJavaModelUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
index 064229a..136fad5 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
@@ -21,11 +21,13 @@
 import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.datamodel.YangChoice;
+import org.onosproject.yangutils.datamodel.YangGrouping;
 import org.onosproject.yangutils.datamodel.YangInput;
 import org.onosproject.yangutils.datamodel.YangLeavesHolder;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
 import org.onosproject.yangutils.datamodel.YangOutput;
+import org.onosproject.yangutils.datamodel.YangSchemaNode;
 import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
 import org.onosproject.yangutils.datamodel.YangTypeHolder;
 import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
@@ -336,6 +338,16 @@
                                                 info));
         }
 
+        YangSchemaNode node = getRefSchema(info);
+        if (node != null) {
+            YangNode parent = ((YangNode) info).getParent();
+            if (!(parent instanceof YangGrouping)) {
+                addCurNodeInfoInParentTempFile((YangNode) node, isMultiInstance,
+                                               config, parent);
+            }
+            return;
+        }
+
         /*
          * Generate the Java files corresponding to the current node.
          */
@@ -349,6 +361,29 @@
     }
 
     /**
+     * Returns referred schema node in case of grouping uses.
+     *
+     * @param info YANG java file info node
+     * @return referred schema node
+     */
+    private static YangSchemaNode getRefSchema(JavaCodeGeneratorInfo info) {
+
+        YangSchemaNode node = ((YangSchemaNode) info);
+        if (node.getReferredSchema() == null) {
+            return null;
+        }
+
+        /*
+         * Obtain last referred node in case grouping is embedded inside
+         * another grouping.
+         */
+        while (node.getReferredSchema() != null) {
+            node = node.getReferredSchema();
+        }
+        return node;
+    }
+
+    /**
      * Generates code for the current data model node and adds support for it to
      * be augmented.
      *