[ONOS-4411,ONOS-4413,ONOS-4526] Yang Enumeration Translator and Defect fixes.

Change-Id: Ie5b6b5d6d6df283a57ae06b1979f0d03022f3baf
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
index 6c91f4f..606fc3d 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
@@ -38,6 +38,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
 import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
 import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
@@ -45,7 +46,6 @@
 import static org.onosproject.yangutils.utils.UtilConstants.LONG;
 import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW;
-import static org.onosproject.yangutils.utils.UtilConstants.OF;
 import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
 import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
 import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
@@ -146,7 +146,7 @@
             case BINARY:
                 //TODO:BINARY
             case DERIVED:
-                return targetDataType + PERIOD + OF;
+                return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
             default:
                 throw new TranslatorException("given data type is not supported.");
         }
@@ -316,8 +316,7 @@
         } else {
             switch (type) {
                 case UINT64:
-                    //TODO: BIGINTEGER.
-                    break;
+                    return JAVA_MATH;
                 case DECIMAL64:
                     //TODO: DECIMAL64
                     break;
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index 5cfb777..9f12346 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -74,7 +74,7 @@
         if ((genFileTypes & INTERFACE_MASK) != 0) {
             return getInterfaceDefinition(yangName);
         } else if ((genFileTypes & BUILDER_CLASS_MASK) != 0) {
-            return getBuilderClassDefinition(yangName, genFileTypes);
+            return getBuilderClassDefinition(yangName);
         } else if ((genFileTypes & IMPL_CLASS_MASK) != 0) {
             return getImplClassDefinition(yangName);
         } else if ((genFileTypes & BUILDER_INTERFACE_MASK) != 0) {
@@ -142,14 +142,9 @@
      * @param genFileTypes
      * @return definition
      */
-    private static String getBuilderClassDefinition(String yangName, int genFileTypes) {
-        if ((genFileTypes & GENERATE_SERVICE_AND_MANAGER) != 0) {
-            return PUBLIC + SPACE + CLASS + SPACE + yangName + MANAGER + SPACE + IMPLEMENTS + SPACE + yangName +
-                    SERVICE + PERIOD + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-        } else {
-            return PUBLIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE + IMPLEMENTS + SPACE + yangName + PERIOD
-                    + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
-        }
+    private static String getBuilderClassDefinition(String yangName) {
+        return PUBLIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE + IMPLEMENTS + SPACE + yangName + PERIOD
+                + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -180,7 +175,11 @@
      * @return definition
      */
     private static String getRpcInterfaceDefinition(String yangName) {
-        return INTERFACE + SPACE + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        if (yangName.contains(SERVICE)) {
+            return PUBLIC + SPACE + INTERFACE + SPACE + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        }
+        return PUBLIC + SPACE + CLASS + SPACE + yangName + MANAGER + SPACE + IMPLEMENTS + SPACE + yangName + SERVICE
+                + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -195,7 +194,7 @@
         if (classDef.length() < 5) {
             throw new RuntimeException("Event class name is error");
         }
-        classDef = classDef.substring(0, (classDef.length() - 5));
+        classDef = classDef.substring(0, classDef.length() - 5);
         classDef = classDef + ">" + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
 
         return classDef;
@@ -213,7 +212,7 @@
         if (intfDef.length() < 8) {
             throw new RuntimeException("Event listener interface name is error");
         }
-        intfDef = intfDef.substring(0, (intfDef.length() - 8));
+        intfDef = intfDef.substring(0, intfDef.length() - 8);
         intfDef = intfDef + "Event>" + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
 
         return intfDef;
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 1942b01..189a329 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -19,7 +19,6 @@
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
 
 import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
 import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
@@ -87,11 +86,6 @@
      * @return corresponding textual java code information
      */
     public static String getJavaClassDefStart(int genFileTypes, String yangName) {
-
-        /*
-         * get the camel case name for java class / interface.
-         */
-        yangName = getCamelCase(yangName, null);
         return generateClassDefinition(genFileTypes, yangName);
     }
 
@@ -168,8 +162,9 @@
      * @return string for enum's attribute
      */
     public static String generateEnumAttributeString(String name, int value) {
-        return getJavaDoc(ENUM_ATTRIBUTE, name, false) + FOUR_SPACE_INDENTATION + getEnumJavaAttribute(name)
-                + OPEN_PARENTHESIS + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
+        return getJavaDoc(ENUM_ATTRIBUTE, name, false) + FOUR_SPACE_INDENTATION
+                + getEnumJavaAttribute(name).toUpperCase() + OPEN_PARENTHESIS
+                + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
     }
 
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index 26487d8..3edf5c0 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -25,6 +25,7 @@
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
+import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.javamodel.JavaCodeGeneratorInfo;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
@@ -62,6 +63,7 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentInfoListImpl;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructorStart;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsConstrcutor;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsOfMethod;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethodClose;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethodOpen;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethodClose;
@@ -84,7 +86,6 @@
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
-import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
 import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
@@ -164,7 +165,8 @@
      * @return interface file
      * @throws IOException when fails to write in file
      */
-    public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode, boolean isAttrPresent)
+    public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode,
+            boolean isAttrPresent)
             throws IOException {
 
         JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -311,7 +313,8 @@
         /**
          * Add default constructor and build method impl.
          */
-        methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().addBuildMethodImpl());
+        methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+                .addBuildMethodImpl());
         methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
                 .addDefaultConstructor(PUBLIC, BUILDER));
 
@@ -340,42 +343,45 @@
 
         JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
 
-        String className = getCaptialCase(javaFileInfo.getJavaName()) + MANAGER;
+        String className = getCaptialCase(javaFileInfo.getJavaName());
         String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
 
         initiateJavaFileGeneration(file, className, GENERATE_SERVICE_AND_MANAGER, imports, path);
 
         List<String> methods = new ArrayList<>();
 
-        if (isAttrPresent) {
-
-            try {
+        try {
+            if (isAttrPresent) {
                 /**
                  * Getter methods.
                  */
-                methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
-                        ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
-                                .getServiceTempFiles()));
+                methods.add(
+                        getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
+                                ((TempJavaCodeFragmentFilesContainer) curNode)
+                                        .getTempJavaCodeFragmentFiles().getServiceTempFiles()));
                 /**
                  * Setter methods.
                  */
-                methods.add(getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK,
-                        ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
-                                .getServiceTempFiles()) +
-                        NEW_LINE);
+                methods.add(
+                        getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK,
+                                ((TempJavaCodeFragmentFilesContainer) curNode)
+                                        .getTempJavaCodeFragmentFiles().getServiceTempFiles())
+                                + NEW_LINE);
 
+            }
+            if (((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getServiceTempFiles() != null) {
                 JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
                 /**
                  * Rpc methods
                  */
-                methods.add(getDataFromTempFileHandle(RPC_IMPL_MASK, javaGeninfo.getTempJavaCodeFragmentFiles()
-                        .getServiceTempFiles()));
-            } catch (IOException e) {
-                throw new IOException("No data found in temporary java code fragment files for " + className
-                        + " while manager class file generation");
+                methods.add(getDataFromTempFileHandle(RPC_IMPL_MASK,
+                        javaGeninfo.getTempJavaCodeFragmentFiles().getServiceTempFiles()));
             }
-        } else {
             insertDataIntoJavaFile(file, NEW_LINE);
+
+        } catch (IOException e) {
+            throw new IOException("No data found in temporary java code fragment files for " + className
+                    + " while manager class file generation");
         }
 
         /**
@@ -746,16 +752,34 @@
         /**
          * Add a constructor for enum.
          */
-        insertDataIntoJavaFile(file,
-                getJavaDoc(TYPE_CONSTRUCTOR, getSmallCase(className), false) + getEnumsConstrcutor(className)
-                        + NEW_LINE);
+        insertDataIntoJavaFile(file, getJavaDoc(TYPE_CONSTRUCTOR, getSmallCase(className), false)
+                + getEnumsConstrcutor(className) + NEW_LINE);
+
+        TempJavaEnumerationFragmentFiles enumFragFiles =
+                ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+                        .getEnumerationTempFiles();
+        insertDataIntoJavaFile(file, getEnumsOfMethod(className,
+                enumFragFiles.getJavaAttributeForEnum(),
+                enumFragFiles.getEnumSetJavaMap(),
+                enumFragFiles.getEnumStringList())
+                + NEW_LINE);
 
         /**
          * Add a getter method for enum.
          */
-        insertDataIntoJavaFile(file,
-                getJavaDoc(GETTER_METHOD, getSmallCase(className), false)
-                        + getGetter(INT, getSmallCase(className), GENERATE_SERVICE_AND_MANAGER) + NEW_LINE);
+        insertDataIntoJavaFile(file, getJavaDoc(GETTER_METHOD, getSmallCase(className), false)
+                + getGetter(INT, getSmallCase(className), GENERATE_ENUM_CLASS) + NEW_LINE);
+
+        try {
+            insertDataIntoJavaFile(file, getFromStringMethodSignature(className)
+                    + getDataFromTempFileHandle(FROM_STRING_IMPL_MASK,
+                            ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+                                    .getEnumerationTempFiles())
+                    + getFromStringMethodClose());
+        } catch (IOException e) {
+            throw new IOException("No data found in temporary java code fragment files for " + className
+                    + " while enum class file generation");
+        }
 
         insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
 
@@ -785,33 +809,30 @@
 
         List<String> methods = new ArrayList<>();
 
-
         try {
             if (isAttributePresent) {
 
                 /**
                  * Getter methods.
                  */
-                methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
+                methods.add(getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
                         ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
                                 .getServiceTempFiles()));
                 /**
                  * Setter methods.
                  */
-                methods.add(NEW_LINE);
-                methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK,
+                methods.add(getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK,
                         ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
                                 .getServiceTempFiles()));
             }
