[ONOS-4149],[ONOS-3909] YANG list translator impl and bug fixes.

Change-Id: Ia1a94142a3a114815766f661ed850bf9cacde66f
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
index efbb939..3373c65 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
@@ -16,7 +16,6 @@
 
 package org.onosproject.yangutils.plugin.manager;
 
-import java.io.File;
 import java.util.Iterator;
 import java.util.List;
 
@@ -24,31 +23,34 @@
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Component;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.parser.YangUtilsParser;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
-import org.onosproject.yangutils.utils.UtilConstants;
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
+import static org.apache.maven.plugins.annotations.LifecyclePhase.GENERATE_SOURCES;
+import static org.apache.maven.plugins.annotations.ResolutionScope.COMPILE;
 import static org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorUtil.generateJavaCode;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_BASE_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.addToSource;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.clean;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.convertPkgToPath;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.copyYangFilesToTarget;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getDirectory;
 
 /**
- * ONOS YANG utility maven plugin. Goal of plugin is yang2java Execution phase
- * in generate-sources requiresDependencyResolution at compile time.
+ * ONOS YANG utility maven plugin.
+ * Goal of plugin is yang2java Execution phase in generate-sources requiresDependencyResolution at compile time.
  */
-@Mojo(name = "yang2java", defaultPhase = LifecyclePhase.GENERATE_SOURCES,
-        requiresDependencyResolution = ResolutionScope.COMPILE, requiresProject = true)
+@Mojo(name = "yang2java", defaultPhase = GENERATE_SOURCES, requiresDependencyResolution = COMPILE,
+        requiresProject = true)
 public class YangUtilManager extends AbstractMojo {
 
     /**
@@ -87,8 +89,7 @@
     @Component
     private BuildContext context;
 
-    private static final String DEFAULT_PKG = File.separator
-            + UtilConstants.DEFAULT_BASE_PKG.replace(UtilConstants.PERIOD, UtilConstants.SLASH);
+    private static final String DEFAULT_PKG = SLASH + convertPkgToPath(DEFAULT_BASE_PKG);
 
     private YangUtilsParser yangUtilsParser = new YangUtilsParserManager();
     private String searchDir;
@@ -116,7 +117,7 @@
             clean(getDirectory(baseDir, outputDirectory));
 
             searchDir = getDirectory(baseDir, yangFilesDir);
-            codeGenDir = getDirectory(baseDir, genFilesDir) + File.separator;
+            codeGenDir = getDirectory(baseDir, genFilesDir) + SLASH;
 
             List<String> yangFiles = YangFileScanner.getYangFiles(searchDir);
             Iterator<String> yangFileIterator = yangFiles.iterator();
@@ -133,7 +134,7 @@
 
                     }
                     if (e.getMessage() != null) {
-                        logInfo = logInfo + UtilConstants.NEW_LINE + e.getMessage();
+                        logInfo = logInfo + NEW_LINE + e.getMessage();
                     }
                     getLog().info(logInfo);
                 }
@@ -143,7 +144,7 @@
             copyYangFilesToTarget(yangFiles, getDirectory(baseDir, outputDirectory), project);
         } catch (Exception e) {
             getLog().info(e);
-            //throw new MojoExecutionException("Exception occured due to " + e.getLocalizedMessage());
+            throw new MojoExecutionException("Exception occured due to " + e.getLocalizedMessage());
         }
     }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
index 3ce39d9..7989255 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
@@ -18,6 +18,7 @@
 
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType;
 
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getIsQualifiedAccessOrAddToImportList;
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getQualifiedTypeInfoOfCurNode;
@@ -246,4 +247,40 @@
 
         return newAttr;
     }
+
+    /**
+     * Create an attribute info object corresponding to the passed type def attribute
+     * information and return it.
+     *
+     * @param curNode current data model node for which the java file is being
+     *            generated
+     * @param attributeType leaf data type
+     * @param attributeName leaf name
+     * @param isListAttribute is the current added attribute needs to be a list
+     * @return AttributeInfo attribute details required to add in temporary
+     *         files
+     */
+    public static JavaAttributeInfo getAttributeInfoOfTypeDef(YangNode curNode,
+            YangType<?> attributeType, String attributeName,
+            boolean isListAttribute) {
+
+        JavaAttributeInfo newAttr = new JavaAttributeInfo();
+
+        /*
+         * Get the import info corresponding to the attribute for import in
+         * generated java files or qualified access
+         */
+        JavaQualifiedTypeInfo importInfo = getQualifiedTypeInfoOfLeafAttribute(curNode,
+                attributeType, attributeName, isListAttribute);
+        AttributesJavaDataType.addImportInfo(importInfo);
+        newAttr.setImportInfo(importInfo);
+        newAttr.setIsQualifiedAccess(getIsQualifiedAccessOrAddToImportList(
+                curNode, importInfo));
+        newAttr.setAttributeName(getCamelCase(attributeName));
+        newAttr.setListAttr(isListAttribute);
+        newAttr.setImportInfo(importInfo);
+        newAttr.setAttributeType(attributeType);
+
+        return newAttr;
+    }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
index 2fffe62..682a101 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
@@ -15,11 +15,26 @@
  */
 package org.onosproject.yangutils.translator.tojava;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
 import org.onosproject.yangutils.datamodel.YangNode;
 
+import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_IMPORT_CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_IMPORT_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+
 /**
  * Generated Java file can contain imports.
  */
@@ -49,6 +64,7 @@
      * @return true if any of the attribute needs to be maintained as a list.
      */
     public boolean getIfListImported() {
+
         return isListToImport;
     }
 
@@ -58,6 +74,7 @@
      * @param isList status to mention list is bing imported.
      */
     public void setIfListImported(boolean isList) {
+
         isListToImport = isList;
     }
 
@@ -67,6 +84,7 @@
      * @return the set containing the imported class/interface info
      */
     public SortedSet<JavaQualifiedTypeInfo> getImportSet() {
+
         return importSet;
     }
 
@@ -76,6 +94,7 @@
      * @param importSet the set containing the imported class/interface info
      */
     private void setImportSet(SortedSet<JavaQualifiedTypeInfo> importSet) {
+
         this.importSet = importSet;
     }
 
@@ -95,6 +114,7 @@
      * @return status of new addition of class/interface to the import set
      */
     public boolean addImportInfo(YangNode curNode, JavaQualifiedTypeInfo newImportInfo) {
+
         if (!(curNode instanceof HasJavaImportData)) {
             throw new RuntimeException("missing import info in data model node");
         }
@@ -108,4 +128,62 @@
         ((HasJavaImportData) curNode).getJavaImportData().getImportSet().add(newImportInfo);
         return true;
     }
+
+    /**
+     * Returns import for class.
+     *
+     * @param attr java attribute info
+     * @return imports for class
+     */
+    public List<String> getImports(JavaAttributeInfo attr) {
+
+        String importString;
+        List<String> imports = new ArrayList<>();
+
+        for (JavaQualifiedTypeInfo importInfo : getImportSet()) {
+            importString = IMPORT;
+            if (importInfo.getPkgInfo() != EMPTY_STRING && importInfo.getClassInfo() != null
+                    && importInfo.getPkgInfo() != JAVA_LANG) {
+                importString = importString + importInfo.getPkgInfo() + PERIOD + importInfo.getClassInfo() + SEMI_COLAN
+                        + NEW_LINE;
+
+                imports.add(importString);
+            }
+        }
+
+        if (attr.isListAttr()) {
+            imports.add(setImportForList());
+        }
+
+        java.util.Collections.sort(imports);
+        return imports;
+    }
+
+    /**
+     * Gets import for hash and equals method.
+     *
+     * @return import for hash and equals method
+     */
+    public String getImportForHashAndEquals() {
+
+        return IMPORT + JAVA_UTIL_OBJECTS_IMPORT_PKG + PERIOD + JAVA_UTIL_OBJECTS_IMPORT_CLASS;
+    }
+
+    /**
+     * Gets import for to string method.
+     *
+     * @return import for to string method
+     */
+    public String getImportForToString() {
+
+        return IMPORT + GOOGLE_MORE_OBJECT_IMPORT_PKG + PERIOD + GOOGLE_MORE_OBJECT_IMPORT_CLASS;
+    }
+
+    /**
+     * Sets import for to list.
+     */
+    private static String setImportForList() {
+
+        return IMPORT + COLLECTION_IMPORTS + PERIOD + LIST + SEMI_COLAN + NEW_LINE;
+    }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
index 5ff4e79..2a32819 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
@@ -18,19 +18,25 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 
 import org.onosproject.yangutils.datamodel.YangLeaf;
 import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.datamodel.YangLeavesHolder;
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator;
+import org.onosproject.yangutils.datamodel.YangTypeDef;
+import org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen;
 import org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax;
 import org.onosproject.yangutils.utils.UtilConstants;
 import org.onosproject.yangutils.utils.io.impl.FileSystemUtil;
+import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
+import org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_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;
@@ -43,8 +49,15 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoOfLeaf;
+import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoOfTypeDef;
 import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getCurNodeAsAttributeInParent;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefination;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateBuilderClassFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateBuilderInterfaceFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateImplClassFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateInterfaceFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateTypeDefClassFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getParentNodeInGenCode;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuildString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructor;
@@ -53,11 +66,30 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterForClass;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOfMethod;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOverRideString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForClass;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForTypeDefClass;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getTypeDefConstructor;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.parseBuilderInterfaceBuildMethodString;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+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.INTERFACE;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_DEF_CONSTRUCTOR;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_DEF_SETTER_METHOD;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.clean;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.mergeJavaFiles;
 
 /**
  * Provides implementation of java code fragments temporary implementations.
@@ -71,6 +103,12 @@
     private int generatedTempFiles;
 
     /**
+     * The variable which guides the types of files generated using
+     * the generated file types mask.
+     */
+    private int generatedJavaFiles;
+
+    /**
      * Absolute path where the target java file needs to be generated.
      */
     private String absoluteDirPath;
@@ -81,6 +119,11 @@
     private String generatedJavaClassName;
 
     /**
+     * File type extension for java classes.
+     */
+    private static final String JAVA_FILE_EXTENSION = ".java";
+
+    /**
      * File type extension for temporary classes.
      */
     private static final String TEMP_FILE_EXTENSION = ".tmp";
@@ -136,6 +179,56 @@
     private static final String EQUALS_METHOD_FILE_NAME = "Equals";
 
     /**
+     * File name for interface java file name suffix.
+     */
+    private static final String INTERFACE_FILE_NAME_SUFFIX = EMPTY_STRING;
+
+    /**
+     * File name for builder interface file name suffix.
+     */
+    private static final String BUILDER_INTERFACE_FILE_NAME_SUFFIX = BUILDER + INTERFACE;
+
+    /**
+     * File name for builder class file name suffix.
+     */
+    private static final String BUILDER_CLASS_FILE_NAME_SUFFIX = BUILDER;
+
+    /**
+     * File name for impl class file name suffix.
+     */
+    private static final String IMPL_CLASS_FILE_NAME_SUFFIX = IMPL;
+
+    /**
+     * File name for typedef class file name suffix.
+     */
+    private static final String TYPEDEF_CLASS_FILE_NAME_SUFFIX = EMPTY_STRING;
+
+    /**
+     * Java file handle for interface file.
+     */
+    private File interfaceJavaFileHandle;
+
+    /**
+     * Java file handle for builder interface file.
+     */
+    private File builderInterfaceJavaFileHandle;
+
+    /**
+     * Java file handle for builder class file.
+     */
+    private File builderClassJavaFileHandle;
+
+    /**
+     * Java file handle for impl class file.
+     */
+    private File implClassJavaFileHandle;
+
+    /**
+     * Java file handle for typedef class file.
+     */
+    private File typedefClassJavaFileHandle;
+
+    /**
      * Temporary file handle for attribute.
      */
     private File attributesTempFileHandle;
@@ -181,6 +274,16 @@
     private File toStringImplTempFileHandle;
 
     /**
+     * Java attribute info.
+     */
+    private JavaAttributeInfo newAttrInfo;
+
+    /**
+     * Current YANG node.
+     */
+    private YangNode curYangNode;
+
+    /**
      * Construct an object of temporary java code fragment.
      *
      * @param genFileType file generation type
@@ -188,12 +291,13 @@
      * @param className class name
      * @throws IOException when fails to create new file handle
      */
-    public TempJavaCodeFragmentFiles(int genFileType, String genDir, String className) throws IOException {
+    public TempJavaCodeFragmentFiles(int genFileType, String genDir, String className)
+            throws IOException {
 
         generatedTempFiles = 0;
         absoluteDirPath = genDir;
         generatedJavaClassName = className;
-
+        generatedJavaFiles = genFileType;
         /**
          * Initialize getter when generation file type matches to interface
          * mask.
@@ -234,6 +338,18 @@
             generatedTempFiles |= TO_STRING_IMPL_MASK;
         }
 
+        /**
+         * Initialize getterImpl, attributes,  hash code, equals and
+         * to strings when generation file type matches to typeDef class mask.
+         */
+        if ((genFileType & GENERATE_TYPEDEF_CLASS) != 0) {
+            generatedTempFiles |= ATTRIBUTES_MASK;
+            generatedTempFiles |= GETTER_FOR_CLASS_MASK;
+            generatedTempFiles |= HASH_CODE_IMPL_MASK;
+            generatedTempFiles |= EQUALS_IMPL_MASK;
+            generatedTempFiles |= TO_STRING_IMPL_MASK;
+        }
+
         if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) {
             setAttributesTempFileHandle(getTemporaryFileHandle(ATTRIBUTE_FILE_NAME));
         }
@@ -272,6 +388,106 @@
     }
 
     /**
+     * Returns java file handle for interface file.
+     *
+     * @return java file handle for interface file
+     */
+    public File getInterfaceJavaFileHandle() {
+
+        return interfaceJavaFileHandle;
+    }
+
+    /**
+     * Sets the java file handle for interface file.
+     *
+     * @param interfaceJavaFileHandle java file handle
+     */
+    public void setInterfaceJavaFileHandle(File interfaceJavaFileHandle) {
+
+        this.interfaceJavaFileHandle = interfaceJavaFileHandle;
+    }
+
+    /**
+     * Returns java file handle for builder interface file.
+     *
+     * @return java file handle for builder interface file
+     */
+    public File getBuilderInterfaceJavaFileHandle() {
+
+        return builderInterfaceJavaFileHandle;
+    }
+
+    /**
+     * Sets the java file handle for builder interface file.
+     *
+     * @param builderInterfaceJavaFileHandle java file handle
+     */
+    public void setBuilderInterfaceJavaFileHandle(File builderInterfaceJavaFileHandle) {
+
+        this.builderInterfaceJavaFileHandle = builderInterfaceJavaFileHandle;
+    }
+
+    /**
+     * Returns java file handle for builder class file.
+     *
+     * @return java file handle for builder class file
+     */
+    public File getBuilderClassJavaFileHandle() {
+
+        return builderClassJavaFileHandle;
+    }
+
+    /**
+     * Sets the java file handle for builder class file.
+     *
+     * @param builderClassJavaFileHandle java file handle
+     */
+    public void setBuilderClassJavaFileHandle(File builderClassJavaFileHandle) {
+
+        this.builderClassJavaFileHandle = builderClassJavaFileHandle;
+    }
+
+    /**
+     * Returns java file handle for impl class file.
+     *
+     * @return java file handle for impl class file
+     */
+    public File getImplClassJavaFileHandle() {
+
+        return implClassJavaFileHandle;
+    }
+
+    /**
+     * Sets the java file handle for impl class file.
+     *
+     * @param implClassJavaFileHandle java file handle
+     */
+    public void setImplClassJavaFileHandle(File implClassJavaFileHandle) {
+
+        this.implClassJavaFileHandle = implClassJavaFileHandle;
+    }
+
+    /**
+     * Returns java file handle for typedef class file.
+     *
+     * @return java file handle for typedef class file
+     */
+    public File getTypedefClassJavaFileHandle() {
+
+        return typedefClassJavaFileHandle;
+    }
+
+    /**
+     * Sets the java file handle for typedef class file.
+     *
+     * @param typedefClassJavaFileHandle java file handle
+     */
+    public void setTypedefClassJavaFileHandle(File typedefClassJavaFileHandle) {
+
+        this.typedefClassJavaFileHandle = typedefClassJavaFileHandle;
+    }
+
+    /**
      * Returns attribute's temporary file handle.
      *
      * @return temporary file handle
@@ -452,6 +668,46 @@
     }
 
     /**
+     * Returns java attribute info.
+     *
+     * @return java attribute info
+     */
+    public JavaAttributeInfo getNewAttrInfo() {
+
+        return newAttrInfo;
+    }
+
+    /**
+     * Sets java attribute info.
+     *
+     * @param newAttrInfo java attribute info
+     */
+    public void setNewAttrInfo(JavaAttributeInfo newAttrInfo) {
+
+        this.newAttrInfo = newAttrInfo;
+    }
+
+    /**
+     * Returns current YANG node.
+     *
+     * @return current YANG node
+     */
+    public YangNode getCurYangNode() {
+
+        return curYangNode;
+    }
+
+    /**
+     * Sets current YANG node.
+     *
+     * @param curYangNode YANG node
+     */
+    public void setCurYangNode(YangNode curYangNode) {
+
+        this.curYangNode = curYangNode;
+    }
+
+    /**
      * Adds attribute for class.
      *
      * @param attr attribute info
@@ -459,7 +715,7 @@
      */
     public void addAttribute(JavaAttributeInfo attr) throws IOException {
 
-        appendToFile(getAttributesTempFileHandle(), parseAttribute(attr) + UtilConstants.FOUR_SPACE_INDENTATION);
+        appendToFile(getAttributesTempFileHandle(), parseAttribute(attr) + FOUR_SPACE_INDENTATION);
     }
 
     /**
@@ -470,20 +726,24 @@
      */
     public void addGetterForInterface(JavaAttributeInfo attr) throws IOException {
 
-        appendToFile(getGetterInterfaceTempFileHandle(),
-                getGetterString(attr) + UtilConstants.NEW_LINE);
+        appendToFile(getGetterInterfaceTempFileHandle(), getGetterString(attr) + NEW_LINE);
     }
 
     /**
      * Adds getter method's impl for class.
      *
      * @param attr attribute info
+     * @param genFiletype generated file type
      * @throws IOException when fails to append to temporary file
      */
-    public void addGetterImpl(JavaAttributeInfo attr) throws IOException {
+    public void addGetterImpl(JavaAttributeInfo attr, int genFiletype) throws IOException {
 
-        appendToFile(getGetterImplTempFileHandle(),
-                getOverRideString() + getGetterForClass(attr) + UtilConstants.NEW_LINE);
+        if ((genFiletype & BUILDER_CLASS_MASK) != 0) {
+            appendToFile(getGetterImplTempFileHandle(), getOverRideString() + getGetterForClass(attr) + NEW_LINE);
+        } else {
+            appendToFile(getGetterImplTempFileHandle(), getJavaDoc(GETTER_METHOD, attr.getAttributeName(), false)
+                    + getGetterForClass(attr) + NEW_LINE);
+        }
     }
 
     /**
@@ -495,7 +755,7 @@
     public void addSetterForInterface(JavaAttributeInfo attr) throws IOException {
 
         appendToFile(getSetterInterfaceTempFileHandle(),
-                getSetterString(attr, generatedJavaClassName) + UtilConstants.NEW_LINE);
+                getSetterString(attr, generatedJavaClassName) + NEW_LINE);
     }
 
     /**
@@ -507,7 +767,7 @@
     public void addSetterImpl(JavaAttributeInfo attr) throws IOException {
 
         appendToFile(getSetterImplTempFileHandle(),
-                getOverRideString() + getSetterForClass(attr, generatedJavaClassName) + UtilConstants.NEW_LINE);
+                getOverRideString() + getSetterForClass(attr, generatedJavaClassName) + NEW_LINE);
     }
 
     /**
@@ -529,7 +789,7 @@
      */
     public String addBuildMethodImpl() throws IOException {
 
-        return getBuildString(generatedJavaClassName) + UtilConstants.NEW_LINE;
+        return getBuildString(generatedJavaClassName) + NEW_LINE;
     }
 
     /**
@@ -546,13 +806,50 @@
     /**
      * Adds default constructor for class.
      *
+     * @param modifier modifier for constructor.
+     * @param toAppend string which need to be appended with the class name
      * @return default constructor for class
      * @throws IOException when fails to append to file
      */
-    public String addDefaultConstructor() throws IOException {
+    public String addDefaultConstructor(String modifier, String toAppend) throws IOException {
 
-        return UtilConstants.NEW_LINE + getDefaultConstructorString(generatedJavaClassName + UtilConstants.BUILDER,
-                UtilConstants.PUBLIC);
+        return NEW_LINE + getDefaultConstructorString(generatedJavaClassName + toAppend, modifier);
+    }
+
+    /**
+     * Adds typedef constructor for class.
+     *
+     * @return typedef constructor for class
+     * @throws IOException when fails to append to file
+     */
+    public String addTypeDefConstructor() throws IOException {
+
+        return NEW_LINE + getJavaDoc(TYPE_DEF_CONSTRUCTOR, generatedJavaClassName, false)
+                + getTypeDefConstructor(newAttrInfo, generatedJavaClassName) + NEW_LINE;
+    }
+
+    /**
+     * Adds default constructor for class.
+     *
+     * @return default constructor for class
+     * @throws IOException when fails to append to file
+     */
+    public String addTypeDefsSetter() throws IOException {
+
+        return getJavaDoc(TYPE_DEF_SETTER_METHOD, generatedJavaClassName, false) + getSetterForTypeDefClass(newAttrInfo)
+                + NEW_LINE;
+    }
+
+    /**
+     * Adds default constructor for class.
+     *
+     * @return default constructor for class
+     * @throws IOException when fails to append to file
+     */
+    public String addOfMethod() throws IOException {
+
+        return JavaDocGen.getJavaDoc(JavaDocType.OF_METHOD, generatedJavaClassName, false)
+                + getOfMethod(generatedJavaClassName, newAttrInfo);
     }
 
     /**
@@ -563,7 +860,7 @@
      */
     public void addHashCodeMethod(JavaAttributeInfo attr) throws IOException {
 
-        appendToFile(getHashCodeImplTempFileHandle(), getHashCodeMethod(attr) + UtilConstants.NEW_LINE);
+        appendToFile(getHashCodeImplTempFileHandle(), getHashCodeMethod(attr) + NEW_LINE);
     }
 
     /**
@@ -574,7 +871,7 @@
      */
     public void addEqualsMethod(JavaAttributeInfo attr) throws IOException {
 
-        appendToFile(getEqualsImplTempFileHandle(), getEqualsMethod(attr) + UtilConstants.NEW_LINE);
+        appendToFile(getEqualsImplTempFileHandle(), getEqualsMethod(attr) + NEW_LINE);
     }
 
     /**
@@ -585,7 +882,7 @@
      */
     public void addToStringMethod(JavaAttributeInfo attr) throws IOException {
 
-        appendToFile(getToStringImplTempFileHandle(), getToStringMethod(attr) + UtilConstants.NEW_LINE);
+        appendToFile(getToStringImplTempFileHandle(), getToStringMethod(attr) + NEW_LINE);
     }
 
     /**
@@ -614,6 +911,20 @@
     }
 
     /**
+     * Returns a temporary file handle for the specific file type.
+     *
+     * @param fileName file name
+     * @return temporary file handle
+     * @throws IOException when fails to create new file handle
+     */
+    private File getJavaFileHandle(String fileName) throws IOException {
+
+        createPackage(absoluteDirPath, getJavaFileInfo().getJavaName());
+
+        return getFileObject(getDirPath(), fileName, JAVA_FILE_EXTENSION, getJavaFileInfo());
+    }
+
+    /**
      * Returns data from the temporary files.
      *
      * @param file temporary file handle
@@ -624,11 +935,10 @@
 
         String path = getTempDirPath();
         if (new File(path + file.getName()).exists()) {
-            return FileSystemUtil.readAppendFile(path + file.getName(), UtilConstants.EMPTY_STRING);
+            return FileSystemUtil.readAppendFile(path + file.getName(), EMPTY_STRING);
         } else {
             throw new IOException("Unable to get data from the given "
-                    + file.getName() + " file for "
-                    + generatedJavaClassName + UtilConstants.PERIOD);
+                    + file.getName() + " file for " + generatedJavaClassName + PERIOD);
         }
     }
 
@@ -639,8 +949,8 @@
      */
     private String getTempDirPath() {
 
-        return absoluteDirPath.replace(UtilConstants.PERIOD, UtilConstants.SLASH)
-                + File.separator + generatedJavaClassName + TEMP_FOLDER_NAME_SUFIX + File.separator;
+        return absoluteDirPath.replace(PERIOD, UtilConstants.SLASH)
+                + SLASH + generatedJavaClassName + TEMP_FOLDER_NAME_SUFIX + SLASH;
     }
 
     /**
@@ -654,7 +964,8 @@
         /*
          * TODO: check if this utility needs to be called or move to the caller
          */
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
+        String attributeName = JavaIdentifierSyntax
+                .getCamelCase(JavaIdentifierSyntax.getLowerCase(attr.getAttributeName()));
         if (attr.isQualifiedName()) {
             return getJavaAttributeDefination(attr.getImportInfo().getPkgInfo(), attr.getImportInfo().getClassInfo(),
                     attributeName, attr.isListAttr());
@@ -674,7 +985,7 @@
     private void appendToFile(File file, String data) throws IOException {
 
         try {
-            JavaFileGenerator.insert(file, data);
+            insertDataIntoJavaFile(file, data);
         } catch (IOException ex) {
             throw new IOException("failed to write in temp file.");
         }
@@ -778,6 +1089,20 @@
     }
 
     /**
+     * Adds leaf attributes in generated files.
+     *
+     * @param curNode current data model node
+     * @throws IOException IO operation fail
+     */
+    public void addTypeDefAttributeToTempFiles(YangNode curNode) throws IOException {
+
+        JavaAttributeInfo javaAttributeInfo = getAttributeInfoOfTypeDef(curNode,
+                ((YangTypeDef) curNode).getDerivedType().getDataTypeExtendedInfo().getBaseType(),
+                ((YangTypeDef) curNode).getName(), false);
+        addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo);
+    }
+
+    /**
      * Add the new attribute info to the target generated temporary files.
      *
      * @param newAttrInfo the attribute info that needs to be added to temporary
@@ -787,6 +1112,7 @@
     void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo newAttrInfo)
             throws IOException {
 
+        setNewAttrInfo(newAttrInfo);
         if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) {
             addAttribute(newAttrInfo);
         }
@@ -800,7 +1126,7 @@
         }
 
         if ((generatedTempFiles & GETTER_FOR_CLASS_MASK) != 0) {
-            addGetterImpl(newAttrInfo);
+            addGetterImpl(newAttrInfo, generatedJavaFiles);
         }
 
         if ((generatedTempFiles & SETTER_FOR_CLASS_MASK) != 0) {
@@ -826,11 +1152,134 @@
     }
 
     /**
+     * Return java file info.
+     *
+     * @return java file info
+     */
+    private JavaFileInfo getJavaFileInfo() {
+
+        return ((HasJavaFileInfo) getCurYangNode()).getJavaFileInfo();
+    }
+
+    /**
+     * Returns java class name.
+     *
+     * @param suffix for the class name based on the file type
+     * @return java class name
+     */
+    private String getJavaClassName(String suffix) {
+
+        return JavaIdentifierSyntax.getCaptialCase(getJavaFileInfo().getJavaName()) + suffix;
+    }
+
+    /**
+     * Returns the directory path.
+     *
+     * @return directory path
+     */
+    private String getDirPath() {
+
+        return getJavaFileInfo().getPackageFilePath();
+    }
+
+    /**
+     * Construct java code exit.
+     *
+     * @param fileType generated file type
+     * @param curNode current YANG node
+     * @throws IOException when fails to generate java files
+     */
+    public void generateJavaFile(int fileType, YangNode curNode) throws IOException {
+
+        setCurYangNode(curNode);
+        List<String> imports = new ArrayList<>();
+        if (curNode instanceof HasJavaImportData) {
+            imports = ((HasJavaImportData) curNode).getJavaImportData().getImports(getNewAttrInfo());
+        }
+        /**
+         * Start generation of files.
+         */
+        if ((fileType & INTERFACE_MASK) != 0 | (fileType & BUILDER_INTERFACE_MASK) != 0
+                | fileType == GENERATE_INTERFACE_WITH_BUILDER) {
+
+            /**
+             * Create interface file.
+             */
+            setInterfaceJavaFileHandle(getJavaFileHandle(getJavaClassName(INTERFACE_FILE_NAME_SUFFIX)));
+            setInterfaceJavaFileHandle(generateInterfaceFile(getInterfaceJavaFileHandle(), imports, curNode));
+            /**
+             * Create builder interface file.
+             */
+            setBuilderInterfaceJavaFileHandle(getJavaFileHandle(getJavaClassName(BUILDER_INTERFACE_FILE_NAME_SUFFIX)));
+            setBuilderInterfaceJavaFileHandle(
+                    generateBuilderInterfaceFile(getBuilderInterfaceJavaFileHandle(), curNode));
+            /**
+             * Append builder interface file to interface file and close it.
+             */
+            mergeJavaFiles(getBuilderInterfaceJavaFileHandle(), getInterfaceJavaFileHandle());
+            insertDataIntoJavaFile(getInterfaceJavaFileHandle(), JavaCodeSnippetGen.getJavaClassDefClose());
+
+        }
+
+        if (curNode instanceof HasJavaImportData) {
+            imports.add(((HasJavaImportData) curNode).getJavaImportData().getImportForHashAndEquals());
+            imports.add(((HasJavaImportData) curNode).getJavaImportData().getImportForToString());
+            java.util.Collections.sort(imports);
+        }
+
+        if ((fileType & BUILDER_CLASS_MASK) != 0 | (fileType & IMPL_CLASS_MASK) != 0
+                | fileType == GENERATE_INTERFACE_WITH_BUILDER) {
+
+            /**
+             * Create builder class file.
+             */
+            setBuilderClassJavaFileHandle(getJavaFileHandle(getJavaClassName(BUILDER_CLASS_FILE_NAME_SUFFIX)));
+            setBuilderClassJavaFileHandle(generateBuilderClassFile(getBuilderClassJavaFileHandle(), imports, curNode));
+            /**
+             * Create impl class file.
+             */
+            setImplClassJavaFileHandle(getJavaFileHandle(getJavaClassName(IMPL_CLASS_FILE_NAME_SUFFIX)));
+            setImplClassJavaFileHandle(generateImplClassFile(getImplClassJavaFileHandle(), curNode));
+            /**
+             * Append impl class to builder class and close it.
+             */
+            mergeJavaFiles(getImplClassJavaFileHandle(), getBuilderClassJavaFileHandle());
+            insertDataIntoJavaFile(getBuilderClassJavaFileHandle(), JavaCodeSnippetGen.getJavaClassDefClose());
+
+        }
+
+        /**
+         * Creates type def class file.
+         */
+        if ((fileType & GENERATE_TYPEDEF_CLASS) != 0) {
+            setTypedefClassJavaFileHandle(getJavaFileHandle(getJavaClassName(TYPEDEF_CLASS_FILE_NAME_SUFFIX)));
+            setTypedefClassJavaFileHandle(generateTypeDefClassFile(getTypedefClassJavaFileHandle(), curNode, imports));
+        }
+
+        /**
+         * Close all the file handles.
+         */
+        close();
+    }
+
+    /**
      * Removes all temporary file handles.
      *
      * @throws IOException when failed to delete the temporary files
      */
-    public void close() throws IOException {
+    private void close() throws IOException {
+
+        closeFile(getJavaClassName(INTERFACE_FILE_NAME_SUFFIX));
+
+        closeFile(getJavaClassName(BUILDER_INTERFACE_FILE_NAME_SUFFIX));
+        getJavaFileHandle(getJavaClassName(BUILDER_INTERFACE_FILE_NAME_SUFFIX)).delete();
+
+        closeFile(getJavaClassName(BUILDER_CLASS_FILE_NAME_SUFFIX));
+
+        closeFile(getJavaClassName(IMPL_CLASS_FILE_NAME_SUFFIX));
+        getJavaFileHandle(getJavaClassName(IMPL_CLASS_FILE_NAME_SUFFIX)).delete();
+
+        closeFile(getJavaClassName(TYPEDEF_CLASS_FILE_NAME_SUFFIX));
 
         closeFile(GETTER_METHOD_FILE_NAME);
         getTemporaryFileHandle(GETTER_METHOD_FILE_NAME).delete();
@@ -859,6 +1308,7 @@
         closeFile(EQUALS_METHOD_FILE_NAME);
         getTemporaryFileHandle(EQUALS_METHOD_FILE_NAME).delete();
 
+        clean(getTempDirPath());
     }
 
     /**
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainer.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainer.java
index c1fb5ea..228b1d8 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainer.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainer.java
@@ -27,12 +27,10 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.GenerateJavaCodeExitBuilder.generateJavaFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCurNodePackage;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
 
 /**
@@ -162,7 +160,7 @@
         String absloutePath = getAbsolutePackagePath(
                 getJavaFileInfo().getBaseCodeGenPath(),
                 getJavaFileInfo().getPackageFilePath());
-        createPackage(absloutePath, getName());
+
         setTempJavaCodeFragmentFiles(new TempJavaCodeFragmentFiles(
                 getJavaFileInfo().getGeneratedFileTypes(), absloutePath,
                 getJavaFileInfo().getJavaName()));
@@ -180,8 +178,8 @@
     @Override
     public void generateCodeExit() throws IOException {
 
-        generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
-        getTempJavaCodeFragmentFiles().close();
+        getTempJavaCodeFragmentFiles().setCurYangNode(this);
+        getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
     }
 
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInput.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInput.java
index ee12366..cff69be 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInput.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInput.java
@@ -17,6 +17,7 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import java.io.IOException;
+
 import org.onosproject.yangutils.datamodel.YangInput;
 import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.HasJavaImportData;
@@ -27,7 +28,6 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.GenerateJavaCodeExitBuilder.generateJavaFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCurNodePackage;
@@ -180,7 +180,7 @@
     @Override
     public void generateCodeExit() throws IOException {
 
-        generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
-        getTempJavaCodeFragmentFiles().close();
+        getTempJavaCodeFragmentFiles().setCurYangNode(this);
+        getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
     }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaList.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaList.java
index 9469f69..d911c9a 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaList.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaList.java
@@ -27,7 +27,6 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.GenerateJavaCodeExitBuilder.generateJavaFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCurNodePackage;
@@ -155,9 +154,11 @@
 
         getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName())));
         getJavaFileInfo().setPackage(getCurNodePackage(this));
+
         getJavaFileInfo().setPackageFilePath(
                 getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage()));
         getJavaFileInfo().setBaseCodeGenPath(codeGenDir);
+
         String absloutePath = getAbsolutePackagePath(
                 getJavaFileInfo().getBaseCodeGenPath(),
                 getJavaFileInfo().getPackageFilePath());
@@ -180,7 +181,7 @@
     @Override
     public void generateCodeExit() throws IOException {
 
-        generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
-        getTempJavaCodeFragmentFiles().close();
+        getTempJavaCodeFragmentFiles().setCurYangNode(this);
+        getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
     }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
index 69e3ffa..42bf3ab 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
@@ -27,12 +27,10 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.GenerateJavaCodeExitBuilder.generateJavaFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
 
 /**
@@ -163,7 +161,6 @@
                 getJavaFileInfo().getBaseCodeGenPath(),
                 getJavaFileInfo().getPackageFilePath());
 
-        createPackage(absloutePath, getName());
         setTempJavaCodeFragmentFiles(new TempJavaCodeFragmentFiles(
                 getJavaFileInfo().getGeneratedFileTypes(), absloutePath,
                 getJavaFileInfo().getJavaName()));
@@ -174,8 +171,8 @@
     @Override
     public void generateCodeExit() throws IOException {
 
-        generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
-        getTempJavaCodeFragmentFiles().close();
+        getTempJavaCodeFragmentFiles().setCurYangNode(this);
+        getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
         return;
     }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutput.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutput.java
index 4a9cedc..b88f24c 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutput.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutput.java
@@ -17,6 +17,7 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import java.io.IOException;
+
 import org.onosproject.yangutils.datamodel.YangOutput;
 import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.HasJavaImportData;
@@ -27,7 +28,6 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.utils.GenerateJavaCodeExitBuilder.generateJavaFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCurNodePackage;
@@ -180,7 +180,7 @@
     @Override
     public void generateCodeExit() throws IOException {
 
-        generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
-        getTempJavaCodeFragmentFiles().close();
+        getTempJavaCodeFragmentFiles().setCurYangNode(this);
+        getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
     }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
index 6047206..caa05bc 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
@@ -75,6 +75,7 @@
      */
     @Override
     public JavaFileInfo getJavaFileInfo() {
+
         if (javaFileInfo == null) {
             throw new RuntimeException("Missing java info in java datamodel node");
         }
@@ -88,6 +89,7 @@
      */
     @Override
     public void setJavaFileInfo(JavaFileInfo javaInfo) {
+
         javaFileInfo = javaInfo;
     }
 
@@ -98,6 +100,7 @@
      */
     @Override
     public JavaImportData getJavaImportData() {
+
         return javaImportData;
     }
 
@@ -109,6 +112,7 @@
      */
     @Override
     public void setJavaImportData(JavaImportData javaImportData) {
+
         this.javaImportData = javaImportData;
     }
 
@@ -119,6 +123,7 @@
      */
     @Override
     public TempJavaCodeFragmentFiles getTempJavaCodeFragmentFiles() {
+
         if (tempFileHandle == null) {
             throw new RuntimeException("missing temp file hand for current node "
                     + getJavaFileInfo().getJavaName());
@@ -133,6 +138,7 @@
      */
     @Override
     public void setTempJavaCodeFragmentFiles(TempJavaCodeFragmentFiles fileHandle) {
+
         tempFileHandle = fileHandle;
     }
 
@@ -144,6 +150,7 @@
      * @return the name space string of the module.
      */
     private String getNameSpaceFromModule(YangBelongsTo belongsToInfo) {
+
         // TODO Auto-generated method stub
         return "";
     }
@@ -157,6 +164,7 @@
      */
     @Override
     public void generateCodeEntry(String codeGenDir) throws IOException {
+
         getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName())));
         getJavaFileInfo().setPackage(getRootPackage(getVersion(),
                 getNameSpaceFromModule(getBelongsTo()),
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDef.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDef.java
index 50ecc2d..8717635 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDef.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDef.java
@@ -15,24 +15,29 @@
  */
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
+import java.io.IOException;
+
 import org.onosproject.yangutils.datamodel.YangTypeDef;
 import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.HasJavaImportData;
+import org.onosproject.yangutils.translator.tojava.HasTempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.JavaImportData;
+import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCurNodePackage;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
 
 /**
  * Type define information extended to support java code generation.
  */
 public class YangJavaTypeDef extends YangTypeDef
-        implements JavaCodeGenerator, HasJavaFileInfo, HasJavaImportData {
+        implements JavaCodeGenerator, HasJavaFileInfo, HasJavaImportData, HasTempJavaCodeFragmentFiles {
 
     /**
      * Contains the information of the java file being generated.
@@ -46,13 +51,19 @@
     private JavaImportData javaImportData;
 
     /**
+     * File handle to maintain temporary java code fragments as per the code
+     * snippet types.
+     */
+    private TempJavaCodeFragmentFiles tempFileHandle;
+
+    /**
      * Default constructor.
      */
     public YangJavaTypeDef() {
         super();
         setJavaFileInfo(new JavaFileInfo());
         setJavaImportData(new JavaImportData());
-        getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER);
+        getJavaFileInfo().setGeneratedFileTypes(GENERATE_TYPEDEF_CLASS);
     }
 
     /**
@@ -62,6 +73,7 @@
      */
     @Override
     public JavaFileInfo getJavaFileInfo() {
+
         if (javaFileInfo == null) {
             throw new RuntimeException("Missing java info in java datamodel node");
         }
@@ -75,6 +87,7 @@
      */
     @Override
     public void setJavaFileInfo(JavaFileInfo javaInfo) {
+
         javaFileInfo = javaInfo;
     }
 
@@ -85,6 +98,7 @@
      */
     @Override
     public JavaImportData getJavaImportData() {
+
         return javaImportData;
     }
 
@@ -96,32 +110,73 @@
      */
     @Override
     public void setJavaImportData(JavaImportData javaImportData) {
+
         this.javaImportData = javaImportData;
     }
 
     /**
+     * Get the temporary file handle.
+     *
+     * @return temporary file handle
+     */
+    @Override
+    public TempJavaCodeFragmentFiles getTempJavaCodeFragmentFiles() {
+
+        if (tempFileHandle == null) {
+            throw new RuntimeException("missing temp file hand for current node "
+                    + getJavaFileInfo().getJavaName());
+        }
+        return tempFileHandle;
+    }
+
+    /**
+     * Set temporary file handle.
+     *
+     * @param fileHandle temporary file handle
+     */
+    @Override
+    public void setTempJavaCodeFragmentFiles(TempJavaCodeFragmentFiles fileHandle) {
+
+        tempFileHandle = fileHandle;
+    }
+
+    /**
      * Prepare the information for java code generation corresponding to YANG
      * container info.
      *
      * @param codeGenDir code generation directory
+     * @throws IOException IO operations fails
      */
     @Override
-    public void generateCodeEntry(String codeGenDir) {
+    public void generateCodeEntry(String codeGenDir) throws IOException {
+
         getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName())));
         getJavaFileInfo().setPackage(getCurNodePackage(this));
+
         getJavaFileInfo().setPackageFilePath(
                 getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage()));
         getJavaFileInfo().setBaseCodeGenPath(codeGenDir);
-        // TODO: generate type define temporary files
+        String absloutePath = getAbsolutePackagePath(
+                getJavaFileInfo().getBaseCodeGenPath(),
+                getJavaFileInfo().getPackageFilePath());
+
+        setTempJavaCodeFragmentFiles(new TempJavaCodeFragmentFiles(
+                getJavaFileInfo().getGeneratedFileTypes(), absloutePath,
+                getJavaFileInfo().getJavaName()));
+
+        getTempJavaCodeFragmentFiles().addTypeDefAttributeToTempFiles(this);
+
     }
 
     /**
      * Create a java file using the YANG grouping info.
+     * @throws IOException IO operations fails
      */
     @Override
-    public void generateCodeExit() {
-        // TODO Auto-generated method stub
+    public void generateCodeExit() throws IOException {
 
+        getTempJavaCodeFragmentFiles().setCurYangNode(this);
+        getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_TYPEDEF_CLASS, this);
     }
 
 }
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 97b4758..5a1f206 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
@@ -22,7 +22,41 @@
 import org.onosproject.yangutils.datamodel.YangDataTypes;
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.utils.UtilConstants;
+
+import static org.onosproject.yangutils.datamodel.YangDataTypes.BINARY;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.BITS;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.BOOLEAN;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.DECIMAL64;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.DERIVED;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.EMPTY;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.ENUMERATION;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.IDENTITYREF;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.INSTANCE_IDENTIFIER;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.INT16;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.INT32;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.INT64;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.INT8;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.LEAFREF;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.STRING;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.UINT16;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.UINT32;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.UINT64;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.UINT8;
+import static org.onosproject.yangutils.datamodel.YangDataTypes.UNION;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
+import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
+import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
+import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
+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;
+import static org.onosproject.yangutils.utils.UtilConstants.LONG;
+import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
+import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
 
 /**
  * Provides java data types corresponding to YANG type.
@@ -43,6 +77,7 @@
      * @return import info
      */
     public static Set<JavaQualifiedTypeInfo> getImportInfo() {
+
         return importInfo;
     }
 
@@ -52,6 +87,7 @@
      * @param importData import info
      */
     public static void addImportInfo(JavaQualifiedTypeInfo importData) {
+
         getImportInfo().add(importData);
     }
 
@@ -62,47 +98,48 @@
      * @return java type
      */
     public static String getJavaDataType(YangType<?> yangType) {
+
         YangDataTypes type = yangType.getDataType();
 
-        if (type.equals(YangDataTypes.INT8)) {
-            return UtilConstants.BYTE;
-        } else if (type.equals(YangDataTypes.INT16)) {
-            return UtilConstants.SHORT;
-        } else if (type.equals(YangDataTypes.INT32)) {
-            return UtilConstants.INT;
-        } else if (type.equals(YangDataTypes.INT64)) {
-            return UtilConstants.LONG;
-        } else if (type.equals(YangDataTypes.UINT8)) {
-            return UtilConstants.SHORT;
-        } else if (type.equals(YangDataTypes.UINT16)) {
-            return UtilConstants.INT;
-        } else if (type.equals(YangDataTypes.UINT32)) {
-            return UtilConstants.LONG;
-        } else if (type.equals(YangDataTypes.UINT64)) {
+        if (type.equals(INT8)) {
+            return BYTE;
+        } else if (type.equals(INT16)) {
+            return SHORT;
+        } else if (type.equals(INT32)) {
+            return INT;
+        } else if (type.equals(INT64)) {
+            return LONG;
+        } else if (type.equals(UINT8)) {
+            return SHORT;
+        } else if (type.equals(UINT16)) {
+            return INT;
+        } else if (type.equals(UINT32)) {
+            return LONG;
+        } else if (type.equals(UINT64)) {
             //TODO: BIGINTEGER.
-        } else if (type.equals(YangDataTypes.DECIMAL64)) {
+        } else if (type.equals(DECIMAL64)) {
             //TODO: DECIMAL64.
-        } else if (type.equals(YangDataTypes.STRING)) {
-            return UtilConstants.STRING;
-        } else if (type.equals(YangDataTypes.BOOLEAN)) {
-            return UtilConstants.BOOLEAN;
-        } else if (type.equals(YangDataTypes.ENUMERATION)) {
+        } else if (type.equals(STRING)) {
+            return STRING_DATA_TYPE;
+        } else if (type.equals(BOOLEAN)) {
+            return BOOLEAN_DATA_TYPE;
+        } else if (type.equals(ENUMERATION)) {
             //TODO: ENUMERATION.
-        } else if (type.equals(YangDataTypes.BITS)) {
+        } else if (type.equals(BITS)) {
             //TODO:BITS
-        } else if (type.equals(YangDataTypes.BINARY)) {
+        } else if (type.equals(BINARY)) {
             //TODO:BINARY
-        } else if (type.equals(YangDataTypes.LEAFREF)) {
+        } else if (type.equals(LEAFREF)) {
             //TODO:LEAFREF
-        } else if (type.equals(YangDataTypes.IDENTITYREF)) {
+        } else if (type.equals(IDENTITYREF)) {
             //TODO:IDENTITYREF
-        } else if (type.equals(YangDataTypes.EMPTY)) {
+        } else if (type.equals(EMPTY)) {
             //TODO:EMPTY
-        } else if (type.equals(YangDataTypes.UNION)) {
+        } else if (type.equals(UNION)) {
             //TODO:UNION
-        } else if (type.equals(YangDataTypes.INSTANCE_IDENTIFIER)) {
+        } else if (type.equals(INSTANCE_IDENTIFIER)) {
             //TODO:INSTANCE_IDENTIFIER
-        } else if (type.equals(YangDataTypes.DERIVED)) {
+        } else if (type.equals(DERIVED)) {
             return yangType.getDataTypeName();
         }
         return null;
@@ -116,77 +153,76 @@
      * @return java import class
      */
     public static String getJavaImportClass(YangType<?> yangType, boolean isListAttr) {
+
         YangDataTypes type = yangType.getDataType();
 
         if (isListAttr) {
-            if (type.equals(YangDataTypes.INT8)) {
-                return UtilConstants.BYTE_WRAPPER;
-            } else if (type.equals(YangDataTypes.INT16)) {
-                return UtilConstants.SHORT_WRAPPER;
-            } else if (type.equals(YangDataTypes.INT32)) {
-                return UtilConstants.INTEGER_WRAPPER;
-            } else if (type.equals(YangDataTypes.INT64)) {
-                return UtilConstants.LONG_WRAPPER;
-            } else if (type.equals(YangDataTypes.UINT8)) {
-                return UtilConstants.SHORT_WRAPPER;
-            } else if (type.equals(YangDataTypes.UINT16)) {
-                return UtilConstants.INTEGER_WRAPPER;
-            } else if (type.equals(YangDataTypes.UINT32)) {
-                return UtilConstants.LONG_WRAPPER;
-            } else if (type.equals(YangDataTypes.UINT64)) {
+            if (type.equals(INT8)) {
+                return BYTE_WRAPPER;
+            } else if (type.equals(INT16)) {
+                return SHORT_WRAPPER;
+            } else if (type.equals(INT32)) {
+                return INTEGER_WRAPPER;
+            } else if (type.equals(INT64)) {
+                return LONG_WRAPPER;
+            } else if (type.equals(UINT8)) {
+                return SHORT_WRAPPER;
+            } else if (type.equals(UINT16)) {
+                return INTEGER_WRAPPER;
+            } else if (type.equals(UINT32)) {
+                return LONG_WRAPPER;
+            } else if (type.equals(UINT64)) {
                 //TODO: BIGINTEGER.
-            } else if (type.equals(YangDataTypes.DECIMAL64)) {
+            } else if (type.equals(DECIMAL64)) {
                 //TODO: DECIMAL64.
-            } else if (type.equals(YangDataTypes.STRING)) {
-                return UtilConstants.STRING;
-            } else if (type.equals(YangDataTypes.BOOLEAN)) {
-                return UtilConstants.BOOLEAN_WRAPPER;
-            } else if (type.equals(YangDataTypes.ENUMERATION)) {
+            } else if (type.equals(STRING)) {
+                return STRING_DATA_TYPE;
+            } else if (type.equals(BOOLEAN)) {
+                return BOOLEAN_WRAPPER;
+            } else if (type.equals(ENUMERATION)) {
                 //TODO: ENUMERATION.
-            } else if (type.equals(YangDataTypes.BITS)) {
+            } else if (type.equals(BITS)) {
                 //TODO:BITS
-            } else if (type.equals(YangDataTypes.BINARY)) {
+            } else if (type.equals(BINARY)) {
                 //TODO:BINARY
-            } else if (type.equals(YangDataTypes.LEAFREF)) {
+            } else if (type.equals(LEAFREF)) {
                 //TODO:LEAFREF
-            } else if (type.equals(YangDataTypes.IDENTITYREF)) {
+            } else if (type.equals(IDENTITYREF)) {
                 //TODO:IDENTITYREF
-            } else if (type.equals(YangDataTypes.EMPTY)) {
+            } else if (type.equals(EMPTY)) {
                 //TODO:EMPTY
-            } else if (type.equals(YangDataTypes.UNION)) {
+            } else if (type.equals(UNION)) {
                 //TODO:UNION
-            } else if (type.equals(YangDataTypes.INSTANCE_IDENTIFIER)) {
+            } else if (type.equals(INSTANCE_IDENTIFIER)) {
                 //TODO:INSTANCE_IDENTIFIER
-            } else if (type.equals(YangDataTypes.DERIVED)) {
-                return JavaIdentifierSyntax
-                        .getCaptialCase(JavaIdentifierSyntax.getCamelCase(yangType.getDataTypeName()));
+            } else if (type.equals(DERIVED)) {
+                return getCaptialCase(getCamelCase(yangType.getDataTypeName()));
             }
         } else {
-            if (type.equals(YangDataTypes.UINT64)) {
+            if (type.equals(UINT64)) {
                 //TODO: BIGINTEGER.
-            } else if (type.equals(YangDataTypes.DECIMAL64)) {
+            } else if (type.equals(DECIMAL64)) {
                 //TODO: DECIMAL64.
-            } else if (type.equals(YangDataTypes.STRING)) {
-                return UtilConstants.STRING;
-            } else if (type.equals(YangDataTypes.ENUMERATION)) {
+            } else if (type.equals(STRING)) {
+                return STRING_DATA_TYPE;
+            } else if (type.equals(ENUMERATION)) {
                 //TODO: ENUMERATION.
-            } else if (type.equals(YangDataTypes.BITS)) {
+            } else if (type.equals(BITS)) {
                 //TODO:BITS
-            } else if (type.equals(YangDataTypes.BINARY)) {
+            } else if (type.equals(BINARY)) {
                 //TODO:BINARY
-            } else if (type.equals(YangDataTypes.LEAFREF)) {
+            } else if (type.equals(LEAFREF)) {
                 //TODO:LEAFREF
-            } else if (type.equals(YangDataTypes.IDENTITYREF)) {
+            } else if (type.equals(IDENTITYREF)) {
                 //TODO:IDENTITYREF
-            } else if (type.equals(YangDataTypes.EMPTY)) {
+            } else if (type.equals(EMPTY)) {
                 //TODO:EMPTY
-            } else if (type.equals(YangDataTypes.UNION)) {
+            } else if (type.equals(UNION)) {
                 //TODO:UNION
-            } else if (type.equals(YangDataTypes.INSTANCE_IDENTIFIER)) {
+            } else if (type.equals(INSTANCE_IDENTIFIER)) {
                 //TODO:INSTANCE_IDENTIFIER
-            } else if (type.equals(YangDataTypes.DERIVED)) {
-                return JavaIdentifierSyntax
-                        .getCaptialCase(JavaIdentifierSyntax.getCamelCase(yangType.getDataTypeName()));
+            } else if (type.equals(DERIVED)) {
+                return getCaptialCase(getCamelCase(yangType.getDataTypeName()));
             }
         }
         return null;
@@ -201,40 +237,41 @@
      * @return java import package
      */
     public static String getJavaImportPackage(YangType<?> yangType, boolean isListAttr, String classInfo) {
+
         YangDataTypes type = yangType.getDataType();
 
         if (isListAttr) {
-            if (type.equals(YangDataTypes.INT8)
-                    || type.equals(YangDataTypes.INT16)
-                    || type.equals(YangDataTypes.INT32)
-                    || type.equals(YangDataTypes.INT64)
-                    || type.equals(YangDataTypes.UINT8)
-                    || type.equals(YangDataTypes.UINT16)
-                    || type.equals(YangDataTypes.UINT32)
-                    || type.equals(YangDataTypes.STRING)
-                    || type.equals(YangDataTypes.BOOLEAN)) {
-                return UtilConstants.JAVA_LANG;
-            } else if (type.equals(YangDataTypes.UINT64)) {
+            if (type.equals(INT8)
+                    || type.equals(INT16)
+                    || type.equals(INT32)
+                    || type.equals(INT64)
+                    || type.equals(UINT8)
+                    || type.equals(UINT16)
+                    || type.equals(UINT32)
+                    || type.equals(STRING)
+                    || type.equals(BOOLEAN)) {
+                return JAVA_LANG;
+            } else if (type.equals(UINT64)) {
                 //TODO: BIGINTEGER.
-            } else if (type.equals(YangDataTypes.DECIMAL64)) {
+            } else if (type.equals(DECIMAL64)) {
                 //TODO: DECIMAL64.
-            } else if (type.equals(YangDataTypes.ENUMERATION)) {
+            } else if (type.equals(ENUMERATION)) {
                 //TODO: ENUMERATION.
-            } else if (type.equals(YangDataTypes.BITS)) {
+            } else if (type.equals(BITS)) {
                 //TODO:BITS
-            } else if (type.equals(YangDataTypes.BINARY)) {
+            } else if (type.equals(BINARY)) {
                 //TODO:BINARY
-            } else if (type.equals(YangDataTypes.LEAFREF)) {
+            } else if (type.equals(LEAFREF)) {
                 //TODO:LEAFREF
-            } else if (type.equals(YangDataTypes.IDENTITYREF)) {
+            } else if (type.equals(IDENTITYREF)) {
                 //TODO:IDENTITYREF
-            } else if (type.equals(YangDataTypes.EMPTY)) {
+            } else if (type.equals(EMPTY)) {
                 //TODO:EMPTY
-            } else if (type.equals(YangDataTypes.UNION)) {
+            } else if (type.equals(UNION)) {
                 //TODO:UNION
-            } else if (type.equals(YangDataTypes.INSTANCE_IDENTIFIER)) {
+            } else if (type.equals(INSTANCE_IDENTIFIER)) {
                 //TODO:INSTANCE_IDENTIFIER
-            } else if (type.equals(YangDataTypes.DERIVED)) {
+            } else if (type.equals(DERIVED)) {
                 for (JavaQualifiedTypeInfo imports : getImportInfo()) {
                     if (imports.getClassInfo().equals(classInfo)) {
                         return imports.getPkgInfo();
@@ -243,29 +280,29 @@
             }
         } else {
 
-            if (type.equals(YangDataTypes.UINT64)) {
+            if (type.equals(UINT64)) {
                 //TODO: BIGINTEGER.
-            } else if (type.equals(YangDataTypes.DECIMAL64)) {
+            } else if (type.equals(DECIMAL64)) {
                 //TODO: DECIMAL64.
-            } else if (type.equals(YangDataTypes.STRING)) {
-                return UtilConstants.JAVA_LANG;
-            } else if (type.equals(YangDataTypes.ENUMERATION)) {
+            } else if (type.equals(STRING)) {
+                return JAVA_LANG;
+            } else if (type.equals(ENUMERATION)) {
                 //TODO: ENUMERATION.
-            } else if (type.equals(YangDataTypes.BITS)) {
+            } else if (type.equals(BITS)) {
                 //TODO:BITS
-            } else if (type.equals(YangDataTypes.BINARY)) {
+            } else if (type.equals(BINARY)) {
                 //TODO:BINARY
-            } else if (type.equals(YangDataTypes.LEAFREF)) {
+            } else if (type.equals(LEAFREF)) {
                 //TODO:LEAFREF
-            } else if (type.equals(YangDataTypes.IDENTITYREF)) {
+            } else if (type.equals(IDENTITYREF)) {
                 //TODO:IDENTITYREF
-            } else if (type.equals(YangDataTypes.EMPTY)) {
+            } else if (type.equals(EMPTY)) {
                 //TODO:EMPTY
-            } else if (type.equals(YangDataTypes.UNION)) {
+            } else if (type.equals(UNION)) {
                 //TODO:UNION
-            } else if (type.equals(YangDataTypes.INSTANCE_IDENTIFIER)) {
+            } else if (type.equals(INSTANCE_IDENTIFIER)) {
                 //TODO:INSTANCE_IDENTIFIER
-            } else if (type.equals(YangDataTypes.DERIVED)) {
+            } else if (type.equals(DERIVED)) {
                 for (JavaQualifiedTypeInfo imports : getImportInfo()) {
                     if (imports.getClassInfo().equals(classInfo)) {
                         return imports.getPkgInfo();
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 6f3b3bb..70c4cb8 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
@@ -16,8 +16,22 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
-import org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType;
-import org.onosproject.yangutils.utils.UtilConstants;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_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.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.FINAL;
+import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
+import static org.onosproject.yangutils.utils.UtilConstants.IMPLEMENTS;
+import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
+import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 
 /**
  * Generates class definition for generated files.
@@ -44,19 +58,19 @@
          * based on the file type and the YANG name of the file, generate the
          * class / interface definition start.
          */
-        if ((genFileTypes & GeneratedJavaFileType.INTERFACE_MASK) != 0) {
+        if ((genFileTypes & INTERFACE_MASK) != 0) {
 
             return getInterfaceDefinition(yangName);
-        } else if ((genFileTypes & GeneratedJavaFileType.BUILDER_CLASS_MASK) != 0) {
+        } else if ((genFileTypes & BUILDER_CLASS_MASK) != 0) {
 
             return getBuilderClassDefinition(yangName);
-        } else if ((genFileTypes & GeneratedJavaFileType.IMPL_CLASS_MASK) != 0) {
+        } else if ((genFileTypes & IMPL_CLASS_MASK) != 0) {
 
             return getImplClassDefinition(yangName);
-        } else if ((genFileTypes & GeneratedJavaFileType.BUILDER_INTERFACE_MASK) != 0) {
+        } else if ((genFileTypes & BUILDER_INTERFACE_MASK) != 0) {
 
             return getBuilderInterfaceDefinition(yangName);
-        } else if ((genFileTypes & GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS) != 0) {
+        } else if ((genFileTypes & GENERATE_TYPEDEF_CLASS) != 0) {
 
             return getTypeDefClassDefinition(yangName);
         }
@@ -71,8 +85,7 @@
      */
     private static String getInterfaceDefinition(String yangName) {
 
-        return UtilConstants.PUBLIC + UtilConstants.SPACE + UtilConstants.INTERFACE + UtilConstants.SPACE + yangName
-                + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE;
+        return PUBLIC + SPACE + INTERFACE + SPACE + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -83,8 +96,8 @@
      * @return definition
      */
     private static String getBuilderInterfaceDefinition(String yangName) {
-        return UtilConstants.INTERFACE + UtilConstants.SPACE + yangName + UtilConstants.BUILDER + UtilConstants.SPACE
-                + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE + UtilConstants.NEW_LINE;
+
+        return INTERFACE + SPACE + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + NEW_LINE;
     }
 
     /**
@@ -95,10 +108,8 @@
      */
     private static String getBuilderClassDefinition(String yangName) {
 
-        return UtilConstants.PUBLIC + UtilConstants.SPACE + UtilConstants.CLASS + UtilConstants.SPACE + yangName
-                + UtilConstants.BUILDER + UtilConstants.SPACE + UtilConstants.IMPLEMENTS + UtilConstants.SPACE
-                + yangName + UtilConstants.PERIOD + yangName + UtilConstants.BUILDER + UtilConstants.SPACE
-                + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE;
+        return PUBLIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE + IMPLEMENTS + SPACE + yangName + PERIOD
+                + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -109,10 +120,8 @@
      */
     private static String getImplClassDefinition(String yangName) {
 
-        return UtilConstants.PUBLIC + UtilConstants.SPACE + UtilConstants.FINAL + UtilConstants.SPACE
-                + UtilConstants.CLASS + UtilConstants.SPACE + yangName + UtilConstants.IMPL + UtilConstants.SPACE
-                + UtilConstants.IMPLEMENTS + UtilConstants.SPACE + yangName + UtilConstants.SPACE
-                + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE;
+        return PUBLIC + SPACE + FINAL + SPACE + CLASS + SPACE + yangName + IMPL + SPACE + IMPLEMENTS + SPACE + yangName
+                + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -123,9 +132,6 @@
      */
     private static String getTypeDefClassDefinition(String yangName) {
 
-        return UtilConstants.PUBLIC + UtilConstants.SPACE + UtilConstants.FINAL + UtilConstants.SPACE
-                + UtilConstants.CLASS + UtilConstants.SPACE + yangName + UtilConstants.SPACE
-                + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE;
+        return PUBLIC + SPACE + FINAL + SPACE + CLASS + SPACE + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
-
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/GenerateJavaCodeExitBuilder.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/GenerateJavaCodeExitBuilder.java
deleted file mode 100644
index 4acb1e3..0000000
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/GenerateJavaCodeExitBuilder.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright 2016 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.yangutils.translator.tojava.utils;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
-import org.onosproject.yangutils.translator.tojava.HasJavaImportData;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
-import org.onosproject.yangutils.translator.tojava.JavaImportData;
-import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.utils.UtilConstants;
-
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-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.utils.JavaFileGenerator.appendFileContents;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.clean;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.closeFileHandles;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateBuilderClassFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateBuilderInterfaceFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateImplClassFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateInterfaceFile;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.getFileObject;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.insert;
-
-/**
- * Provides generate java code exit.
- */
-public final class GenerateJavaCodeExitBuilder {
-
-    private static final String JAVA_FILE_EXTENSION = ".java";
-
-    /**
-     * Default constructor.
-     */
-    private GenerateJavaCodeExitBuilder() {
-    }
-
-    /**
-     * Sets import for hash and equals method.
-     *
-     * @return import string for implementing hash and equals
-     */
-    private static String setImportForHashAndEquals() {
-
-        return UtilConstants.IMPORT + UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_PKG + UtilConstants.PERIOD
-                + UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_CLASS;
-    }
-
-    /**
-     * Sets import for to string method.
-     *
-     * @return import string for implementing to string
-     */
-    private static String setImportForToString() {
-
-        return UtilConstants.IMPORT + UtilConstants.GOOGLE_MORE_OBJECT_IMPORT_PKG + UtilConstants.PERIOD
-                + UtilConstants.GOOGLE_MORE_OBJECT_IMPORT_CLASS;
-    }
-
-    /**
-     * Sets import for to list.
-     *
-     * @return import string for list collection
-     */
-    private static String setImportForList() {
-
-        return UtilConstants.IMPORT + UtilConstants.COLLECTION_IMPORTS + UtilConstants.PERIOD
-                + UtilConstants.LIST + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE;
-    }
-
-    /**
-     * Construct java code exit.
-     *
-     * @param fileType generated file type
-     * @param curNode current YANG node
-     * @throws IOException when fails to generate java files
-     */
-    public static void generateJavaFile(int fileType, YangNode curNode) throws IOException {
-
-        JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
-        String className = JavaIdentifierSyntax.getCaptialCase(javaFileInfo.getJavaName());
-        String pkg = javaFileInfo.getPackageFilePath();
-        List<String> imports = getImports(((HasJavaImportData) curNode).getJavaImportData());
-
-        /**
-         * Start generation of files.
-         */
-        if ((fileType & INTERFACE_MASK) != 0 | (fileType & BUILDER_INTERFACE_MASK) != 0
-                | fileType == GENERATE_INTERFACE_WITH_BUILDER) {
-
-            /**
-             * Create interface file.
-             */
-            String interfaceFileName = className;
-            File interfaceFile = getFileObject(pkg, interfaceFileName, JAVA_FILE_EXTENSION, javaFileInfo);
-            interfaceFile = generateInterfaceFile(interfaceFile, imports, curNode);
-            /**
-             * Create temp builder interface file.
-             */
-            String builderInterfaceFileName = className
-                    + UtilConstants.BUILDER + UtilConstants.INTERFACE;
-            File builderInterfaceFile = getFileObject(pkg, builderInterfaceFileName, JAVA_FILE_EXTENSION, javaFileInfo);
-            builderInterfaceFile = generateBuilderInterfaceFile(builderInterfaceFile, curNode);
-            /**
-             * Append builder interface file to interface file and close it.
-             */
-            appendFileContents(builderInterfaceFile, interfaceFile);
-            insert(interfaceFile, JavaCodeSnippetGen.getJavaClassDefClose());
-            /**
-             * Close file handle for interface files.
-             */
-            closeFileHandles(builderInterfaceFile);
-            closeFileHandles(interfaceFile);
-
-            /**
-             * Remove temp files.
-             */
-            clean(builderInterfaceFile);
-        }
-
-        imports.add(setImportForHashAndEquals());
-        imports.add(setImportForToString());
-        java.util.Collections.sort(imports);
-
-        if ((fileType & BUILDER_CLASS_MASK) != 0 | (fileType & IMPL_CLASS_MASK) != 0
-                | fileType == GENERATE_INTERFACE_WITH_BUILDER) {
-
-            /**
-             * Create builder class file.
-             */
-            String builderFileName = className
-                    + UtilConstants.BUILDER;
-            File builderFile = getFileObject(pkg, builderFileName, JAVA_FILE_EXTENSION, javaFileInfo);
-            builderFile = generateBuilderClassFile(builderFile, imports, curNode);
-            /**
-             * Create temp impl class file.
-             */
-
-            String implFileName = className + UtilConstants.IMPL;
-            File implTempFile = getFileObject(pkg, implFileName, JAVA_FILE_EXTENSION, javaFileInfo);
-            implTempFile = generateImplClassFile(implTempFile, curNode);
-            /**
-             * Append impl class to builder class and close it.
-             */
-            appendFileContents(implTempFile, builderFile);
-            insert(builderFile, JavaCodeSnippetGen.getJavaClassDefClose());
-
-            /**
-             * Close file handle for classes files.
-             */
-            closeFileHandles(implTempFile);
-            closeFileHandles(builderFile);
-
-            /**
-             * Remove temp files.
-             */
-            clean(implTempFile);
-        }
-
-        /**
-         * if ((fileType & GENERATE_TYPEDEF_CLASS) != 0) {
-         *
-         * /** Create builder class file. //
-         */
-        //String typeDefFileName = className;
-        //File typeDefFile = JavaFileGenerator.getFileObject(path, typeDefFileName, JAVA_FILE_EXTENSION,
-        //      ((HasJavaFileInfo) curNode).getJavaFileInfo());
-        //typeDefFile = JavaFileGenerator.generateTypeDefClassFile(typeDefFile, className, imports,
-        //        path.replace('/', '.'), attrList, ((HasJavaFileInfo) curNode).getJavaFileInfo());
-        // JavaFileGenerator.insert(typeDefFile, JavaCodeSnippetGen.getJavaClassDefClose());
-
-        //  /**
-        //     * Close file handle for classes files.
-        //       */
-        //        JavaFileGenerator.closeFileHandles(typeDefFile);
-        //      }
-        //
-    }
-
-    /**
-     * Returns import for class.
-     *
-     * @param javaImportData import data
-     * @return imports for class
-     */
-    private static List<String> getImports(JavaImportData javaImportData) {
-
-        String importString;
-        List<String> imports = new ArrayList<>();
-
-        for (JavaQualifiedTypeInfo importInfo : javaImportData.getImportSet()) {
-            importString = UtilConstants.IMPORT;
-            if (importInfo.getPkgInfo() != "" && importInfo.getClassInfo() != null
-                    && importInfo.getPkgInfo() != UtilConstants.JAVA_LANG) {
-                importString = importString + importInfo.getPkgInfo() + ".";
-                importString = importString + importInfo.getClassInfo() + UtilConstants.SEMI_COLAN
-                        + UtilConstants.NEW_LINE;
-
-                imports.add(importString);
-            }
-        }
-
-        if (javaImportData.getIfListImported()) {
-            imports.add(setImportForList());
-        }
-
-        java.util.Collections.sort(imports);
-        return imports;
-    }
-}
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 ab8ee5c..69f7b54 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
@@ -17,7 +17,19 @@
 package org.onosproject.yangutils.translator.tojava.utils;
 
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.utils.UtilConstants;
+
+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.utils.UtilConstants.CLOSE_CURLY_BRACKET;
+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.IMPORT;
+import static org.onosproject.yangutils.utils.UtilConstants.LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
+import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 
 /**
  * Utility class to generate the java snippet.
@@ -52,8 +64,7 @@
      */
     public static String getImportText(JavaQualifiedTypeInfo importInfo) {
 
-        return UtilConstants.IMPORT + importInfo.getPkgInfo() + UtilConstants.PERIOD + importInfo.getClassInfo()
-                + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE;
+        return IMPORT + importInfo.getPkgInfo() + PERIOD + importInfo.getClassInfo() + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -69,8 +80,8 @@
         /*
          * get the camel case name for java class / interface.
          */
-        yangName = JavaIdentifierSyntax.getCamelCase(yangName);
-        return ClassDefinitionGenerator.generateClassDefinition(genFileTypes, yangName);
+        yangName = getCamelCase(yangName);
+        return generateClassDefinition(genFileTypes, yangName);
     }
 
     /**
@@ -85,30 +96,23 @@
     public static String getJavaAttributeDefination(String javaAttributeTypePkg, String javaAttributeType,
             String javaAttributeName, boolean isList) {
 
-        String attributeDefination = UtilConstants.PRIVATE
-                + UtilConstants.SPACE;
+        String attributeDefination = PRIVATE + SPACE;
 
         if (!isList) {
             if (javaAttributeTypePkg != null) {
-                attributeDefination = attributeDefination
-                        + javaAttributeTypePkg + UtilConstants.PERIOD;
+                attributeDefination = attributeDefination + javaAttributeTypePkg + PERIOD;
             }
 
-            attributeDefination = attributeDefination
-                    + javaAttributeType
-                    + UtilConstants.SPACE
-                    + javaAttributeName
-                    + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE;
+            attributeDefination = attributeDefination + javaAttributeType + SPACE + javaAttributeName + SEMI_COLAN
+                    + NEW_LINE;
         } else {
-            attributeDefination = attributeDefination + UtilConstants.LIST + UtilConstants.DIAMOND_OPEN_BRACKET;
+            attributeDefination = attributeDefination + LIST + DIAMOND_OPEN_BRACKET;
             if (javaAttributeTypePkg != null) {
-                attributeDefination = attributeDefination
-                        + javaAttributeTypePkg + UtilConstants.PERIOD;
+                attributeDefination = attributeDefination + javaAttributeTypePkg + PERIOD;
             }
 
-            attributeDefination = attributeDefination
-                    + javaAttributeType + UtilConstants.DIAMOND_CLOSE_BRACKET + UtilConstants.SPACE
-                    + javaAttributeName + UtilConstants.SUFIX_S + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE;
+            attributeDefination = attributeDefination + javaAttributeType + DIAMOND_CLOSE_BRACKET + SPACE
+                    + javaAttributeName + SEMI_COLAN + NEW_LINE;
         }
         return attributeDefination;
     }
@@ -121,7 +125,7 @@
      */
     public static String getListAttribute(String type) {
 
-        return UtilConstants.LIST + UtilConstants.DIAMOND_OPEN_BRACKET + type + UtilConstants.DIAMOND_CLOSE_BRACKET;
+        return LIST + DIAMOND_OPEN_BRACKET + type + DIAMOND_CLOSE_BRACKET;
     }
 
     /**
@@ -132,7 +136,6 @@
      */
     public static String getJavaClassDefClose() {
 
-        return UtilConstants.CLOSE_CURLY_BRACKET;
+        return CLOSE_CURLY_BRACKET;
     }
-
 }
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 ab537c8..299f5ac 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
@@ -21,17 +21,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.io.FileUtils;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.HasTempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
-import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.utils.UtilConstants;
-import org.onosproject.yangutils.utils.io.impl.CopyrightHeader;
-import org.onosproject.yangutils.utils.io.impl.FileSystemUtil;
-import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
-import org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
@@ -47,17 +40,25 @@
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuildString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructorStart;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getDefaultConstructorString;
 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.getHashCodeMethodClose;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodOpen;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodClose;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodOpen;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.parseBuilderInterfaceBuildMethodString;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+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.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
+import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.partString;
 
 /**
@@ -72,20 +73,6 @@
     }
 
     /**
-     * Returns a file object for generated file.
-     *
-     * @param fileName file name
-     * @param filePath file package path
-     * @param extension file extension
-     * @param handle cached file handle
-     * @return file object
-     */
-    public static File getFileObject(String filePath, String fileName, String extension, JavaFileInfo handle) {
-
-        return new File(handle.getBaseCodeGenPath() + filePath + File.separator + fileName + extension);
-    }
-
-    /**
      * Returns generated interface file for current node.
      *
      * @param file file
@@ -101,13 +88,16 @@
         String className = getCaptialCase(javaFileInfo.getJavaName());
         String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
 
-        initiateFile(file, className, INTERFACE_MASK, imports, path);
+        initiateJavaFileGeneration(file, className, INTERFACE_MASK, imports, path);
 
         /**
          * Add getter methods to interface file.
          */
         try {
-            appendMethod(file, getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK, curNode));
+            /**
+             * Getter methods.
+             */
+            insertDataIntoJavaFile(file, getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK, curNode));
         } catch (IOException e) {
             throw new IOException("No data found in temporary java code fragment files for " + className
                     + " while interface file generation");
@@ -130,15 +120,19 @@
         String className = getCaptialCase(javaFileInfo.getJavaName());
         String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
 
-        initiateFile(file, className, BUILDER_INTERFACE_MASK, null, path);
+        initiateJavaFileGeneration(file, className, BUILDER_INTERFACE_MASK, null, path);
         List<String> methods = new ArrayList<>();
 
         try {
-            methods.add(UtilConstants.FOUR_SPACE_INDENTATION
-                    + getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK, curNode));
-            methods.add(UtilConstants.NEW_LINE);
-            methods.add(UtilConstants.FOUR_SPACE_INDENTATION
-                    + getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK, curNode));
+            /**
+             * Getter methods.
+             */
+            methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK, curNode));
+            /**
+             * Setter methods.
+             */
+            methods.add(NEW_LINE);
+            methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK, curNode));
         } catch (IOException e) {
             throw new IOException("No data found in temporary java code fragment files for " + className
                     + " while builder interface file generation");
@@ -147,16 +141,17 @@
         /**
          * Add build method to builder interface file.
          */
-        methods.add(parseBuilderInterfaceBuildMethodString(className));
+        methods.add(
+                ((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addBuildMethodForInterface());
 
         /**
          * Add getters and setters in builder interface.
          */
         for (String method : methods) {
-            appendMethod(file, method);
+            insertDataIntoJavaFile(file, method);
         }
 
-        insert(file, UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE);
+        insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
         return file;
     }
 
@@ -176,7 +171,7 @@
         String className = getCaptialCase(javaFileInfo.getJavaName());
         String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
 
-        initiateFile(file, className, BUILDER_CLASS_MASK, imports, path);
+        initiateJavaFileGeneration(file, className, BUILDER_CLASS_MASK, imports, path);
 
         List<String> methods = new ArrayList<>();
 
@@ -184,16 +179,22 @@
          * Add attribute strings.
          */
         try {
-            insert(file, UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                    + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
+            insertDataIntoJavaFile(file,
+                    NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
         } catch (IOException e) {
             throw new IOException("No data found in temporary java code fragment files for " + className
                     + " while builder class file generation");
         }
 
         try {
+            /**
+             * Getter methods.
+             */
             methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK, curNode));
-            methods.add(getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK, curNode) + UtilConstants.NEW_LINE);
+            /**
+             * Setter methods.
+             */
+            methods.add(getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK, curNode) + NEW_LINE);
         } catch (IOException e) {
             throw new IOException("No data found in temporary java code fragment files for " + className
                     + " while builder class file generation");
@@ -202,15 +203,15 @@
         /**
          * Add default constructor and build method impl.
          */
-        methods.add(getBuildString(className) + UtilConstants.NEW_LINE);
-        methods.add(UtilConstants.NEW_LINE
-                + getDefaultConstructorString(className + UtilConstants.BUILDER, UtilConstants.PUBLIC));
+        methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addBuildMethodImpl());
+        methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles()
+                .addDefaultConstructor(PUBLIC, BUILDER));
 
         /**
          * Add methods in builder class.
          */
         for (String method : methods) {
-            appendMethod(file, method);
+            insertDataIntoJavaFile(file, method);
         }
         return file;
     }
@@ -231,7 +232,7 @@
         String className = getCaptialCase(javaFileInfo.getJavaName());
         String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
 
-        initiateFile(file, className, IMPL_CLASS_MASK, null, path);
+        initiateJavaFileGeneration(file, className, IMPL_CLASS_MASK, null, path);
 
         List<String> methods = new ArrayList<>();
 
@@ -239,25 +240,32 @@
          * Add attribute strings.
          */
         try {
-            insert(file, UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                    + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
+            insertDataIntoJavaFile(file,
+                    NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
         } catch (IOException e) {
             throw new IOException("No data found in temporary java code fragment files for " + className
                     + " while impl class file generation");
         }
 
-        insert(file, UtilConstants.NEW_LINE);
+        insertDataIntoJavaFile(file, NEW_LINE);
         try {
-
+            /**
+             * Getter methods.
+             */
             methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK, curNode));
-
+            /**
+             * Hash code method.
+             */
             methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() + partString(
-                    getDataFromTempFileHandle(HASH_CODE_IMPL_MASK, curNode).replace(UtilConstants.NEW_LINE,
-                            UtilConstants.EMPTY_STRING))));
-
-            methods.add(getEqualsMethodClose(getEqualsMethodOpen(className + UtilConstants.IMPL)
-                    + getDataFromTempFileHandle(EQUALS_IMPL_MASK, curNode)));
-
+                    getDataFromTempFileHandle(HASH_CODE_IMPL_MASK, curNode).replace(NEW_LINE, EMPTY_STRING))));
+            /**
+             * Equals method.
+             */
+            methods.add(getEqualsMethodClose(
+                    getEqualsMethodOpen(className + IMPL) + getDataFromTempFileHandle(EQUALS_IMPL_MASK, curNode)));
+            /**
+             * To string method.
+             */
             methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK, curNode)
                     + getToStringMethodClose());
 
@@ -267,8 +275,11 @@
         }
 
         try {
+            /**
+             * Constructor.
+             */
             methods.add(getConstructorStart(className) + getDataFromTempFileHandle(CONSTRUCTOR_IMPL_MASK, curNode)
-                    + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET);
+                    + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET);
         } catch (IOException e) {
             throw new IOException("No data found in temporary java code fragment files for " + className
                     + " while impl class file generation");
@@ -277,262 +288,100 @@
          * Add methods in impl class.
          */
         for (String method : methods) {
-            appendMethod(file, UtilConstants.FOUR_SPACE_INDENTATION + method + UtilConstants.NEW_LINE);
+            insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + method + NEW_LINE);
         }
-        insert(file, UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE);
+        insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
 
         return file;
     }
 
     /**
-     * Return data stored in temporary files.
+     * Generate class file for type def.
      *
+     * @param file generated file
      * @param curNode current YANG node
-     * @param generatedTempFiles mask for the types of files being generated
-     * @return data stored in temporary files
-     * @throws IOException when failed to get the data from temporary file
-     *             handle
-     */
-    private static String getDataFromTempFileHandle(int generatedTempFiles, YangNode curNode) throws IOException {
+     * @param imports imports for file
+     * @return type def class file
+     * @throws IOException when fails to generate class file
+    */
+    public static File generateTypeDefClassFile(File file, YangNode curNode, List<String> imports) throws IOException {
 
-        TempJavaCodeFragmentFiles tempJavaCodeFragmentFiles = ((HasTempJavaCodeFragmentFiles) curNode)
-                .getTempJavaCodeFragmentFiles();
+        JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
 
-        if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) {
-            return tempJavaCodeFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getAttributesTempFileHandle());
-        } else if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
-            return tempJavaCodeFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getGetterInterfaceTempFileHandle());
-        } else if ((generatedTempFiles & SETTER_FOR_INTERFACE_MASK) != 0) {
-            return tempJavaCodeFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getSetterInterfaceTempFileHandle());
-        } else if ((generatedTempFiles & GETTER_FOR_CLASS_MASK) != 0) {
-            return tempJavaCodeFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getGetterImplTempFileHandle());
-        } else if ((generatedTempFiles & SETTER_FOR_CLASS_MASK) != 0) {
-            return tempJavaCodeFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getSetterImplTempFileHandle());
-        } else if ((generatedTempFiles & CONSTRUCTOR_IMPL_MASK) != 0) {
-            return tempJavaCodeFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getConstructorImplTempFileHandle());
-        } else if ((generatedTempFiles & HASH_CODE_IMPL_MASK) != 0) {
-            return tempJavaCodeFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getHashCodeImplTempFileHandle());
-        } else if ((generatedTempFiles & EQUALS_IMPL_MASK) != 0) {
-            return tempJavaCodeFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getEqualsImplTempFileHandle());
-        } else if ((generatedTempFiles & TO_STRING_IMPL_MASK) != 0) {
-            return tempJavaCodeFragmentFiles
-                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getToStringImplTempFileHandle());
-        }
-        return null;
-    }
+        String className = getCaptialCase(javaFileInfo.getJavaName());
+        String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
 
