[ONOS-5400][ONOS-5614] identity ref support in yangtools and defect fixes.

Change-Id: Ia1f32a6772e9d468717340953cf7598c61d9f1ed
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index b48f48a..66950b5 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -54,6 +54,7 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_IDENTITY_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_KEY_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
@@ -88,7 +89,6 @@
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getNodesPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
-import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.ERROR_MSG_FOR_GEN_CODE;
 import static org.onosproject.yangutils.utils.UtilConstants.LEAFREF;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
@@ -451,38 +451,41 @@
         switch (genType) {
             case INTERFACE_MASK:
                 appendHeaderContents(file, pkgString, importsList);
-                write(file, genType, INTERFACE, curNode, className);
+                write(file, genType, INTERFACE, curNode, className, false);
+                break;
+            case GENERATE_KEY_CLASS:
+                appendHeaderContents(file, pkgString, importsList);
+                write(file, genType, DEFAULT_CLASS, curNode, className, false);
                 break;
             case DEFAULT_CLASS_MASK:
                 appendHeaderContents(file, pkgString, importsList);
-                write(file, genType, DEFAULT_CLASS, curNode, className);
+                write(file, genType, DEFAULT_CLASS, curNode, className, true);
                 break;
             case BUILDER_CLASS_MASK:
-                write(file, genType, BUILDER_CLASS, curNode, className);
+                write(file, genType, BUILDER_CLASS, curNode, className, false);
                 break;
             case BUILDER_INTERFACE_MASK:
-                write(file, genType, BUILDER_INTERFACE, curNode, className);
+                write(file, genType, BUILDER_INTERFACE, curNode, className, false);
                 break;
             case GENERATE_SERVICE_AND_MANAGER:
                 appendHeaderContents(file, pkgString, importsList);
-                write(file, genType, RPC_INTERFACE, curNode, className);
+                write(file, genType, RPC_INTERFACE, curNode, className, false);
                 break;
             case GENERATE_EVENT_CLASS:
                 appendHeaderContents(file, pkgString, importsList);
-                write(file, genType, EVENT, curNode, className);
+                write(file, genType, EVENT, curNode, className, false);
                 break;
             case GENERATE_EVENT_LISTENER_INTERFACE:
                 appendHeaderContents(file, pkgString, importsList);
-                write(file, genType, EVENT_LISTENER, curNode, className);
+                write(file, genType, EVENT_LISTENER, curNode, className, false);
                 break;
             case GENERATE_EVENT_SUBJECT_CLASS:
                 appendHeaderContents(file, pkgString, importsList);
-                write(file, genType, EVENT_SUBJECT_CLASS, curNode, className);
+                write(file, genType, EVENT_SUBJECT_CLASS, curNode, className, false);
                 break;
             case GENERATE_IDENTITY_CLASS:
                 appendHeaderContents(file, pkgString, importsList);
-                write(file, genType, EVENT_SUBJECT_CLASS, curNode, className);
-                insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET);
+                write(file, genType, EVENT_SUBJECT_CLASS, curNode, className, false);
                 break;
             default:
                 break;
@@ -582,13 +585,14 @@
      * @param javaDocType java doc type
      * @param curNode     current YANG node
      * @param fileName    file name
+     * @param isForClass  is for default class
      * @throws IOException when fails to write into a file
      */
     private static void write(File file, int genType, JavaDocType javaDocType,
-                              YangNode curNode, String fileName)
+                              YangNode curNode, String fileName, boolean isForClass)
             throws IOException {
         insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName,
-                                                false, null));
+                                                isForClass, null));
         insertDataIntoJavaFile(file, generateClassDefinition(genType,
                                                              fileName, curNode));
     }