-
-
-            JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
-            /**
-             * Rpc methods
-             */
-            methods.add(getDataFromTempFileHandle(RPC_INTERFACE_MASK, javaGeninfo.getTempJavaCodeFragmentFiles()
-                    .getServiceTempFiles()));
-
+            if (((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getServiceTempFiles() != null) {
+                JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
+                /**
+                 * Rpc methods
+                 */
+                methods.add(getDataFromTempFileHandle(RPC_INTERFACE_MASK,
+                        javaGeninfo.getTempJavaCodeFragmentFiles().getServiceTempFiles()));
+            }
         } catch (IOException e) {
             throw new IOException("No data found in temporary java code fragment files for " + className
                     + " while rpc class file generation");
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index 1304706..4f363d8 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -23,6 +23,7 @@
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
+import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
@@ -39,6 +40,7 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ATTRIBUTES_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_FOR_TYPE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
@@ -58,13 +60,16 @@
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
+import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.ORG;
 import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE;
 import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_CLASS;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_INTERFACE;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_CLASS;
@@ -73,7 +78,7 @@
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.IMPL_CLASS;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.INTERFACE;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_INTERFACE;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_MANAGER;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
 
 /**
@@ -105,7 +110,6 @@
      * Returns data stored in temporary files.
      *
      * @param generatedTempFiles temporary file types
-     * @param generatedTempFiles temporary file types
      * @param tempJavaFragmentFiles temp java fragment files
      * @return data stored in temporary files
      * @throws IOException when failed to get the data from temporary file handle
@@ -130,9 +134,10 @@
         if (tempJavaFragmentFiles instanceof TempJavaServiceFragmentFiles) {
             serviceFragmentFiles = (TempJavaServiceFragmentFiles) tempJavaFragmentFiles;
         }
-
-
-        if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
+        if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) {
+            return tempJavaFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAttributesTempFileHandle());
+        } else if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
             return tempJavaFragmentFiles
                     .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterInterfaceTempFileHandle());
         } else if ((generatedTempFiles & SETTER_FOR_INTERFACE_MASK) != 0) {
@@ -172,14 +177,16 @@
             return typeFragmentFiles
                     .getTemporaryDataFromFileHandle(typeFragmentFiles.getConstructorForTypeTempFileHandle());
         } else if ((generatedTempFiles & FROM_STRING_IMPL_MASK) != 0) {
-            if (typeFragmentFiles == null) {
-                throw new TranslatorException("Required from string info is missing.");
-            }
-            return typeFragmentFiles
-                    .getTemporaryDataFromFileHandle(typeFragmentFiles.getFromStringImplTempFileHandle());
-        } else if ((generatedTempFiles & ENUM_IMPL_MASK) != 0) {
             return tempJavaFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getEnumClassTempFileHandle());
+                    .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getFromStringImplTempFileHandle());
+        } else if ((generatedTempFiles & ENUM_IMPL_MASK) != 0) {
+            if (!(tempJavaFragmentFiles instanceof TempJavaEnumerationFragmentFiles)) {
+                throw new TranslatorException("Required enum info is missing.");
+            }
+            TempJavaEnumerationFragmentFiles enumFragmentFiles =
+                    (TempJavaEnumerationFragmentFiles) tempJavaFragmentFiles;
+            return enumFragmentFiles
+                    .getTemporaryDataFromFileHandle(enumFragmentFiles.getEnumClassTempFileHandle());
         } else if ((generatedTempFiles & RPC_INTERFACE_MASK) != 0) {
             if (serviceFragmentFiles == null) {
                 throw new TranslatorException("Required rpc interface info is missing.");
@@ -328,7 +335,15 @@
      */
     private static void write(File file, String fileName, int genType, JavaDocType javaDocType)
             throws IOException {
-        insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
+        if ((genType & GENERATE_SERVICE_AND_MANAGER) != 0) {
+            if (!fileName.contains(SERVICE)) {
+                insertDataIntoJavaFile(file, getJavaDoc(RPC_MANAGER, fileName + MANAGER, false));
+            } else {
+                insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
+            }
+        } else {
+            insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
+        }
         insertDataIntoJavaFile(file, getJavaClassDefStart(genType, fileName));
     }
 
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index c4da89a..b98b71c 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -16,6 +16,9 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
+import java.util.List;
+import java.util.Map;
+
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
 import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
 
@@ -31,12 +34,15 @@
 import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.CASE;
 import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
 import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
+import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
@@ -82,6 +88,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
 import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
+import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
 import static org.onosproject.yangutils.utils.UtilConstants.THIS;
 import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
 import static org.onosproject.yangutils.utils.UtilConstants.TO;
@@ -494,10 +501,11 @@
 
         rpcName = getSmallCase(getCamelCase(rpcName, null));
         inputName = getCaptialCase(inputName);
-        outputName = getCaptialCase(outputName);
-
-        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName + OPEN_PARENTHESIS
-                + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
+        if (!outputName.equals(VOID)) {
+            outputName = getCaptialCase(outputName);
+        }
+        return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName + SPACE
+                + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
     }
 
     /**
@@ -512,12 +520,14 @@
 
         rpcName = getSmallCase(getCamelCase(rpcName, null));
         inputName = getCaptialCase(inputName);
-        outputName = getCaptialCase(outputName);
+        if (!outputName.equals(VOID)) {
+            outputName = getCaptialCase(outputName);
+        }
 
-        String method = getOverRideString() +
-                FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName + OPEN_PARENTHESIS
-                + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
-                + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
+        String method =
+                getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
+                        + OPEN_PARENTHESIS + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SPACE
+                        + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
         if (!outputName.contentEquals(VOID)) {
             method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE;
         }
@@ -601,7 +611,7 @@
      * @return from string method's open string
      */
     public static String getFromStringMethodSignature(String className) {
-        return getJavaDoc(FROM_METHOD, className, false) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
+        return getJavaDoc(FROM_METHOD, className, false) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
                 + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
                 + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
@@ -677,7 +687,6 @@
                 + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
     }
 
-
     /**
      * Returns hash code method open strings.
      *
@@ -916,4 +925,38 @@
                 + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
                 + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
+
+    /**
+     * Returns of method for enum class.
+     *
+     * @param className class name
+     * @param attr java attribute
+     * @param enumMap enum's sets map
+     * @param enumList enum's sets list
+     * @return of method
+     */
+    public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
+            Map<String, Integer> enumMap, List<String> enumList) {
+        String attrType = getReturnType(attr);
+        String attrName = getSmallCase(attr.getAttributeName());
+
+        String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF
+                + OPEN_PARENTHESIS
+                + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
+                + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
+                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        int value = 0;
+        for (String str : enumList) {
+
+            value = enumMap.get(str);
+            method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
+                    + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + className + PERIOD
+                    + str + SEMI_COLAN + NEW_LINE;
+        }
+        method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
+                + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
+                + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+
+        return getJavaDoc(OF_METHOD, className + " for type " + attrName, false) + method;
+    }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
index 741274e..e1db371 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
@@ -21,7 +21,11 @@
 import java.util.List;
 
 import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaImportDataContainer;