-    /**
-     * Initiate generation of file based on generated file type.
-     *
-     * @param file generated file
-     * @param className generated file class name
-     * @param type generated file type
-     * @param imports imports for the file
-     * @param pkg generated file package
-     * @throws IOException when fails to generate a file
-     */
-    private static void initiateFile(File file, String className, int type, List<String> imports,
-            String pkg) throws IOException {
+        initiateJavaFileGeneration(file, className, GENERATE_TYPEDEF_CLASS, imports, path);
 
-        try {
-            file.createNewFile();
-            appendContents(file, className, type, imports, pkg);
-        } catch (IOException e) {
-            throw new IOException("Failed to create " + file.getName() + " class file.");
-        }
-    }
+        List<String> methods = new ArrayList<>();
 
-    /**
-     * Appends the temp files to main files.
-     *
-     * @param appendFile temp file
-     * @param srcFile main file
-     * @throws IOException when fails to append contents
-     */
-    public static void appendFileContents(File appendFile, File srcFile) throws IOException {
-
-        try {
-            FileSystemUtil.appendFileContents(appendFile, srcFile);
-        } catch (IOException e) {
-            throw new IOException("Failed to append " + appendFile + " in " + srcFile);
-        }
-    }
-
-    /**
-     * Append methods to the generated files.
-     *
-     * @param file file in which method needs to be appended
-     * @param method method which needs to be appended
-     * @throws IOException IO operation failure
-     */
-    private static void appendMethod(File file, String method) throws IOException {
-
-        insert(file, method);
-    }
-
-    /**
-     * Appends all the contents into a generated java file.
-     *
-     * @param file generated file
-     * @param fileName generated file name
-     * @param type generated file type
-     * @param pkg generated file package
-     * @param importsList list of java imports.
-     * @throws IOException when fails to append contents
-     */
-    private static void appendContents(File file, String fileName, int type, List<String> importsList,
-            String pkg) throws IOException {
-
-        String pkgString = parsePackageString(pkg, importsList);
-
-        if ((type & IMPL_CLASS_MASK) != 0) {
-
-            write(file, fileName, type, JavaDocType.IMPL_CLASS);
-        } else if ((type & BUILDER_INTERFACE_MASK) != 0) {
-
-            write(file, fileName, type, JavaDocType.BUILDER_INTERFACE);
-        } else if ((type & GENERATE_TYPEDEF_CLASS) != 0) {
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, fileName, type, JavaDocType.IMPL_CLASS);
-        } else if ((type & INTERFACE_MASK) != 0) {
-
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, fileName, type, JavaDocType.INTERFACE);
-        } else if ((type & BUILDER_CLASS_MASK) != 0) {
-
-            appendHeaderContents(file, pkgString, importsList);
-            write(file, fileName, type, JavaDocType.BUILDER_CLASS);
-        }
-    }
-
-    /**
-     * Removes base directory path from package and generates package string for
-     * file.
-     *
-     * @param pkg generated package
-     * @param importsList list of imports
-     * @return package string
-     */
-    private static String parsePackageString(String pkg, List<String> importsList) {
-
-        if (pkg.contains(UtilConstants.ORG)) {
-            String[] strArray = pkg.split(UtilConstants.ORG);
-            pkg = UtilConstants.ORG + strArray[1].replace(UtilConstants.SLASH, UtilConstants.PERIOD);
-        }
-        if (importsList != null) {
-            if (!importsList.isEmpty()) {
-                return UtilConstants.PACKAGE + UtilConstants.SPACE + pkg + UtilConstants.SEMI_COLAN
-                        + UtilConstants.NEW_LINE;
-            } else {
-                return UtilConstants.PACKAGE + UtilConstants.SPACE + pkg + UtilConstants.SEMI_COLAN;
-            }
-        } else {
-            return UtilConstants.PACKAGE + UtilConstants.SPACE + pkg + UtilConstants.SEMI_COLAN;
-        }
-    }
-
-    /**
-     * Appends other contents to interface, builder and typedef classes. for
-     * example : ONOS copyright, imports and package.
-     *
-     * @param file generated file
-     * @param pkg generated package
-     * @param importsList list of imports
-     * @throws IOException when fails to append contents.
-     */
-    private static void appendHeaderContents(File file, String pkg, List<String> importsList) throws IOException {
-
-        insert(file, CopyrightHeader.getCopyrightHeader());
-        insert(file, pkg);
-
-        /*
-         * TODO: add the file header using
-         * JavaCodeSnippetGen.getFileHeaderComment
+        /**
+         * Add attribute strings.
          */
-
-        if (importsList != null) {
-            insert(file, UtilConstants.NEW_LINE);
-            for (String imports : importsList) {
-                insert(file, imports);
-            }
-        }
-    }
-
-    /**
-     * Write data to the specific generated file.
-     *
-     * @param file generated file
-     * @param fileName file name
-     * @param genType generated file type
-     * @param javaDocType java doc type
-     * @throws IOException when fails to write into a file
-     */
-    private static void write(File file, String fileName, int genType, JavaDocGen.JavaDocType javaDocType)
-            throws IOException {
-
-        insert(file, JavaDocGen.getJavaDoc(javaDocType, fileName, false));
-        insert(file, JavaCodeSnippetGen.getJavaClassDefStart(genType, fileName));
-    }
-
-    /**
-     * Insert in the generated file.
-     *
-     * @param file file in which need to be inserted
-     * @param data data which need to be inserted
-     * @throws IOException when fails to insert into file
-     */
-    public static void insert(File file, String data) throws IOException {
-
         try {
-            FileSystemUtil.updateFileHandle(file, data, false);
+            insertDataIntoJavaFile(file,
+                    NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
         } catch (IOException e) {
-            throw new IOException("Failed to insert in " + file + "file");
+            throw new IOException("No data found in temporary java code fragment files for " + className
+                    + " while type def class file generation");
         }
-    }
 
-    /**
-     * Closes the files handle for generate files.
-     *
-     * @param file generate files
-     * @throws IOException when failed to close the file handle
-     */
-    public static void closeFileHandles(File file) throws IOException {
+        /**
+         * Default constructor.
+         */
+        methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles()
+                .addDefaultConstructor(PRIVATE, EMPTY_STRING));
 
+        /**
+         * Constructor.
+         */
+        methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles()
+                .addTypeDefConstructor());
+
+        /**
+         * Of method.
+         */
+        methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addOfMethod());
         try {
-            FileSystemUtil.updateFileHandle(file, null, true);
+
+            /**
+             * Getter method.
+             */
+            methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK, curNode));
+
+            /**
+             * Setter method.
+             */
+            methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addTypeDefsSetter());
+
+            /**
+             * Hash code method.
+             */
+            methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() + partString(
+                    getDataFromTempFileHandle(HASH_CODE_IMPL_MASK, curNode).replace(NEW_LINE, EMPTY_STRING))));
+
+            /**
+             * Equals method.
+             */
+            methods.add(getEqualsMethodClose(getEqualsMethodOpen(className + EMPTY_STRING)
+                    + getDataFromTempFileHandle(EQUALS_IMPL_MASK, curNode)));
+
+            /**
+             * To string method.
+             */
+            methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK, curNode)
+                    + getToStringMethodClose());
+
         } catch (IOException e) {
-            throw new IOException("Failed to close file handle for " + file + "file");
+            throw new IOException("No data found in temporary java code fragment files for " + className
+                    + " while tyoe def class file generation");
         }