+import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
+
+import static java.util.Collections.sort;
 
 import static org.onosproject.yangutils.translator.tojava.JavaImportData.getAugmentedInfoImport;
 import static org.onosproject.yangutils.translator.tojava.JavaImportData.getHasAugmentationImport;
@@ -31,8 +35,6 @@
 import static org.onosproject.yangutils.utils.UtilConstants.HAS_AUGMENTATION;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
 
-import static java.util.Collections.sort;
-
 /**
  * Represents utilities for temporary java code fragments.
  */
@@ -52,7 +54,8 @@
      * @param operation add or delete import
      * @return import for HasAugmentation class
      */
-    public static List<String> addHasAugmentationImport(YangNode curNode, List<String> imports, boolean operation) {
+    public static List<String> addHasAugmentationImport(YangNode curNode, List<String> imports,
+            boolean operation) {
         if (curNode instanceof JavaImportDataContainer) {
             String thisImport = getHasAugmentationImport();
             performOperationOnImports(imports, thisImport, operation);
@@ -109,13 +112,14 @@
      * @param operation add or remove
      * @return import list
      */
-    private static List<String> performOperationOnImports(List<String> imports, String curImport, boolean operation) {
+    private static List<String> performOperationOnImports(List<String> imports, String curImport,
+            boolean operation) {
         if (operation) {
             imports.add(curImport);
         } else {
             imports.remove(curImport);
         }
-        sort(imports);
+        sortImports(imports);
         return imports;
     }
 
@@ -142,7 +146,7 @@
      * @return true or false
      */
     public static boolean isHasAugmentationExtended(List<String> extendsList) {
-        return (extendsList != null && extendsList.contains(HAS_AUGMENTATION));
+        return extendsList != null && extendsList.contains(HAS_AUGMENTATION);
     }
 
     /**
@@ -152,7 +156,7 @@
      * @return true or false
      */
     public static boolean isAugmentedInfoExtended(List<String> extendsList) {
-        return (extendsList != null && extendsList.contains(AUGMENTED_INFO));
+        return extendsList != null && extendsList.contains(AUGMENTED_INFO);
     }
 
     /**
@@ -172,4 +176,37 @@
             }
         }
     }
+
+    /**
+     * Detects collision between parent and child node which have same name.
+     * When parent and child node both have the same name in that case child node should be used with
+     * qualified name.
+     *
+     * @param curNode current YANG node
+     * @param qualifiedTypeInfo current node's qualified info
+     * @return true if collision is detected
+     */
+    public static boolean detectCollisionBwParentAndChildForImport(YangNode curNode,
+            JavaQualifiedTypeInfo qualifiedTypeInfo) {
+
+        YangNode parent = curNode.getParent();
+        String parentsClassInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName();
+        String childsClassInfo = qualifiedTypeInfo.getClassInfo();
+        if (childsClassInfo.equals(parentsClassInfo)) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * Returns sorted import list.
+     *
+     * @param imports import list
+     * @return sorted import list
+     */
+    public static List<String> sortImports(List<String> imports) {
+        sort(imports);
+        return imports;
+    }
+
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
index 0597683..d285351 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
@@ -149,7 +149,7 @@
             /**
              * Enumeration
              */
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
+            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getEnumerationTempFiles()
                     .addEnumAttributeToTempFiles((YangNode) javaCodeGeneratorInfo);
         } else if (javaCodeGeneratorInfo instanceof YangChoice) {
             /*Do nothing, only the interface needs to be generated*/