-    }
 
-    /**
-     * Removes temp files.
-     *
-     * @param file file to be removed
-     */
-    public static void clean(File file) {
-
-        if (file.exists()) {
-            file.delete();
+        for (String method : methods) {
+            insertDataIntoJavaFile(file, method);
         }
-    }
+        insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
 
-    /**
-     * Removes temp files.
-     *
-     * @param tempDir temp directory
-     * @throws IOException when fails to delete the directory
-     */
-    public static void cleanTempFiles(File tempDir) throws IOException {
-
-        FileUtils.deleteDirectory(tempDir);
+        return file;
     }
 }
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
new file mode 100644
index 0000000..ad4dd0d
--- /dev/null
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -0,0 +1,250 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.translator.tojava.utils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.translator.tojava.HasTempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.impl.CopyrightHeader;
+import org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType;
+
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_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_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EQUALS_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_CLASS_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefStart;
+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.SEMI_COLAN;
+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.IMPL_CLASS;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.INTERFACE;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.convertPathToPkg;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
+
+/**
+ * Provides utilities for java file generator.
+ */
+public final class JavaFileGeneratorUtils {
+
+    /**
+     * Default constructor.
+     */
+    private JavaFileGeneratorUtils() {
+    }
+
+    /**
+     * Returns a file object for generated file.
+     *
+     * @param fileName file name
+     * @param filePath file package path
+     * @param extension file extension
+     * @param handle cached file handle
+     * @return file object
+     */
+    public static File getFileObject(String filePath, String fileName, String extension, JavaFileInfo handle) {
+
+        return new File(handle.getBaseCodeGenPath() + filePath + SLASH + fileName + extension);
+    }
+
+    /**
+     * Return data stored in temporary files.
+     *
+     * @param generatedTempFiles temporary file types
+     * @param curNode current YANG node
+     * @return data stored in temporary files
+     * @throws IOException when failed to get the data from temporary file handle
+     */
+    public static String getDataFromTempFileHandle(int generatedTempFiles, YangNode curNode) throws IOException {
+
+        TempJavaCodeFragmentFiles tempJavaCodeFragmentFiles = ((HasTempJavaCodeFragmentFiles) curNode)
+                .getTempJavaCodeFragmentFiles();
+
+        if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) {
+            return tempJavaCodeFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getAttributesTempFileHandle());
+        } else if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
+            return tempJavaCodeFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getGetterInterfaceTempFileHandle());
+        } else if ((generatedTempFiles & SETTER_FOR_INTERFACE_MASK) != 0) {
+            return tempJavaCodeFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getSetterInterfaceTempFileHandle());
+        } else if ((generatedTempFiles & GETTER_FOR_CLASS_MASK) != 0) {
+            return tempJavaCodeFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getGetterImplTempFileHandle());
+        } else if ((generatedTempFiles & SETTER_FOR_CLASS_MASK) != 0) {
+            return tempJavaCodeFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getSetterImplTempFileHandle());
+        } else if ((generatedTempFiles & CONSTRUCTOR_IMPL_MASK) != 0) {
+            return tempJavaCodeFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getConstructorImplTempFileHandle());
+        } else if ((generatedTempFiles & HASH_CODE_IMPL_MASK) != 0) {
+            return tempJavaCodeFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getHashCodeImplTempFileHandle());
+        } else if ((generatedTempFiles & EQUALS_IMPL_MASK) != 0) {
+            return tempJavaCodeFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getEqualsImplTempFileHandle());
+        } else if ((generatedTempFiles & TO_STRING_IMPL_MASK) != 0) {
+            return tempJavaCodeFragmentFiles
+                    .getTemporaryDataFromFileHandle(tempJavaCodeFragmentFiles.getToStringImplTempFileHandle());
+        }
+        return null;
+    }
+
+    /**
+     * Initiate generation of file based on generated file type.
+     *
+     * @param file generated file
+     * @param className generated file class name
+     * @param type generated file type
+     * @param imports imports for the file
+     * @param pkg generated file package
+     * @throws IOException when fails to generate a file
+     */
+    public static void initiateJavaFileGeneration(File file, String className, int type, List<String> imports,
+            String pkg) throws IOException {
+
+        try {
+            file.createNewFile();
+            appendContents(file, className, type, imports, pkg);
+        } catch (IOException e) {
+            throw new IOException("Failed to create " + file.getName() + " class file.");
+        }
+    }
+
+    /**
+     * Appends all the contents into a generated java file.
+     *
+     * @param file generated file
+     * @param fileName generated file name
+     * @param type generated file type
+     * @param pkg generated file package
+     * @param importsList list of java imports.
+     * @throws IOException when fails to append contents
+     */
+    private static void appendContents(File file, String fileName, int type, List<String> importsList,
+            String pkg) throws IOException {
+
+        String pkgString = parsePackageString(pkg, importsList);
+
+        if ((type & IMPL_CLASS_MASK) != 0) {
+
+            write(file, fileName, type, IMPL_CLASS);
+        } else if ((type & BUILDER_INTERFACE_MASK) != 0) {
+
+            write(file, fileName, type, BUILDER_INTERFACE);
+        } else if ((type & GENERATE_TYPEDEF_CLASS) != 0) {
+            appendHeaderContents(file, pkgString, importsList);
+            write(file, fileName, type, IMPL_CLASS);
+        } else if ((type & INTERFACE_MASK) != 0) {
+
+            appendHeaderContents(file, pkgString, importsList);
+            write(file, fileName, type, INTERFACE);
+        } else if ((type & BUILDER_CLASS_MASK) != 0) {
+
+            appendHeaderContents(file, pkgString, importsList);
+            write(file, fileName, type, BUILDER_CLASS);
+        }
+    }
+
+    /**
+     * Removes base directory path from package and generates package string for file.
+     *
+     * @param javaPkg generated java package
+     * @param importsList list of imports
+     * @return package string
+     */
+    private static String parsePackageString(String javaPkg, List<String> importsList) {
+
+        if (javaPkg.contains(ORG)) {
+            String[] strArray = javaPkg.split(ORG);
+            javaPkg = ORG + convertPathToPkg(strArray[1]);
+        }
+        if (importsList != null) {
+            if (!importsList.isEmpty()) {
+                return PACKAGE + SPACE + javaPkg + SEMI_COLAN + NEW_LINE;
+            } else {
+                return PACKAGE + SPACE + javaPkg + SEMI_COLAN;
+            }
+        } else {
+            return PACKAGE + SPACE + javaPkg + SEMI_COLAN;
+        }
+    }
+
+    /**
+     * Appends other contents to interface, builder and typedef classes.
+     * for example : ONOS copyright, imports and package.
+     * @param file generated file
+     * @param pkg generated package
+     * @param importsList list of imports
+     * @throws IOException when fails to append contents.
+     */
+    private static void appendHeaderContents(File file, String pkg, List<String> importsList) throws IOException {
+
+        insertDataIntoJavaFile(file, CopyrightHeader.getCopyrightHeader());
+        insertDataIntoJavaFile(file, pkg);
+
+        /*
+         * TODO: add the file header using
+         * JavaCodeSnippetGen.getFileHeaderComment
+         */
+
+        if (importsList != null) {
+            insertDataIntoJavaFile(file, NEW_LINE);
+            for (String imports : importsList) {
+                insertDataIntoJavaFile(file, imports);
+            }
+        }
+    }
+
+    /**
+     * Write data to the specific generated file.
+     *
+     * @param file generated file
+     * @param fileName file name
+     * @param genType generated file type
+     * @param javaDocType java doc type
+     * @throws IOException when fails to write into a file
+     */
+    private static void write(File file, String fileName, int genType, JavaDocType javaDocType)
+            throws IOException {
+
+        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/JavaIdentifierSyntax.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
index 2639b8b..e89a8a9 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
@@ -16,14 +16,24 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
-import java.io.File;
 import java.util.ArrayList;
 
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
-import org.onosproject.yangutils.utils.UtilConstants;
+
+import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_BASE_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_KEY_WORDS;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT;
+import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_SPECIAL_CHAR;
+import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE;
 
 /**
  * Utility Class for translating the name from YANG to java convention.
@@ -53,12 +63,12 @@
     public static String getRootPackage(byte version, String nameSpace, String revision) {
 
         String pkg;
-        pkg = UtilConstants.DEFAULT_BASE_PKG;
-        pkg = pkg + UtilConstants.PERIOD;
+        pkg = DEFAULT_BASE_PKG;
+        pkg = pkg + PERIOD;
         pkg = pkg + getYangVersion(version);
-        pkg = pkg + UtilConstants.PERIOD;
+        pkg = pkg + PERIOD;
         pkg = pkg + getPkgFromNameSpace(nameSpace);
-        pkg = pkg + UtilConstants.PERIOD;
+        pkg = pkg + PERIOD;
         pkg = pkg + getYangRevisionStr(revision);
 
         return pkg.toLowerCase();
@@ -99,7 +109,7 @@
             throw new RuntimeException("missing parent java node to get current node's package");
         }
         JavaFileInfo parentJavaFileHandle = ((HasJavaFileInfo) parentNode).getJavaFileInfo();
-        pkg = parentJavaFileHandle.getPackage() + UtilConstants.PERIOD + parentJavaFileHandle.getJavaName();
+        pkg = parentJavaFileHandle.getPackage() + PERIOD + parentJavaFileHandle.getJavaName();
         return pkg.toLowerCase();
     }
 
@@ -123,9 +133,9 @@
     public static String getPkgFromNameSpace(String nameSpace) {
 
         ArrayList<String> pkgArr = new ArrayList<String>();
-        nameSpace = nameSpace.replace(UtilConstants.QUOTES, UtilConstants.EMPTY_STRING);
-        String properNameSpace = nameSpace.replaceAll(UtilConstants.REGEX_WITH_SPECIAL_CHAR, UtilConstants.COLAN);
-        String[] nameSpaceArr = properNameSpace.split(UtilConstants.COLAN);
+        nameSpace = nameSpace.replace(QUOTES, EMPTY_STRING);
+        String properNameSpace = nameSpace.replaceAll(REGEX_WITH_SPECIAL_CHAR, COLAN);
+        String[] nameSpaceArr = properNameSpace.split(COLAN);
 
         for (String nameSpaceString : nameSpaceArr) {
             pkgArr.add(nameSpaceString);
@@ -142,7 +152,7 @@
      */
     public static String getYangRevisionStr(String date) throws TranslatorException {
 
-        String[] revisionArr = date.split(UtilConstants.HYPHEN);
+        String[] revisionArr = date.split(HYPHEN);
 
         String rev = "rev";
         rev = rev + revisionArr[INDEX_ZERO];
@@ -172,17 +182,17 @@
      */
     public static String getPkgFrmArr(ArrayList<String> pkgArr) {
 
-        String pkg = UtilConstants.EMPTY_STRING;
+        String pkg = EMPTY_STRING;
         int size = pkgArr.size();
         int i = 0;
         for (String member : pkgArr) {
-            boolean presenceOfKeyword = UtilConstants.JAVA_KEY_WORDS.contains(member);
-            if (presenceOfKeyword || member.matches(UtilConstants.REGEX_FOR_FIRST_DIGIT)) {
-                member = UtilConstants.UNDER_SCORE + member;
+            boolean presenceOfKeyword = JAVA_KEY_WORDS.contains(member);
+            if (presenceOfKeyword || member.matches(REGEX_FOR_FIRST_DIGIT)) {
+                member = UNDER_SCORE + member;
             }
             pkg = pkg + member;
             if (i != size - 1) {
-                pkg = pkg + UtilConstants.PERIOD;
+                pkg = pkg + PERIOD;
             }
             i++;
         }
@@ -198,7 +208,7 @@
     public static String getSubPkgFromName(String name) {
 
         ArrayList<String> pkgArr = new ArrayList<String>();
-        String[] nameArr = name.split(UtilConstants.COLAN);
+        String[] nameArr = name.split(COLAN);
 
         for (String nameString : nameArr) {
             pkgArr.add(nameString);
@@ -214,7 +224,7 @@
      */
     public static String getCamelCase(String yangIdentifier) {
 
-        String[] strArray = yangIdentifier.split(UtilConstants.HYPHEN);
+        String[] strArray = yangIdentifier.split(HYPHEN);
         String camelCase = strArray[0];
         for (int i = 1; i < strArray.length; i++) {
             camelCase = camelCase + strArray[i].substring(0, 1).toUpperCase() + strArray[i].substring(1);
@@ -254,7 +264,7 @@
      */
     public static String getJavaPackageFromPackagePath(String packagePath) {
 
-        return packagePath.replace(File.separator, UtilConstants.PERIOD);
+        return packagePath.replace(SLASH, PERIOD);
     }
 
     /**
@@ -265,6 +275,6 @@
      */
     public static String getPackageDirPathFromJavaJPackage(String packagePath) {
 
-        return packagePath.replace(UtilConstants.PERIOD, File.separator);
+        return packagePath.replace(PERIOD, SLASH);
     }
 }
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 716580e..f1c17db 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
@@ -17,9 +17,70 @@
 package org.onosproject.yangutils.translator.tojava.utils;
 
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
-import org.onosproject.yangutils.utils.UtilConstants;
-import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
-import org.onosproject.yangutils.utils.io.impl.YangIoUtils;
+
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getLowerCase;
+import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.AND;
+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.CHECK_NOT_NULL_STRING;
+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.COMMA;
+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;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
+import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
+import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
+import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.HASH;
+import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.IF;
+import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
+import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
+import static org.onosproject.yangutils.utils.UtilConstants.INT;
+import static org.onosproject.yangutils.utils.UtilConstants.LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
+import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
+import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.OF;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
+import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
+import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
+import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
+import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
+import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
+import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+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.THIS;
+import static org.onosproject.yangutils.utils.UtilConstants.TO;
+import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
+import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
+import static org.onosproject.yangutils.utils.UtilConstants.VOID;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
 
 /**
  * Generated methods for generated files based on the file type.
@@ -40,7 +101,7 @@
      */
     public static String parseBuilderInterfaceBuildMethodString(String name) {
 
-        return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.BUILD, name, false) + getBuildForInterface(name);
+        return getJavaDoc(BUILD_METHOD, name, false) + getBuildForInterface(name);
     }
 
     /**
@@ -52,10 +113,10 @@
     public static String getGetterString(JavaAttributeInfo attr) {
 
         String returnType = getReturnType(attr);
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
+        String attributeName = getLowerCase(attr.getAttributeName());
 
-        return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.GETTER, attributeName, attr.isListAttr()) +
-                getGetterForInterface(attributeName, returnType, attr.isListAttr());
+        return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr())
+                + getGetterForInterface(attributeName, returnType, attr.isListAttr());
     }
 
     /**
@@ -68,9 +129,9 @@
     public static String getSetterString(JavaAttributeInfo attr, String className) {
 
         String attrType = getReturnType(attr);
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
+        String attributeName = getLowerCase(attr.getAttributeName());
 
-        return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.SETTER, attributeName, attr.isListAttr())
+        return getJavaDoc(SETTER_METHOD, attributeName, attr.isListAttr())
                 + getSetterForInterface(attributeName, attrType, className, attr.isListAttr());
     }
 
@@ -82,7 +143,7 @@
      */
     public static String getConstructorString(String name) {
 
-        return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.CONSTRUCTOR, name, false);
+        return getJavaDoc(CONSTRUCTOR, name, false);
     }
 
     /**
@@ -94,8 +155,7 @@
      */
     public static String getDefaultConstructorString(String name, String modifierType) {
 
-        return JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR, name, false)
-                + getDefaultConstructor(name, modifierType);
+        return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false) + getDefaultConstructor(name, modifierType);
     }
 
     /**
@@ -108,12 +168,12 @@
     public static String getTypeDefConstructor(JavaAttributeInfo attr, String className) {
 
         String attrQuaifiedType = getReturnType(attr);
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
+        String attributeName = getLowerCase(attr.getAttributeName());
 
         if (!attr.isListAttr()) {
             return getTypeDefConstructorString(attrQuaifiedType, attributeName, className);
         }
-        String listAttr = getListString() + attrQuaifiedType + UtilConstants.DIAMOND_CLOSE_BRACKET;
+        String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
         return getTypeDefConstructorString(listAttr, attributeName, className);
     }
 
@@ -127,13 +187,10 @@
      */
     private static String getTypeDefConstructorString(String type, String name, String className) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
-                + className + UtilConstants.OPEN_PARENTHESIS + type + UtilConstants.SPACE + UtilConstants.VALUE
-                + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
-                + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.THIS
-                + UtilConstants.PERIOD + name + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE
-                + UtilConstants.VALUE + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
+                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
+                + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
+                + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -144,9 +201,8 @@
      */
     public static String getCheckNotNull(String name) {
 
-        return UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.CHECK_NOT_NULL_STRING
-                + UtilConstants.OPEN_PARENTHESIS + name + UtilConstants.COMMA + UtilConstants.SPACE + name
-                + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE;
+        return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
+                + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -157,8 +213,7 @@
      */
     public static String getBuildString(String name) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.OVERRIDE + UtilConstants.NEW_LINE
-                + getBuild(name);
+        return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name);
     }
 
     /**
@@ -170,13 +225,13 @@
     public static String getGetterForClass(JavaAttributeInfo attr) {
 
         String attrQuaifiedType = getReturnType(attr);
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
+        String attributeName = getLowerCase(attr.getAttributeName());
 
         if (!attr.isListAttr()) {
             return getGetter(attrQuaifiedType, attributeName);
         }
-        String listAttr = getListString() + attrQuaifiedType + UtilConstants.DIAMOND_CLOSE_BRACKET;
-        return getGetter(listAttr, attributeName + UtilConstants.SUFIX_S);
+        String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
+        return getGetter(listAttr, attributeName);
     }
 
     /**
@@ -188,13 +243,9 @@
      */
     private static String getGetter(String type, String name) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
-                + type + UtilConstants.SPACE + UtilConstants.GET_METHOD_PREFIX
-                + JavaIdentifierSyntax.getCaptialCase(name) + UtilConstants.OPEN_PARENTHESIS
-                + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
-                + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.RETURN
-                + UtilConstants.SPACE + name + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCaptialCase(name)
+                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
+                + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -207,12 +258,12 @@
     public static String getSetterForClass(JavaAttributeInfo attr, String className) {
 
         String attrQuaifiedType = getReturnType(attr);
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
+        String attributeName = getLowerCase(attr.getAttributeName());
         if (!attr.isListAttr()) {
             return getSetter(className, attributeName, attrQuaifiedType);
         }
-        String listAttr = getListString() + attrQuaifiedType + UtilConstants.DIAMOND_CLOSE_BRACKET;
-        return getSetter(className, attributeName + UtilConstants.SUFIX_S, listAttr);
+        String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
+        return getSetter(className, attributeName, listAttr);
     }
 
     /**
@@ -225,16 +276,11 @@
      */
     private static String getSetter(String className, String name, String type) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
-                + className + UtilConstants.BUILDER + UtilConstants.SPACE + UtilConstants.SET_METHOD_PREFIX
-                + JavaIdentifierSyntax.getCaptialCase(name) + UtilConstants.OPEN_PARENTHESIS
-                + type + UtilConstants.SPACE + name + UtilConstants.CLOSE_PARENTHESIS
-                + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE
-                + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.THIS + UtilConstants.PERIOD
-                + name + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE
-                + name + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION
-                + UtilConstants.RETURN + UtilConstants.SPACE + UtilConstants.THIS + UtilConstants.SEMI_COLAN
-                + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE + SET_METHOD_PREFIX
+                + getCaptialCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
+                + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE
+                + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN
+                + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -246,13 +292,8 @@
     public static String getSetterForTypeDefClass(JavaAttributeInfo attr) {
 
         String attrQuaifiedType = getReturnType(attr);
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
-
-        if (!attr.isListAttr()) {
-            return getTypeDefSetter(attrQuaifiedType, attributeName);
-        }
-        String listAttr = getListString() + attrQuaifiedType + UtilConstants.DIAMOND_CLOSE_BRACKET;
-        return getTypeDefSetter(listAttr, attributeName + UtilConstants.SUFIX_S);
+        String attributeName = getLowerCase(attr.getAttributeName());
+        return getTypeDefSetter(attrQuaifiedType, attributeName);
     }
 
     /**
@@ -264,15 +305,10 @@
      */
     private static String getTypeDefSetter(String type, String name) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
-                + UtilConstants.VOID + UtilConstants.SPACE + UtilConstants.SET_METHOD_PREFIX
-                + JavaIdentifierSyntax.getCaptialCase(name) + UtilConstants.OPEN_PARENTHESIS
-                + type + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.CLOSE_PARENTHESIS
-                + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE
-                + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.THIS + UtilConstants.PERIOD
-                + name + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE
-                + UtilConstants.VALUE + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCaptialCase(name)
+                + OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
+                + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE
+                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -282,8 +318,7 @@
      */
     public static String getOverRideString() {
 
-        return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.OVERRIDE + UtilConstants.NEW_LINE;
+        return NEW_LINE + FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE;
     }
 
     /**
@@ -299,8 +334,8 @@
         if (!isList) {
             return getGetterInterfaceString(returnType, yangName);
         }
-        String listAttr = getListString() + returnType + UtilConstants.DIAMOND_CLOSE_BRACKET;
-        return getGetterInterfaceString(listAttr, yangName + UtilConstants.SUFIX_S);
+        String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
+        return getGetterInterfaceString(listAttr, yangName);
     }
 
     /**
@@ -312,12 +347,8 @@
      */
     private static String getGetterInterfaceString(String returnType, String yangName) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + returnType
-                + UtilConstants.SPACE + UtilConstants.GET_METHOD_PREFIX
-                + JavaIdentifierSyntax.getCaptialCase(yangName)
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS
-                + UtilConstants.SEMI_COLAN;
-
+        return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCaptialCase(yangName)
+                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
     }
 
     /**
@@ -334,8 +365,8 @@
         if (!isList) {
             return getSetterInterfaceString(className, attrName, attrType);
         }
-        String listAttr = getListString() + attrType + UtilConstants.DIAMOND_CLOSE_BRACKET;
-        return getSetterInterfaceString(className, attrName + UtilConstants.SUFIX_S, listAttr);
+        String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
+        return getSetterInterfaceString(className, attrName, listAttr);
     }
 
     /**
@@ -348,11 +379,8 @@
      */
     private static String getSetterInterfaceString(String className, String attrName, String attrType) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + className + UtilConstants.BUILDER
-                + UtilConstants.SPACE + UtilConstants.SET_METHOD_PREFIX
-                + JavaIdentifierSyntax.getCaptialCase(attrName) + UtilConstants.OPEN_PARENTHESIS
-                + attrType + UtilConstants.SPACE + attrName + UtilConstants.CLOSE_PARENTHESIS
-                + UtilConstants.SEMI_COLAN;
+        return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + SET_METHOD_PREFIX + getCaptialCase(attrName)
+                + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
     }
 
     /**
@@ -362,7 +390,7 @@
      */
     private static String getListString() {
 
-        return UtilConstants.LIST + UtilConstants.DIAMOND_OPEN_BRACKET;
+        return LIST + DIAMOND_OPEN_BRACKET;
     }
 
     /**
@@ -373,9 +401,9 @@
      */
     private static String getReturnType(JavaAttributeInfo attr) {
 
-        String returnType = UtilConstants.EMPTY_STRING;
+        String returnType = EMPTY_STRING;
         if (attr.isQualifiedName() && (attr.getImportInfo().getPkgInfo() != null)) {
-            returnType = attr.getImportInfo().getPkgInfo() + UtilConstants.PERIOD;
+            returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
         }
         returnType = returnType + attr.getImportInfo().getClassInfo();
         return returnType;
@@ -389,9 +417,8 @@
      */
     public static String getBuildForInterface(String yangName) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + yangName + UtilConstants.SPACE + UtilConstants.BUILD
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN
-                + UtilConstants.NEW_LINE;
+        return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
+                + NEW_LINE;
     }
 
     /**
@@ -402,12 +429,10 @@
      */
     public static String getConstructorStart(String yangName) {
 
-        String javadoc = MethodsGenerator.getConstructorString(yangName);
-        String constructor = UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
-                + yangName + UtilConstants.IMPL + UtilConstants.OPEN_PARENTHESIS + yangName + UtilConstants.BUILDER
-                + UtilConstants.SPACE + UtilConstants.BUILDER.toLowerCase() + UtilConstants.OBJECT
-                + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
-                + UtilConstants.NEW_LINE;
+        String javadoc = getConstructorString(yangName);
+        String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
+                + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
+                + NEW_LINE;
         return javadoc + constructor;
     }
 
@@ -420,17 +445,12 @@
      */
     public static String getConstructor(String yangName, JavaAttributeInfo attr) {
 
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
-        if (attr.isListAttr()) {
-            attributeName = attributeName + UtilConstants.SUFIX_S;
-        }
-        String constructor = UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.THIS
-                + UtilConstants.PERIOD + JavaIdentifierSyntax.getCamelCase(attributeName)
-                + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE + UtilConstants.BUILDER.toLowerCase()
-                + UtilConstants.OBJECT + UtilConstants.PERIOD + UtilConstants.GET_METHOD_PREFIX
-                + JavaIdentifierSyntax.getCaptialCase(JavaIdentifierSyntax.getCamelCase(attributeName))
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN
-                + UtilConstants.NEW_LINE;
+        String attributeName = getLowerCase(attr.getAttributeName());
+
+        String constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName) + SPACE + EQUAL
+                + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
+                + getCaptialCase(getCamelCase(attributeName)) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
+                + NEW_LINE;
 
         return constructor;
     }
@@ -443,14 +463,10 @@
      */
     public static String getBuild(String yangName) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
-                + yangName + UtilConstants.SPACE + UtilConstants.BUILD + UtilConstants.OPEN_PARENTHESIS
-                + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
-                + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.RETURN
-                + UtilConstants.SPACE + UtilConstants.NEW + UtilConstants.SPACE + yangName + UtilConstants.IMPL
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.THIS + UtilConstants.CLOSE_PARENTHESIS
-                + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.CLOSE_CURLY_BRACKET;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
+                + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
+                + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
+                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -462,10 +478,8 @@
      */
     private static String getDefaultConstructor(String name, String modifierType) {
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + modifierType + UtilConstants.SPACE + name
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE
-                + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.CLOSE_CURLY_BRACKET;
+        return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
+                + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -475,11 +489,9 @@
      */
     public static String getToStringMethodOpen() {
 
-        return getOverRideString() + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
-                + UtilConstants.STRING + UtilConstants.SPACE + UtilConstants.TO + UtilConstants.STRING
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE
-                + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION
-                + UtilConstants.RETURN + UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING + UtilConstants.NEW_LINE;
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STRING_DATA_TYPE + SPACE + TO
+                + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
+                + EIGHT_SPACE_INDENTATION + RETURN + GOOGLE_MORE_OBJECT_METHOD_STRING + NEW_LINE;
     }
 
     /**
@@ -489,10 +501,8 @@
      */
     public static String getToStringMethodClose() {
 
-        return UtilConstants.TWELVE_SPACE_INDENTATION + UtilConstants.PERIOD + UtilConstants.TO + UtilConstants.STRING
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN
-                + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
+        return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
+                + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -503,14 +513,10 @@
      */
     public static String getToStringMethod(JavaAttributeInfo attr) {
 
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
-        if (attr.isListAttr()) {
-            attributeName = attributeName + UtilConstants.SUFIX_S;
-        }
-        return UtilConstants.TWELVE_SPACE_INDENTATION + UtilConstants.PERIOD + UtilConstants.ADD_STRING
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.QUOTES
-                + attributeName + UtilConstants.QUOTES + UtilConstants.COMMA + UtilConstants.SPACE + attributeName
-                + UtilConstants.CLOSE_PARENTHESIS;
+        String attributeName = getLowerCase(attr.getAttributeName());
+
+        return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
+                + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
 
     }
 
@@ -521,12 +527,9 @@
      */
     public static String getHashCodeMethodOpen() {
 
-        return getOverRideString() + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
-                + UtilConstants.INT + UtilConstants.SPACE + UtilConstants.HASH_CODE_STRING
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE
-                + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE + UtilConstants.EIGHT_SPACE_INDENTATION
-                + UtilConstants.RETURN + UtilConstants.SPACE + UtilConstants.OBJECT_STRING + UtilConstants.SUFIX_S
-                + UtilConstants.PERIOD + UtilConstants.HASH + UtilConstants.OPEN_PARENTHESIS;
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + INT + SPACE + HASH_CODE_STRING
+                + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
+                + RETURN + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + HASH + OPEN_PARENTHESIS;
     }
 
     /**
@@ -537,10 +540,10 @@
      */
     public static String getHashCodeMethodClose(String hashcodeString) {
 
-        hashcodeString = YangIoUtils.trimAtLast(hashcodeString, UtilConstants.COMMA);
-        hashcodeString = YangIoUtils.trimAtLast(hashcodeString, UtilConstants.SPACE);
-        return hashcodeString + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
+        hashcodeString = trimAtLast(hashcodeString, COMMA);
+        hashcodeString = trimAtLast(hashcodeString, SPACE);
+        return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
+                + NEW_LINE;
     }
 
     /**
@@ -551,13 +554,7 @@
      */
     public static String getHashCodeMethod(JavaAttributeInfo attr) {
 
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
-        if (attr.isListAttr()) {
-            attributeName = attributeName + UtilConstants.SUFIX_S;
-        }
-        return attributeName
-                + UtilConstants.COMMA + UtilConstants.SPACE;
-
+        return getLowerCase(attr.getAttributeName()) + COMMA + SPACE;
     }
 
     /**
@@ -568,12 +565,9 @@
      */
     public static String getEqualsMethodOpen(String className) {
 
-        return getOverRideString() + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
-                + UtilConstants.BOOLEAN + UtilConstants.SPACE + UtilConstants.EQUALS_STRING
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.OBJECT_STRING + UtilConstants.SPACE + UtilConstants.OBJ
-                + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
-                + UtilConstants.NEW_LINE + getEqualsMethodsCommonIfCondition()
-                + getEqualsMethodsSpecificIfCondition(className);
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + BOOLEAN_DATA_TYPE + SPACE + EQUALS_STRING
+                + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + OBJ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
+                + NEW_LINE + getEqualsMethodsCommonIfCondition() + getEqualsMethodsSpecificIfCondition(className);
     }
 
     /**
@@ -583,13 +577,9 @@
      */
     private static String getEqualsMethodsCommonIfCondition() {
 
-        return UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.IF + UtilConstants.SPACE
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.THIS + UtilConstants.SPACE + UtilConstants.EQUAL
-                + UtilConstants.EQUAL + UtilConstants.SPACE + UtilConstants.OBJ + UtilConstants.CLOSE_PARENTHESIS
-                + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE
-                + UtilConstants.TWELVE_SPACE_INDENTATION + UtilConstants.RETURN + UtilConstants.SPACE
-                + UtilConstants.TRUE + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
-                + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
+        return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + THIS + SPACE + EQUAL + EQUAL + SPACE + OBJ
+                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + SPACE
+                + TRUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -600,14 +590,10 @@
      */
     private static String getEqualsMethodsSpecificIfCondition(String className) {
 
-        return UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.IF + UtilConstants.SPACE
-                + UtilConstants.OPEN_PARENTHESIS + UtilConstants.OBJ + UtilConstants.INSTANCE_OF + className
-                + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
-                + UtilConstants.NEW_LINE + UtilConstants.TWELVE_SPACE_INDENTATION + className + UtilConstants.SPACE
-                + UtilConstants.OTHER + UtilConstants.SPACE + UtilConstants.EQUAL + UtilConstants.SPACE
-                + UtilConstants.OPEN_PARENTHESIS + className + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SPACE
-                + UtilConstants.OBJ + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
-                + UtilConstants.TWELVE_SPACE_INDENTATION + UtilConstants.RETURN + UtilConstants.NEW_LINE;
+        return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + OBJ + INSTANCE_OF + className
+                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + className
+                + SPACE + OTHER + SPACE + EQUAL + SPACE + OPEN_PARENTHESIS + className + CLOSE_PARENTHESIS + SPACE
+                + OBJ + SEMI_COLAN + NEW_LINE + TWELVE_SPACE_INDENTATION + RETURN + NEW_LINE;
     }
 
     /**
@@ -618,17 +604,13 @@
      */
     public static String getEqualsMethodClose(String equalMethodString) {
 
-        equalMethodString = YangIoUtils.trimAtLast(equalMethodString, UtilConstants.AND);
-        equalMethodString = YangIoUtils.trimAtLast(equalMethodString, UtilConstants.AND);
-        equalMethodString = YangIoUtils.trimAtLast(equalMethodString, UtilConstants.SPACE);
-        equalMethodString = YangIoUtils.trimAtLast(equalMethodString, UtilConstants.NEW_LINE) + UtilConstants.SEMI_COLAN
-                + UtilConstants.NEW_LINE;
-        return equalMethodString + UtilConstants.EIGHT_SPACE_INDENTATION
-                + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE
-                + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.RETURN + UtilConstants.SPACE
-                + UtilConstants.FALSE + UtilConstants.SEMI_COLAN
-                + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
+        equalMethodString = trimAtLast(equalMethodString, AND);
+        equalMethodString = trimAtLast(equalMethodString, AND);
+        equalMethodString = trimAtLast(equalMethodString, SPACE);
+        equalMethodString = trimAtLast(equalMethodString, NEW_LINE) + SEMI_COLAN + NEW_LINE;
+        return equalMethodString + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
+                + RETURN + SPACE + FALSE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
+                + NEW_LINE;
     }
 
     /**
@@ -639,15 +621,11 @@
      */
     public static String getEqualsMethod(JavaAttributeInfo attr) {
 
-        String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
-        if (attr.isListAttr()) {
-            attributeName = attributeName + UtilConstants.SUFIX_S;
-        }
-        return UtilConstants.SIXTEEN_SPACE_INDENTATION + UtilConstants.SPACE + UtilConstants.OBJECT_STRING
-                + UtilConstants.SUFIX_S + UtilConstants.PERIOD + UtilConstants.EQUALS_STRING
-                + UtilConstants.OPEN_PARENTHESIS + attributeName + UtilConstants.COMMA + UtilConstants.SPACE
-                + UtilConstants.OTHER + UtilConstants.PERIOD + attributeName + UtilConstants.CLOSE_PARENTHESIS
-                + UtilConstants.SPACE + UtilConstants.AND + UtilConstants.AND;
+        String attributeName = getLowerCase(attr.getAttributeName());
+
+        return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
+                + attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
+                + AND;
 
     }
 
@@ -662,14 +640,10 @@
 
         String attrQuaifiedType = getReturnType(attr);
 
-        return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE + UtilConstants.STATIC
-                + UtilConstants.SPACE + name + UtilConstants.SPACE + UtilConstants.OF + UtilConstants.OPEN_PARENTHESIS
-                + attrQuaifiedType + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.CLOSE_PARENTHESIS
-                + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE
-                + UtilConstants.EIGHT_SPACE_INDENTATION + UtilConstants.RETURN + UtilConstants.SPACE + UtilConstants.NEW
-                + UtilConstants.SPACE + name + UtilConstants.OPEN_PARENTHESIS + UtilConstants.VALUE
-                + UtilConstants.CLOSE_PARENTHESIS + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
+                + attrQuaifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
+                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
+                + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index 834b216..9f52cb7 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -83,7 +83,7 @@
     public static final String INSTANCE_OF = " instanceof ";
 
     public static final String VALUE = "value";
-    public static final String SUFIX_S = "s";
+    public static final String SUFFIX_S = "s";
 
     public static final String IF = "if";
     public static final String FOR = "for";
@@ -152,7 +152,7 @@
     /**
      * String built in java type.
      */
-    public static final String STRING = "String";
+    public static final String STRING_DATA_TYPE = "String";
     /**
      * java.lang.* packages.
      */
@@ -161,7 +161,7 @@
     /**
      * boolean built in java type.
      */
-    public static final String BOOLEAN = "boolean";
+    public static final String BOOLEAN_DATA_TYPE = "boolean";
 
     /**
      * byte java built in type.
@@ -229,8 +229,7 @@
     public static final String DOUBLE_WRAPPER = "Double";
 
     /**
-     * List of keywords in java, this is used for checking if the input does not
-     * contain these keywords.
+     * List of keywords in java, this is used for checking if the input does not contain these keywords.
      */
     public static final List JAVA_KEY_WORDS = Arrays.asList("abstract", "assert", "boolean", "break", "byte", "case",
             "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "extends", "false",
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java
index 2b5c72c..c3cdabd 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java
@@ -24,12 +24,16 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+
 /**
  * Provides the license header for the generated files.
  */
 public final class CopyrightHeader {
 
     private static final int EOF = -1;
+    private static final String COPYRIGHT_HEADER_FILE = "CopyrightHeader.txt";
+    private static final String TEMP_FILE = "temp.txt";
     private static ClassLoader classLoader = CopyrightHeader.class.getClassLoader();
 
     private static String copyrightHeader;
@@ -47,6 +51,7 @@
      * @throws IOException when fails to parse copyright header
      */
     public static String getCopyrightHeader() throws IOException {
+
         if (copyrightHeader == null) {
             parseCopyrightHeader();
         }
@@ -59,6 +64,7 @@
      * @param header copyright header
      */
     private static void setCopyrightHeader(String header) {
+
         copyrightHeader = header;
     }
 
@@ -69,11 +75,12 @@
      */
     public static void parseCopyrightHeader() throws IOException {
 
-        File temp = new File("temp.txt");
+        File temp = new File(TEMP_FILE);
 
         try {
-            InputStream stream = classLoader.getResourceAsStream("CopyrightHeader.txt");
+            InputStream stream = classLoader.getResourceAsStream(COPYRIGHT_HEADER_FILE);
             OutputStream out = new FileOutputStream(temp);
+
             int index;
             while ((index = stream.read()) != EOF) {
                 out.write(index);
@@ -98,18 +105,20 @@
      */
     private static String getStringFileContent(File toAppend) throws IOException {
 
-        BufferedReader bufferReader = new BufferedReader(new FileReader(toAppend));
+        FileReader fileReader = new FileReader(toAppend);
+        BufferedReader bufferReader = new BufferedReader(fileReader);
         try {
             StringBuilder stringBuilder = new StringBuilder();
             String line = bufferReader.readLine();
 
             while (line != null) {
                 stringBuilder.append(line);
-                stringBuilder.append("\n");
+                stringBuilder.append(NEW_LINE);
                 line = bufferReader.readLine();
             }
             return stringBuilder.toString();
         } finally {
+            fileReader.close();
             bufferReader.close();
         }
     }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
index f44da54..3c312fb 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
@@ -23,7 +23,17 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 
-import org.onosproject.yangutils.utils.UtilConstants;
+import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.MULTIPLE_NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.addPackageInfo;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.convertPathToPkg;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.convertPkgToPath;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.createDirectories;
 
 /**
  * Utility to handle file system operations.
@@ -44,8 +54,8 @@
      */
     public static boolean doesPackageExist(String pkg) {
 
-        File pkgDir = new File(pkg.replace(UtilConstants.PERIOD, UtilConstants.SLASH));
-        File pkgWithFile = new File(pkgDir + File.separator + "package-info.java");
+        File pkgDir = new File(convertPkgToPath(pkg));
+        File pkgWithFile = new File(pkgDir + SLASH + "package-info.java");
         if (pkgDir.exists() && pkgWithFile.isFile()) {
             return true;
         }
@@ -63,8 +73,8 @@
 
         if (!doesPackageExist(pkg)) {
             try {
-                File pack = YangIoUtils.createDirectories(pkg);
-                YangIoUtils.addPackageInfo(pack, pkgInfo, pkg.replace(UtilConstants.SLASH, UtilConstants.PERIOD));
+                File pack = createDirectories(pkg);
+                addPackageInfo(pack, pkgInfo, convertPathToPkg(pkg));
             } catch (IOException e) {
                 throw new IOException("failed to create package-info file");
             }
@@ -83,9 +93,7 @@
      */
     public static void appendFileContents(File toAppend, File srcFile) throws IOException {
 
-        updateFileHandle(srcFile,
-                UtilConstants.NEW_LINE + readAppendFile(toAppend.toString(), UtilConstants.FOUR_SPACE_INDENTATION),
-                false);
+        updateFileHandle(srcFile, NEW_LINE + readAppendFile(toAppend.toString(), FOUR_SPACE_INDENTATION), false);
         return;
     }
 
@@ -106,15 +114,14 @@
             String line = bufferReader.readLine();
 
             while (line != null) {
-                if (line.equals(UtilConstants.SPACE) | line.equals(UtilConstants.EMPTY_STRING)
-                        | line.equals(UtilConstants.EIGHT_SPACE_INDENTATION)
-                        | line.equals(UtilConstants.MULTIPLE_NEW_LINE)) {
-                    stringBuilder.append(UtilConstants.NEW_LINE);
-                } else if (line.equals(UtilConstants.FOUR_SPACE_INDENTATION)) {
-                    stringBuilder.append(UtilConstants.EMPTY_STRING);
+                if (line.equals(SPACE) | line.equals(EMPTY_STRING) | line.equals(EIGHT_SPACE_INDENTATION)
+                        | line.equals(MULTIPLE_NEW_LINE)) {
+                    stringBuilder.append(NEW_LINE);
+                } else if (line.equals(FOUR_SPACE_INDENTATION)) {
+                    stringBuilder.append(EMPTY_STRING);
                 } else {
                     stringBuilder.append(spaces + line);
-                    stringBuilder.append(UtilConstants.NEW_LINE);
+                    stringBuilder.append(NEW_LINE);
                 }
                 line = bufferReader.readLine();
             }
@@ -131,9 +138,8 @@
      * @param inputFile input file
      * @param contentTobeAdded content to be appended to the file
      * @param isClose when close of file is called.
-     * @throws IOException if the named file exists but is a directory rather
-     *             than a regular file, does not exist but cannot be created, or
-     *             cannot be opened for any other reason
+     * @throws IOException if the named file exists but is a directory rather than a regular file,
+     * does not exist but cannot be created, or cannot be opened for any other reason
      */
     public static void updateFileHandle(File inputFile, String contentTobeAdded, boolean isClose) throws IOException {
 
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
index 922348a..2c9c242 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -19,6 +19,36 @@
 import org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax;
 import org.onosproject.yangutils.utils.UtilConstants;
 
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_OBJECT;
+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.IMPL_CLASS_JAVA_DOC;
+import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE_JAVA_DOC;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_BUILD_RETURN;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_CONSTRUCTOR;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_END_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FIRST_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_GETTERS;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_PARAM;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RETURN;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
+import static org.onosproject.yangutils.utils.UtilConstants.LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE_ESTRIC;
+import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
+import static org.onosproject.yangutils.utils.UtilConstants.OF;
+import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
+
 /**
  * Provides javadoc for the generated classes.
  */
@@ -63,17 +93,17 @@
         /**
          * For getters.
          */
-        GETTER,
+        GETTER_METHOD,
 
         /**
          * For setters.
          */
-        SETTER,
+        SETTER_METHOD,
 
         /**
          * For type def's setters.
          */
-        TYPE_DEF_SETTER,
+        TYPE_DEF_SETTER_METHOD,
 
         /**
          * For type def's constructor.
@@ -83,7 +113,7 @@
         /**
          * For of method.
          */
-        OF,
+        OF_METHOD,
 
         /**
          * For default constructor.
@@ -98,7 +128,7 @@
         /**
          * For build.
          */
-        BUILD
+        BUILD_METHOD
     }
 
     /**
@@ -110,8 +140,9 @@
      * @return javadocs.
      */
     public static String getJavaDoc(JavaDocType type, String name, boolean isList) {
+
         name = JavaIdentifierSyntax.getLowerCase(JavaIdentifierSyntax.getCamelCase(name));
-        String javaDoc = "";
+        String javaDoc = UtilConstants.EMPTY_STRING;
         if (type.equals(JavaDocType.IMPL_CLASS)) {
             javaDoc = generateForImplClass(name);
         } else if (type.equals(JavaDocType.BUILDER_CLASS)) {
@@ -122,19 +153,19 @@
             javaDoc = generateForBuilderInterface(name);
         } else if (type.equals(JavaDocType.PACKAGE_INFO)) {
             javaDoc = generateForPackage(name);
-        } else if (type.equals(JavaDocType.GETTER)) {
+        } else if (type.equals(JavaDocType.GETTER_METHOD)) {
             javaDoc = generateForGetters(name, isList);
-        } else if (type.equals(JavaDocType.TYPE_DEF_SETTER)) {
+        } else if (type.equals(JavaDocType.TYPE_DEF_SETTER_METHOD)) {
             javaDoc = generateForTypeDefSetter(name);
         } else if (type.equals(JavaDocType.TYPE_DEF_CONSTRUCTOR)) {
             javaDoc = generateForTypeDefConstructor(name);
-        } else if (type.equals(JavaDocType.SETTER)) {
+        } else if (type.equals(JavaDocType.SETTER_METHOD)) {
             javaDoc = generateForSetters(name, isList);
-        } else if (type.equals(JavaDocType.OF)) {
+        } else if (type.equals(JavaDocType.OF_METHOD)) {
             javaDoc = generateForOf(name);
         } else if (type.equals(JavaDocType.DEFAULT_CONSTRUCTOR)) {
             javaDoc = generateForDefaultConstructors();
-        } else if (type.equals(JavaDocType.BUILD)) {
+        } else if (type.equals(JavaDocType.BUILD_METHOD)) {
             javaDoc = generateForBuild(name);
         } else {
             javaDoc = generateForConstructors(name);
@@ -150,19 +181,18 @@
      * @return javaDocs
      */
     private static String generateForGetters(String attribute, boolean isList) {
-        String getter = UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.JAVA_DOC_FIRST_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_GETTERS + attribute
-                + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN;
+
+        String getter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_GETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ESTRIC
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN;
         if (isList) {
-            String listAttribute = UtilConstants.LIST.toLowerCase() + UtilConstants.SPACE + UtilConstants.OF
-                    + UtilConstants.SPACE;
+            String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
             getter = getter + listAttribute;
+        } else {
+            getter = getter + VALUE + SPACE + OF + SPACE;
         }
 
-        getter = getter + attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.JAVA_DOC_END_LINE;
+        getter = getter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
         return getter;
     }
 
@@ -174,23 +204,18 @@
      * @return javaDocs
      */
     private static String generateForSetters(String attribute, boolean isList) {
-        String setter = UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.JAVA_DOC_FIRST_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_SETTERS + attribute
-                + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM;
+
+        String setter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_SETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ESTRIC
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
         if (isList) {
-            setter = setter + attribute + UtilConstants.SUFIX_S + UtilConstants.SPACE;
-            String listAttribute = UtilConstants.LIST.toLowerCase() + UtilConstants.SPACE + UtilConstants.OF
-                    + UtilConstants.SPACE;
+            String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
             setter = setter + listAttribute;
         } else {
-            setter = setter + attribute + UtilConstants.SPACE;
+            setter = setter + VALUE + SPACE + OF + SPACE;
         }
-
-        setter = setter + attribute + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.JAVA_DOC_RETURN + UtilConstants.BUILDER_OBJECT + attribute + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
+        setter = setter + attribute + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + BUILDER_OBJECT + attribute
+                + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
         return setter;
     }
 
@@ -201,14 +226,12 @@
      * @return javaDocs
      */
     private static String generateForOf(String attribute) {
-        return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_OF + attribute
-                + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
-                + UtilConstants.VALUE + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN + UtilConstants.OBJECT
-                + UtilConstants.SPACE + UtilConstants.OF + UtilConstants.SPACE + attribute + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
+
+        return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
+                + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ESTRIC + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + OBJECT + SPACE + OF + SPACE + attribute + NEW_LINE
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
     }
 
     /**
@@ -218,12 +241,11 @@
      * @return javaDocs
      */
     private static String generateForTypeDefSetter(String attribute) {
-        return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_SETTERS_COMMON + attribute
-                + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
-                + UtilConstants.VALUE + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
+
+        return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_SETTERS_COMMON + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ESTRIC
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute
+                + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
     }
 
     /**
@@ -233,12 +255,11 @@
      * @return javaDocs
      */
     private static String generateForTypeDefConstructor(String attribute) {
-        return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_CONSTRUCTOR + attribute
-                + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
-                + UtilConstants.NEW_LINE_ESTRIC + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
-                + UtilConstants.VALUE + UtilConstants.SPACE + UtilConstants.VALUE + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
+
+        return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
+                + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ESTRIC + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
     }
 
     /**
@@ -248,8 +269,8 @@
      * @return javaDocs
      */
     private static String generateForImplClass(String className) {
-        return UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.IMPL_CLASS_JAVA_DOC
-                + className + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
+
+        return NEW_LINE + JAVA_DOC_FIRST_LINE + IMPL_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
     }
 
     /**
@@ -259,8 +280,9 @@
      * @return javaDocs
      */
     private static String generateForBuilderClass(String className) {
-        return UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_CLASS_JAVA_DOC
-                + className + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
+
+        return NEW_LINE + JAVA_DOC_FIRST_LINE + BUILDER_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE
+                + JAVA_DOC_END_LINE;
     }
 
     /**
@@ -270,8 +292,9 @@
      * @return javaDocs
      */
     private static String generateForInterface(String interfaceName) {
-        return UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.INTERFACE_JAVA_DOC
-                + interfaceName + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
+
+        return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
+                + JAVA_DOC_END_LINE;
     }
 
     /**
@@ -281,8 +304,9 @@
      * @return javaDocs
      */
     private static String generateForBuilderInterface(String builderforName) {
-        return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.BUILDER_INTERFACE_JAVA_DOC + builderforName
-                + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
+
+        return JAVA_DOC_FIRST_LINE + BUILDER_INTERFACE_JAVA_DOC + builderforName + PERIOD + NEW_LINE
+                + JAVA_DOC_END_LINE;
     }
 
     /**
@@ -292,8 +316,8 @@
      * @return javaDocs
      */
     private static String generateForPackage(String packageName) {
-        return UtilConstants.JAVA_DOC_FIRST_LINE + UtilConstants.PACKAGE_INFO_JAVADOC + packageName
-                + UtilConstants.PERIOD + UtilConstants.NEW_LINE + UtilConstants.JAVA_DOC_END_LINE;
+
+        return JAVA_DOC_FIRST_LINE + PACKAGE_INFO_JAVADOC + packageName + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
     }
 
     /**
@@ -302,9 +326,9 @@
      * @return javaDocs
      */
     private static String generateForDefaultConstructors() {
-        return UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
+
+        return FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_DEFAULT_CONSTRUCTOR
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
     }
 
     /**
@@ -314,14 +338,12 @@
      * @return javaDocs
      */
     private static String generateForConstructors(String className) {
-        return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_CONSTRUCTOR + className
-                + UtilConstants.IMPL + UtilConstants.PERIOD + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_PARAM
-                + UtilConstants.BUILDER.toLowerCase() + UtilConstants.OBJECT + UtilConstants.SPACE
-                + UtilConstants.BUILDER_OBJECT + UtilConstants.SPACE + className + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
+
+        return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR + className + IMPL + PERIOD + NEW_LINE
+                + FOUR_SPACE_INDENTATION + NEW_LINE_ESTRIC + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM
+                + BUILDER.toLowerCase() + OBJECT + SPACE + BUILDER_OBJECT + SPACE + className + NEW_LINE
+                + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
     }
 
     /**
@@ -331,11 +353,10 @@
      * @return javaDocs
      */
     private static String generateForBuild(String buildName) {
-        return UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_BUILD + buildName + UtilConstants.PERIOD
-                + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.NEW_LINE_ESTRIC
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_RETURN
-                + UtilConstants.JAVA_DOC_BUILD_RETURN + buildName + UtilConstants.PERIOD + UtilConstants.NEW_LINE
-                + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_END_LINE;
+
+        return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_BUILD
+                + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ESTRIC + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_RETURN + JAVA_DOC_BUILD_RETURN + buildName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_END_LINE;
     }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
index 54adce9..9de5358 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
@@ -23,10 +23,13 @@
 import java.util.Stack;
 
 /**
- * Provides the IO services for Yangutils-maven-Plugin.
+ * Provides utility for searching the files in a directory.
  */
 public final class YangFileScanner {
 
+    private static final String JAVA_FILE_EXTENTION = ".java";
+    private static final String YANG_FILE_EXTENTION = ".yang";
+
     /**
      * Default constructor.
      */
@@ -44,7 +47,7 @@
      */
     public static List<String> getJavaFiles(String root) throws NullPointerException, IOException {
 
-        return getFiles(root, ".java");
+        return getFiles(root, JAVA_FILE_EXTENTION);
     }
 
     /**
@@ -58,7 +61,7 @@
      */
     public static List<String> getYangFiles(String root) throws NullPointerException, IOException {
 
-        return getFiles(root, ".yang");
+        return getFiles(root, YANG_FILE_EXTENTION);
     }
 
     /**
@@ -68,8 +71,7 @@
      * @param extension file extension
      * @return list of required files
      * @throws NullPointerException when no file is there
-     * @throws IOException when files get deleted while performing the
-     *             operations
+     * @throws IOException when files get deleted while performing the operations
      */
     public static List<String> getFiles(String root, String extension) throws NullPointerException, IOException {
 
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
index fcc52e8..866ff97 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
@@ -25,13 +25,27 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.io.FileUtils;
 import org.apache.maven.model.Resource;
 import org.apache.maven.project.MavenProject;
-import org.onosproject.yangutils.utils.UtilConstants;
 import org.slf4j.Logger;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
+import static org.apache.commons.io.FileUtils.deleteDirectory;
+import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+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.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
+import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_RESOURCES;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.appendFileContents;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.PACKAGE_INFO;
 import static org.slf4j.LoggerFactory.getLogger;
 
 /**
@@ -40,8 +54,7 @@
 public final class YangIoUtils {
 
     private static final Logger log = getLogger(YangIoUtils.class);
-    private static final String TARGET_RESOURCE_PATH = UtilConstants.SLASH + UtilConstants.TEMP + UtilConstants.SLASH
-            + UtilConstants.YANG_RESOURCES + UtilConstants.SLASH;
+    private static final String TARGET_RESOURCE_PATH = SLASH + TEMP + SLASH + YANG_RESOURCES + SLASH;
 
     /**
      * Default constructor.
@@ -72,22 +85,24 @@
      */
     public static void addPackageInfo(File path, String classInfo, String pack) throws IOException {
 
-        if (pack.contains(UtilConstants.ORG)) {
-            String[] strArray = pack.split(UtilConstants.ORG);
-            pack = UtilConstants.ORG + strArray[1];
+        if (pack.contains(ORG)) {
+            String[] strArray = pack.split(ORG);
+            pack = ORG + strArray[1];
         }
         try {
 
-            File packageInfo = new File(path + File.separator + "package-info.java");
+            File packageInfo = new File(path + SLASH + "package-info.java");
             packageInfo.createNewFile();
-            FileWriter fileWriter = null;
-            BufferedWriter bufferedWriter = null;
-            fileWriter = new FileWriter(packageInfo);
-            bufferedWriter = new BufferedWriter(fileWriter);
+
+            FileWriter fileWriter = new FileWriter(packageInfo);
+            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
+
             bufferedWriter.write(CopyrightHeader.getCopyrightHeader());
-            bufferedWriter.write(JavaDocGen.getJavaDoc(JavaDocGen.JavaDocType.PACKAGE_INFO, classInfo, false));
-            bufferedWriter.write(UtilConstants.PACKAGE + UtilConstants.SPACE + pack + UtilConstants.SEMI_COLAN);
+            bufferedWriter.write(JavaDocGen.getJavaDoc(PACKAGE_INFO, classInfo, false));
+            bufferedWriter.write(PACKAGE + SPACE + pack + SEMI_COLAN);
+
             bufferedWriter.close();
+            fileWriter.close();
         } catch (IOException e) {
             throw new IOException("Exception occured while creating package info file.");
         }
@@ -97,15 +112,16 @@
      * Cleans the generated directory if already exist in source folder.
      *
      * @param dir generated directory in previous build
+     * @throws IOException when failed to delete directory
      */
-    public static void clean(String dir) {
+    public static void clean(String dir) throws IOException {
 
         File generatedDirectory = new File(dir);
         if (generatedDirectory.exists()) {
             try {
-                FileUtils.deleteDirectory(generatedDirectory);
+                deleteDirectory(generatedDirectory);
             } catch (IOException e) {
-                log.info("Failed to delete the generated files in " + generatedDirectory + " directory");
+                throw new IOException("Failed to delete the generated files in " + generatedDirectory + " directory");
             }
         }
     }
@@ -147,18 +163,17 @@
      */
     public static String partString(String partString) {
 
-        String[] strArray = partString.split(UtilConstants.COMMA);
-        String newString = "";
+        String[] strArray = partString.split(COMMA);
+        String newString = EMPTY_STRING;
         for (int i = 0; i < strArray.length; i++) {
             if (i % 4 != 0 || i == 0) {
-                newString = newString + strArray[i] + UtilConstants.COMMA;
+                newString = newString + strArray[i] + COMMA;
             } else {
-                newString = newString + UtilConstants.NEW_LINE + UtilConstants.TWELVE_SPACE_INDENTATION
-                        + strArray[i]
-                        + UtilConstants.COMMA;
+                newString = newString + NEW_LINE + TWELVE_SPACE_INDENTATION
+                        + strArray[i] + COMMA;
             }
         }
-        return trimAtLast(newString, UtilConstants.COMMA);
+        return trimAtLast(newString, COMMA);
     }
 
     /**
@@ -183,13 +198,13 @@
     public static String getDirectory(String baseCodeGenPath, String pathOfJavaPkg) {
 
         if (pathOfJavaPkg.charAt(pathOfJavaPkg.length() - 1) == File.separatorChar) {
-            pathOfJavaPkg = trimAtLast(pathOfJavaPkg, UtilConstants.SLASH);
+            pathOfJavaPkg = trimAtLast(pathOfJavaPkg, SLASH);
         }
-        String[] strArray = pathOfJavaPkg.split(UtilConstants.SLASH);
-        if (strArray[0].equals(UtilConstants.EMPTY_STRING)) {
+        String[] strArray = pathOfJavaPkg.split(SLASH);
+        if (strArray[0].equals(EMPTY_STRING)) {
             return pathOfJavaPkg;
         } else {
-            return baseCodeGenPath + File.separator + pathOfJavaPkg;
+            return baseCodeGenPath + SLASH + pathOfJavaPkg;
         }
     }
 
@@ -212,8 +227,7 @@
      * @param yangFiles list of YANG files
      * @param outputDir project's output directory
      * @param project maven project
-     * @throws IOException when fails to copy files to destination resource
-     *             directory
+     * @throws IOException when fails to copy files to destination resource directory
      */
     public static void copyYangFilesToTarget(List<String> yangFiles, String outputDir, MavenProject project)
             throws IOException {
@@ -226,11 +240,11 @@
 
         for (File file : files) {
             Files.copy(file.toPath(),
-                    new File(path + file.getName()).toPath(),
+                    (new File(path + file.getName())).toPath(),
                     StandardCopyOption.REPLACE_EXISTING);
         }
         Resource rsc = new Resource();
-        rsc.setDirectory(outputDir + UtilConstants.SLASH + UtilConstants.TEMP + UtilConstants.SLASH);
+        rsc.setDirectory(outputDir + SLASH + TEMP + SLASH);
         project.addResource(rsc);
     }
 
@@ -248,4 +262,58 @@
         }
         return files;
     }
+
+    /**
+     * Merge the temp java files to main java files.
+     *
+     * @param appendFile temp file
+     * @param srcFile main file
+     * @throws IOException when fails to append contents
+     */
+    public static void mergeJavaFiles(File appendFile, File srcFile) throws IOException {
+
+        try {
+            appendFileContents(appendFile, srcFile);
+        } catch (IOException e) {
+            throw new IOException("Failed to append " + appendFile + " in " + srcFile);
+        }
+    }
+
+    /**
+     * Insert data in the generated file.
+     *
+     * @param file file in which need to be inserted
+     * @param data data which need to be inserted
+     * @throws IOException when fails to insert into file
+     */
+    public static void insertDataIntoJavaFile(File file, String data) throws IOException {
+
+        try {
+            updateFileHandle(file, data, false);
+        } catch (IOException e) {
+            throw new IOException("Failed to insert in " + file + "file");
+        }
+    }
+
+    /**
+     * Convert directory path in java package format.
+     *
+     * @param path directory path
+     * @return java package
+     */
+    public static String convertPathToPkg(String path) {
+
+        return path.replace(SLASH, PERIOD);
+    }
+
+    /**
+     * Convert java package in directory path format.
+     *
+     * @param pkg java package
+     * @return directory path
+     */
+    public static String convertPkgToPath(String pkg) {
+
+        return pkg.replace(PERIOD, SLASH);
+    }
 }
diff --git a/utils/yangutils/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGenTest.java b/utils/yangutils/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGenTest.java
index 1ae9143..22daf1a 100644
--- a/utils/yangutils/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGenTest.java
+++ b/utils/yangutils/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGenTest.java
@@ -16,18 +16,36 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertNotNull;
-
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 
 import org.junit.Test;
-import org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType;
-import org.onosproject.yangutils.translator.tojava.GeneratedMethodTypes;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.utils.UtilConstants;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertNotNull;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getImportText;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefination;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefClose;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefStart;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getListAttribute;
+import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
+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.IMPORT;
+import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
+import static org.onosproject.yangutils.utils.UtilConstants.LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
+import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
+import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
 
 /**
  * Unit test cases for java code snippet generator.
@@ -36,10 +54,8 @@
 
     private static final String PKG_INFO = "org.onosproject.unittest";
     private static final String CLASS_INFO = "JavaCodeSnippetGenTest";
-    private static final int FILE_GEN_TYPE = GeneratedJavaFileType.INTERFACE_MASK;
-    private static final GeneratedMethodTypes METHOD_GEN_TYPE = GeneratedMethodTypes.GETTER;
+    private static final int FILE_GEN_TYPE = INTERFACE_MASK;
     private static final String YANG_NAME = "Test";
-    private static final String STRING = "String";
 
     /**
      * Unit test for private constructor.
@@ -54,6 +70,7 @@
     @Test
     public void callPrivateConstructors() throws SecurityException, NoSuchMethodException, IllegalArgumentException,
             InstantiationException, IllegalAccessException, InvocationTargetException {
+
         Class<?>[] classesToConstruct = {JavaCodeSnippetGen.class };
         for (Class<?> clazz : classesToConstruct) {
             Constructor<?> constructor = clazz.getDeclaredConstructor();
@@ -67,14 +84,14 @@
      */
     @Test
     public void testForImportText() {
+
         JavaQualifiedTypeInfo importInfo = new JavaQualifiedTypeInfo();
         importInfo.setPkgInfo(PKG_INFO);
         importInfo.setClassInfo(CLASS_INFO);
 
-        String imports = JavaCodeSnippetGen.getImportText(importInfo);
+        String imports = getImportText(importInfo);
 
-        assertThat(true, is(imports.equals(UtilConstants.IMPORT + PKG_INFO + UtilConstants.PERIOD + CLASS_INFO
-                + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE)));
+        assertThat(true, is(imports.equals(IMPORT + PKG_INFO + PERIOD + CLASS_INFO + SEMI_COLAN + NEW_LINE)));
     }
 
     /**
@@ -82,11 +99,10 @@
      */
     @Test
     public void testForJavaClassDefStart() {
-        String classDef = JavaCodeSnippetGen.getJavaClassDefStart(FILE_GEN_TYPE, YANG_NAME);
-        assertThat(true,
-                is(classDef.equals(UtilConstants.PUBLIC + UtilConstants.SPACE + UtilConstants.INTERFACE
-                        + UtilConstants.SPACE + YANG_NAME + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET
-                        + UtilConstants.NEW_LINE)));
+
+        String classDef = getJavaClassDefStart(FILE_GEN_TYPE, YANG_NAME);
+        assertThat(true, is(classDef
+                .equals(PUBLIC + SPACE + INTERFACE + SPACE + YANG_NAME + SPACE + OPEN_CURLY_BRACKET + NEW_LINE)));
 
     }
 
@@ -95,36 +111,20 @@
      */
     @Test
     public void testForListAttribute() {
-        String listAttribute = JavaCodeSnippetGen.getListAttribute(STRING);
-        assertThat(true, is(listAttribute.equals(UtilConstants.LIST + UtilConstants.DIAMOND_OPEN_BRACKET + STRING
-                + UtilConstants.DIAMOND_CLOSE_BRACKET)));
+
+        String listAttribute = getListAttribute(STRING_DATA_TYPE);
+        assertThat(true,
+                is(listAttribute.equals(LIST + DIAMOND_OPEN_BRACKET + STRING_DATA_TYPE + DIAMOND_CLOSE_BRACKET)));
     }
 
     /**
      * Unit test case for java class interface definition close.
      */
     @Test
-    public void testForJavaClassDefInterfaceClose() {
-        String interfaceDef = JavaCodeSnippetGen.getJavaClassDefClose();
-        assertThat(true, is(interfaceDef.equals(UtilConstants.CLOSE_CURLY_BRACKET)));
-    }
+    public void testForJavaClassDefClose() {
 
-    /**
-     * Unit test case for java class builder class definition close.
-     */
-    @Test
-    public void testForJavaClassDefBuilderClassClose() {
-        String builderClassDef = JavaCodeSnippetGen.getJavaClassDefClose();
-        assertThat(true, is(builderClassDef.equals(UtilConstants.CLOSE_CURLY_BRACKET)));
-    }
-
-    /**
-     * Unit test case for java class typedef definition close.
-     */
-    @Test
-    public void testForJavaClassDefTypeDefClose() {
-        String typeDef = JavaCodeSnippetGen.getJavaClassDefClose();
-        assertThat(true, is(typeDef.equals(UtilConstants.CLOSE_CURLY_BRACKET)));
+        String interfaceDef = getJavaClassDefClose();
+        assertThat(true, is(interfaceDef.equals(CLOSE_CURLY_BRACKET)));
     }
 
     /**
@@ -133,30 +133,22 @@
     @Test
     public void testForJavaAttributeInfo() {
 
-        String attributeWithoutTypePkg = JavaCodeSnippetGen.getJavaAttributeDefination(null, UtilConstants.STRING,
-                YANG_NAME, false);
-        assertThat(true,
-                is(attributeWithoutTypePkg.equals(UtilConstants.PRIVATE + UtilConstants.SPACE + UtilConstants.STRING
-                        + UtilConstants.SPACE + YANG_NAME + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE)));
-        String attributeWithTypePkg = JavaCodeSnippetGen.getJavaAttributeDefination(
-                UtilConstants.JAVA_LANG, UtilConstants.STRING, YANG_NAME, false);
-        assertThat(true, is(attributeWithTypePkg
-                .equals(UtilConstants.PRIVATE + UtilConstants.SPACE + UtilConstants.JAVA_LANG + UtilConstants.PERIOD
-                        + UtilConstants.STRING + UtilConstants.SPACE + YANG_NAME + UtilConstants.SEMI_COLAN
-                        + UtilConstants.NEW_LINE)));
-        String attributeWithListPkg = JavaCodeSnippetGen.getJavaAttributeDefination(
-                UtilConstants.JAVA_LANG, UtilConstants.STRING, YANG_NAME, true);
-        assertThat(true,
-                is(attributeWithListPkg.equals(UtilConstants.PRIVATE + UtilConstants.SPACE + UtilConstants.LIST
-                        + UtilConstants.DIAMOND_OPEN_BRACKET + UtilConstants.JAVA_LANG + UtilConstants.PERIOD
-                        + UtilConstants.STRING + UtilConstants.DIAMOND_CLOSE_BRACKET + UtilConstants.SPACE + YANG_NAME
-                        + UtilConstants.SUFIX_S + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE)));
-        String attributeWithListWithoutPkg = JavaCodeSnippetGen.getJavaAttributeDefination(null, UtilConstants.STRING,
-                YANG_NAME, true);
-        assertThat(true,
-                is(attributeWithListWithoutPkg.equals(UtilConstants.PRIVATE + UtilConstants.SPACE + UtilConstants.LIST
-                        + UtilConstants.DIAMOND_OPEN_BRACKET + UtilConstants.STRING
-                        + UtilConstants.DIAMOND_CLOSE_BRACKET + UtilConstants.SPACE + YANG_NAME + UtilConstants.SUFIX_S
-                        + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE)));
+        String attributeWithoutTypePkg = getJavaAttributeDefination(null, STRING_DATA_TYPE, YANG_NAME, false);
+        assertThat(true, is(attributeWithoutTypePkg.equals(
+                PRIVATE + SPACE + STRING_DATA_TYPE + SPACE + YANG_NAME + SEMI_COLAN + NEW_LINE)));
+
+        String attributeWithTypePkg = getJavaAttributeDefination(JAVA_LANG, STRING_DATA_TYPE, YANG_NAME, false);
+        assertThat(true, is(attributeWithTypePkg.equals(PRIVATE + SPACE + JAVA_LANG + PERIOD
+                + STRING_DATA_TYPE + SPACE + YANG_NAME + SEMI_COLAN + NEW_LINE)));
+
+        String attributeWithListPkg = getJavaAttributeDefination(JAVA_LANG, STRING_DATA_TYPE, YANG_NAME, true);
+        assertThat(true, is(attributeWithListPkg.equals(
+                PRIVATE + SPACE + LIST + DIAMOND_OPEN_BRACKET + JAVA_LANG + PERIOD + STRING_DATA_TYPE
+                        + DIAMOND_CLOSE_BRACKET + SPACE + YANG_NAME + SEMI_COLAN + NEW_LINE)));
+
+        String attributeWithListWithoutPkg = getJavaAttributeDefination(null, STRING_DATA_TYPE, YANG_NAME, true);
+        assertThat(true, is(attributeWithListWithoutPkg.equals(
+                PRIVATE + SPACE + LIST + DIAMOND_OPEN_BRACKET + STRING_DATA_TYPE + DIAMOND_CLOSE_BRACKET + SPACE
+                        + YANG_NAME + SEMI_COLAN + NEW_LINE)));
     }
 }
diff --git a/utils/yangutils/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java b/utils/yangutils/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
deleted file mode 100644
index fddd7a9..0000000
--- a/utils/yangutils/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2016 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.yangutils.translator.tojava.utils;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-import org.junit.Test;
-import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
-import org.onosproject.yangutils.utils.UtilConstants;
-
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-
-/**
- * Unit tests for generated methods from the file type.
- */
-public final class MethodsGeneratorTest {
-
-    public static JavaAttributeInfo testAttr;
-    public static YangType<?> attrType = new YangType<>();
-
-    /**
-     * Unit test for private constructor.
-     *
-     * @throws SecurityException if any security violation is observed
-     * @throws NoSuchMethodException if when the method is not found
-     * @throws IllegalArgumentException if there is illegal argument found
-     * @throws InstantiationException if instantiation is provoked for the
-     *             private constructor
-     * @throws IllegalAccessException if instance is provoked or a method is
-     *             provoked
-     * @throws InvocationTargetException when an exception occurs by the method
-     *             or constructor
-     */
-    @Test
-    public void callPrivateConstructors() throws SecurityException, NoSuchMethodException, IllegalArgumentException,
-            InstantiationException, IllegalAccessException, InvocationTargetException {
-
-        Class<?>[] classesToConstruct = {
-                MethodsGenerator.class
-        };
-        for (Class<?> clazz : classesToConstruct) {
-            Constructor<?> constructor = clazz.getDeclaredConstructor();
-            constructor.setAccessible(true);
-            assertNotNull(constructor.newInstance());
-        }
-    }
-
-    //    /**
-    //     * Unit test case for checking the parse builder and typedef constructor.
-    //     */
-    //    @Test
-    //    public void getParseBuilderInterfaceMethodConstructorTest() {
-    //
-    //        JavaQualifiedTypeInfo forSetter = new JavaQualifiedTypeInfo();
-    //        attrType.setDataTypeName("binary");
-    //        attrType.getDataTypeName();
-    //        attrType.setDataType(YangDataTypes.BINARY);
-    //        attrType.getDataType();
-    //        testAttr.setAttributeName("attributeTest");
-    //        testAttr.setAttributeType(attrType);
-    //        forSetter.setPkgInfo("test1/test3");
-    //        forSetter.setClassInfo("This class contains");
-    //        testAttr.setImportInfo(forSetter);
-    //        String stringTypeDef = MethodsGenerator.getTypeDefConstructor(testAttr, "Testname");
-    //    }
-
-    /**
-     * Unit test case for checking the values received from constructor, default
-     * constructor and build string formation.
-     */
-    @Test
-    public void getValuesTest() {
-
-        String stringConstructor = MethodsGenerator.getConstructorString("testname");
-        assertThat(stringConstructor.contains(UtilConstants.JAVA_DOC_CONSTRUCTOR)
-                && stringConstructor.contains(UtilConstants.JAVA_DOC_PARAM)
-                && stringConstructor.contains(UtilConstants.BUILDER_OBJECT), is(true));
-        String stringDefaultConstructor = MethodsGenerator.getDefaultConstructorString("testnameBuilder", "public");
-        assertThat(stringDefaultConstructor.contains(UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR)
-                && stringDefaultConstructor.contains(UtilConstants.BUILDER)
-                && stringDefaultConstructor.contains("testname"), is(true));
-        String stringBuild = MethodsGenerator.getBuildString("testname");
-        assertThat(stringBuild.contains(UtilConstants.OVERRIDE) && stringBuild.contains(UtilConstants.BUILD)
-                && stringBuild.contains(UtilConstants.RETURN), is(true));
-
-    }
-
-    /**
-     * Unit test for checking the values received for class getter, class and
-     * typedef setters with list data type.
-     */
-    //    @Test
-    //    public void getGetterSetterTest() {
-    //
-    //        JavaQualifiedTypeInfo forGetterSetter = new JavaQualifiedTypeInfo();
-    //        attrType.setDataTypeName("int");
-    //        attrType.getDataTypeName();
-    //        attrType.setDataType(YangDataTypes.UINT8);
-    //        attrType.getDataType();
-    //        testAttr.setAttributeName("AttributeTest1");
-    //        testAttr.setAttributeType(attrType);
-    //        forGetterSetter.setPkgInfo("null");
-    //        forGetterSetter.setClassInfo("This class contains");
-    //        testAttr.setImportInfo(forGetterSetter);
-    //        testAttr.setListAttr(true);
-    //        String getterForClass = MethodsGenerator.getGetterForClass(testAttr);
-    //        assertThat(getterForClass.contains(UtilConstants.GET_METHOD_PREFIX) && getterForClass.contains("List<")
-    //                && getterForClass.contains("attributeTest1"), is(true));
-    //        String setterForClass = MethodsGenerator.getSetterForClass(testAttr, "TestThis");
-    //        assertThat(setterForClass.contains(UtilConstants.SET_METHOD_PREFIX) && setterForClass.contains("List<")
-    //                && setterForClass.contains("attributeTest1"), is(true));
-    //        String typeDefSetter = MethodsGenerator.getSetterForTypeDefClass(testAttr);
-    //        assertThat(typeDefSetter.contains(UtilConstants.SET_METHOD_PREFIX) && typeDefSetter.contains("List<")
-    //                && typeDefSetter.contains("attributeTest1") && typeDefSetter.contains("this."), is(true));
-    //    }
-
-    /**
-     * Unit test case for checking the parse builder and typedef constructor
-     * with list data type.
-     */
-    //    @Test
-    //    public void getConstructorWithListTypeTest() {
-    //
-    //        JavaQualifiedTypeInfo forSetter = new JavaQualifiedTypeInfo();
-    //        attrType.setDataTypeName("binary");
-    //        attrType.getDataTypeName();
-    //        attrType.setDataType(YangDataTypes.BINARY);
-    //        attrType.getDataType();
-    //        testAttr.setAttributeName("attributeTest");
-    //        testAttr.setAttributeType(attrType);
-    //        forSetter.setPkgInfo("null");
-    //        forSetter.setClassInfo("This class contains");
-    //        testAttr.setImportInfo(forSetter);
-    //        testAttr.setListAttr(true);
-    //        String stringTypeDef = MethodsGenerator.getTypeDefConstructor(testAttr, "Testname");
-    //        assertThat(stringTypeDef.contains("(List<") && stringTypeDef.contains("Testname")
-    //                && stringTypeDef.contains(UtilConstants.THIS), is(true));
-    //    }
-}
diff --git a/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java b/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java
index a41ed7d..cfa1cf1 100644
--- a/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java
+++ b/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java
@@ -21,9 +21,7 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.onosproject.yangutils.utils.UtilConstants;
 
 import static org.junit.Assert.assertNotNull;
@@ -34,12 +32,12 @@
  */
 public final class FileSystemUtilTest {
 
-    public static final String BASE_DIR_PKG = "target.UnitTestCase.";
-    public static final String PKG_INFO_CONTENT = "testGeneration6";
-    public static final String BASE_PKG = "target/UnitTestCase";
-
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
+    private static final String BASE_DIR_PKG = "target.UnitTestCase.";
+    private static final String PKG_INFO_CONTENT = "testGeneration6";
+    private static final String BASE_PKG = "target/UnitTestCase";
+    private static final String TEST_DATA_1 = "This is to append a text to the file first1\n";
+    private static final String TEST_DATA_2 = "This is next second line\n";
+    private static final String TEST_DATA_3 = "This is next third line in the file";
 
     /**
      * A private constructor is tested.
@@ -47,20 +45,15 @@
      * @throws SecurityException if any security violation is observed
      * @throws NoSuchMethodException if when the method is not found
      * @throws IllegalArgumentException if there is illegal argument found
-     * @throws InstantiationException if instantiation is provoked for the
-     *             private constructor
-     * @throws IllegalAccessException if instance is provoked or a method is
-     *             provoked
-     * @throws InvocationTargetException when an exception occurs by the method
-     *             or constructor
+     * @throws InstantiationException if instantiation is provoked for the private constructor
+     * @throws IllegalAccessException if instance is provoked or a method is provoked
+     * @throws InvocationTargetException when an exception occurs by the method or constructor
      */
     @Test
     public void callPrivateConstructors() throws SecurityException, NoSuchMethodException, IllegalArgumentException,
             InstantiationException, IllegalAccessException, InvocationTargetException {
 
-        Class<?>[] classesToConstruct = {
-                FileSystemUtil.class
-        };
+        Class<?>[] classesToConstruct = {FileSystemUtil.class };
         for (Class<?> clazz : classesToConstruct) {
             Constructor<?> constructor = clazz.getDeclaredConstructor();
             constructor.setAccessible(true);
@@ -70,6 +63,8 @@
 
     /**
      * This test case checks the contents to be written in the file.
+     *
+     * @throws IOException when fails to create a test file
      */
     @Test
     public void updateFileHandleTest() throws IOException {
@@ -80,15 +75,17 @@
         createFile.createNewFile();
         File createSourceFile = new File(dir + "sourceTestFile");
         createSourceFile.createNewFile();
-        FileSystemUtil.updateFileHandle(createFile, "This is to append a text to the file first1\n", false);
-        FileSystemUtil.updateFileHandle(createFile, "This is next second line\n", false);
-        FileSystemUtil.updateFileHandle(createFile, "This is next third line in the file", false);
+        FileSystemUtil.updateFileHandle(createFile, TEST_DATA_1, false);
+        FileSystemUtil.updateFileHandle(createFile, TEST_DATA_2, false);
+        FileSystemUtil.updateFileHandle(createFile, TEST_DATA_3, false);
         FileSystemUtil.appendFileContents(createFile, createSourceFile);
         FileSystemUtil.updateFileHandle(createFile, null, true);
     }
 
     /**
-     * This test case checks whether the package is existing.
+     * This test  case checks whether the package is existing.
+     *
+     * @throws IOException when failed to create a test file
      */
     @Test
     public void packageExistTest() throws IOException {
@@ -104,21 +101,4 @@
         createDir.delete();
     }
 
-    /**
-     * This test case checks the package does not exist.
-     */
-    //    @Test
-    //    public void packageNotExistTest() throws IOException {
-
-    //        String dirPath = "notexist1.notexist2";
-    //        String strPath = BASE_DIR_PKG + dirPath;
-    //        File createDir = new File(strPath.replace(UtilConstants.PERIOD, UtilConstants.SLASH));
-    //        assertFalse(FileSystemUtil.doesPackageExist(strPath));
-    //        createDir.mkdirs();
-    //        assertFalse(FileSystemUtil.doesPackageExist(strPath));
-    //        CopyrightHeader.parseCopyrightHeader();
-    //        FileSystemUtil.createPackage(strPath, PKG_INFO_CONTENT);
-    //        assertTrue(FileSystemUtil.doesPackageExist(strPath));
-    //        createDir.delete();
-    //    }
 }
diff --git a/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java b/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java
index a0f88cb..4a1d8de 100644
--- a/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java
+++ b/utils/yangutils/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java
@@ -62,7 +62,7 @@
     @Test
     public void buildGenerationTest() {
 
-        String buildDoc = JavaDocGen.getJavaDoc(JavaDocType.BUILD, "testGeneration1", false);
+        String buildDoc = JavaDocGen.getJavaDoc(JavaDocType.BUILD_METHOD, "testGeneration1", false);
         assertTrue(buildDoc.contains("Builds object of") && buildDoc.contains(" */\n"));
     }
 
@@ -117,7 +117,7 @@
     @Test
     public void getterGenerationTest() {
 
-        String getterJavaDoc = JavaDocGen.getJavaDoc(JavaDocType.GETTER, "testGeneration1", false);
+        String getterJavaDoc = JavaDocGen.getJavaDoc(JavaDocType.GETTER_METHOD, "testGeneration1", false);
         assertTrue(getterJavaDoc.contains("Returns the attribute") && getterJavaDoc.contains(" */\n"));
     }
 
@@ -157,7 +157,7 @@
     @Test
     public void setterGenerationTest() {
 
-        String setterJavaDoc = JavaDocGen.getJavaDoc(JavaDocType.SETTER, "testGeneration1", false);
+        String setterJavaDoc = JavaDocGen.getJavaDoc(JavaDocType.SETTER_METHOD, "testGeneration1", false);
         assertTrue(setterJavaDoc.contains("Returns the builder object of") && setterJavaDoc.contains(" */\n"));
     }
 
@@ -167,7 +167,7 @@
     @Test
     public void typeDefSetterGenerationTest() {
 
-        String typeDefSetter = JavaDocGen.getJavaDoc(JavaDocType.TYPE_DEF_SETTER, "testGeneration1", false);
+        String typeDefSetter = JavaDocGen.getJavaDoc(JavaDocType.TYPE_DEF_SETTER_METHOD, "testGeneration1", false);
         assertTrue(typeDefSetter.contains("Sets the value of") && typeDefSetter.contains(" */\n"));
     }
 }
\ No newline at end of file