Adding builder and operation type in generated interfaces

Change-Id: I0c3ed6f01a8f933ad91ce1a46aeebc62029ca47a
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNode.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNode.java
index 91df3f7..cb0be7b 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNode.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNode.java
@@ -16,15 +16,15 @@
 
 package org.onosproject.yangutils.datamodel;
 
-import java.util.Map;
-
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 
+import java.util.Map;
+
 /**
  * Abstraction of YANG data node, used by YMS to abstractly refer the data
  * nodes in YANG data tree.
  */
-public interface YangSchemaNode {
+public interface YangSchemaNode extends LocationInfo {
 
     /**
      * Returns type of YANG schema node.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java
index 5451ea3..6f61e10 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java
@@ -24,141 +24,139 @@
     /**
      * Attributes definition temporary file.
      */
-    public static final int ATTRIBUTES_MASK = 1; //0x1
+    public static final int ATTRIBUTES_MASK = 1; // 1 << 0
 
     /**
      * Getter methods for interface.
      */
-    public static final int GETTER_FOR_INTERFACE_MASK = 2; //0x2
+    public static final int GETTER_FOR_INTERFACE_MASK = 1 << 1;
 
     /**
      * Getter methods for class.
      */
-    public static final int GETTER_FOR_CLASS_MASK = 4; //0x4
+    public static final int GETTER_FOR_CLASS_MASK = 1 << 2;
 
     /**
      * Setter methods for interface.
      */
-    public static final int SETTER_FOR_INTERFACE_MASK = 8; //0x8
+    public static final int SETTER_FOR_INTERFACE_MASK = 1 << 3;
 
     /**
      * Setter methods for class.
      */
-    public static final int SETTER_FOR_CLASS_MASK = 16; //0x10
+    public static final int SETTER_FOR_CLASS_MASK = 1 << 4;
 
     /**
      * Constructor method of class.
      */
-    public static final int CONSTRUCTOR_IMPL_MASK = 32; //0x20
+    public static final int CONSTRUCTOR_IMPL_MASK = 1 << 5;
 
     /**
      * Hash code implementation of class.
      */
-    public static final int HASH_CODE_IMPL_MASK = 64; //0X40
+    public static final int HASH_CODE_IMPL_MASK = 1 << 6;
 
     /**
      * Equals implementation of class.
      */
-    public static final int EQUALS_IMPL_MASK = 128; //0x80
+    public static final int EQUALS_IMPL_MASK = 1 << 7;
 
     /**
      * To string implementation of class.
      */
-    public static final int TO_STRING_IMPL_MASK = 256; //0x100
+    public static final int TO_STRING_IMPL_MASK = 1 << 8;
 
     /**
      * Of string implementation of class.
      */
-    public static final int OF_STRING_IMPL_MASK = 512; //0x200
+    public static final int OF_STRING_IMPL_MASK = 1 << 9;
 
     /**
      * Constructor for type class like typedef, union.
      */
-    public static final int CONSTRUCTOR_FOR_TYPE_MASK = 1024; //0x400
+    public static final int CONSTRUCTOR_FOR_TYPE_MASK = 1 << 10;
 
     /**
      * From string implementation of class.
      */
-    public static final int FROM_STRING_IMPL_MASK = 2048; //0x800
+    public static final int FROM_STRING_IMPL_MASK = 1 << 11;
 
     /**
      * Enum implementation of class.
      */
-    public static final int ENUM_IMPL_MASK = 4096; //0x1000
+    public static final int ENUM_IMPL_MASK = 1 << 12;
 
     /**
      * Rpc interface of module / sub module.
      */
-    public static final int RPC_INTERFACE_MASK = 8192; //0x2000
+    public static final int RPC_INTERFACE_MASK = 1 << 13;
 
     /**
      * Rpc implementation of module / sub module.
      */
-    public static final int RPC_IMPL_MASK = 16384; //0x4000
+    public static final int RPC_IMPL_MASK = 1 << 14;
 
     /**
      * Event enum implementation of class.
      */
-    public static final int EVENT_ENUM_MASK = 32768; //0X8000
+    public static final int EVENT_ENUM_MASK = 1 << 15;
 
     /**
      * Event method implementation of class.
      */
-    public static final int EVENT_METHOD_MASK = 65536; //0x10000
+    public static final int EVENT_METHOD_MASK = 1 << 16;
 
     /**
      * Event subject attribute implementation of class.
      */
-    public static final int EVENT_SUBJECT_ATTRIBUTE_MASK = 131072; //0X20000
+    public static final int EVENT_SUBJECT_ATTRIBUTE_MASK = 1 << 17;
 
     /**
      * Event subject getter implementation of class.
      */
-    public static final int EVENT_SUBJECT_GETTER_MASK = 262144; //0x40000
+    public static final int EVENT_SUBJECT_GETTER_MASK = 1 << 18;
 
     /**
      * Event subject setter implementation of class.
      */
-    public static final int EVENT_SUBJECT_SETTER_MASK = 524288; //80000
+    public static final int EVENT_SUBJECT_SETTER_MASK = 1 << 19;
 
     /**
      * Add to list method interface for class.
      */
-    public static final int ADD_TO_LIST_INTERFACE_MASK = 1048576; //0X100000
+    public static final int ADD_TO_LIST_INTERFACE_MASK = 1 << 20;
 
     /**
      * Add to list method implementation for class.
      */
-    public static final int ADD_TO_LIST_IMPL_MASK = 2097152; //0X200000
+    public static final int ADD_TO_LIST_IMPL_MASK = 1 << 21;
 
     /**
      * Leaf identifier enum attributes for class.
      */
-    public static final int LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK = 4194304; //0X400000
+    public static final int LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK = 1 << 22;
 
     /**
      * Is filter content match for leaves class.
      */
-    public static final int FILTER_CONTENT_MATCH_FOR_LEAF_MASK = 8388608; //0X800000
+    public static final int FILTER_CONTENT_MATCH_FOR_LEAF_MASK = 1 << 23;
 
     /**
      * Is filter content match for leaf lists class.
      */
-    public static final int FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK = 16777216; //0X1000000
+    public static final int FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK = 1 << 24;
 
     /**
      * Is filter content match for nodes class.
      */
-    public static final int FILTER_CONTENT_MATCH_FOR_NODES_MASK = 33554432; //0X2000000
+    public static final int FILTER_CONTENT_MATCH_FOR_NODES_MASK = 1 << 25;
 
     /**
      * Edit config class content for class.
      */
-    public static final int EDIT_CONTENT_MASK = 67108864; //0X4000000
+    public static final int EDIT_CONTENT_MASK = 1 << 26;
 
-    /**
-     * Creates an instance of generated temp file type.
-     */
+    // No instantiation.
     private GeneratedTempFileType() {
     }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index 756062d..aba6454 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
@@ -15,10 +15,7 @@
  */
 package org.onosproject.yangutils.translator.tojava;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
+import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
 import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangAugmentableNode;
 import org.onosproject.yangutils.datamodel.YangCase;
@@ -27,9 +24,8 @@
 import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.datamodel.YangLeavesHolder;
 import org.onosproject.yangutils.datamodel.YangList;
-import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangSubModule;
+import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
@@ -37,6 +33,10 @@
 import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
@@ -90,12 +90,15 @@
 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.parseBuilderInterfaceBuildMethodString;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getSubtreeFilteringForLeaf;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getSubtreeFilteringForLeafList;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getSubtreeFilteringForNode;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getSubtreeFilteringForLeaf;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getSubtreeFilteringForLeafList;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getSubtreeFilteringForNode;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_LEAF_HOLDER;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_PARENT_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.MISSING_PARENT_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getBeanFiles;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsg;
 import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
@@ -104,12 +107,15 @@
 import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
 import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION_IMPORT;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_TYPE_ATTRIBUTE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_TYPE_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
 import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
 import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.readAppendFile;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ADD_TO_LIST;
@@ -125,8 +131,8 @@
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.validateLineLength;
 
 /**
- * Represents implementation of java code fragments temporary implementations. Manages the common temp file required for
- * Java file(s) generated.
+ * Represents implementation of java code fragments temporary implementations.
+ * Manages the common temp file required for Java file(s) generated.
  */
 public class TempJavaFragmentFiles {
 
@@ -158,12 +164,14 @@
     /**
      * File name for getter method implementation.
      */
-    private static final String GETTER_METHOD_IMPL_FILE_NAME = "GetterMethodImpl";
+    private static final String GETTER_METHOD_IMPL_FILE_NAME =
+            "GetterMethodImpl";
 
     /**
      * File name for setter method implementation.
      */
-    private static final String SETTER_METHOD_IMPL_FILE_NAME = "SetterMethodImpl";
+    private static final String SETTER_METHOD_IMPL_FILE_NAME =
+            "SetterMethodImpl";
 
     /**
      * File name for attributes.
@@ -193,32 +201,38 @@
     /**
      * File name for from add to list interface method.
      */
-    private static final String ADD_TO_LIST_INTERFACE_METHOD_FILE_NAME = "addToList";
+    private static final String ADD_TO_LIST_INTERFACE_METHOD_FILE_NAME =
+            "addToList";
 
     /**
      * File name for from add to list impl method.
      */
-    private static final String ADD_TO_LIST_IMPL_METHOD_FILE_NAME = "addToListImpl";
+    private static final String ADD_TO_LIST_IMPL_METHOD_FILE_NAME =
+            "addToListImpl";
 
     /**
      * File name for from leaf identifier attributes.
      */
-    private static final String LEAF_IDENTIFIER_ATTRIBUTES_FILE_NAME = "leafIdentifierAtr";
+    private static final String LEAF_IDENTIFIER_ATTRIBUTES_FILE_NAME =
+            "leafIdentifierAtr";
 
     /**
      * File name for is filter content leaf match.
      */
-    private static final String FILTER_CONTENT_MATCH_LEAF_FILE_NAME = "isFilterContentMatchLeafMask";
+    private static final String FILTER_CONTENT_MATCH_LEAF_FILE_NAME =
+            "isFilterContentMatchLeafMask";
 
     /**
      * File name for is filter content leaf-list match.
      */
-    private static final String FILTER_CONTENT_MATCH_LEAF_LIST_FILE_NAME = "isFilterContentMatchLeafListMask";
+    private static final String FILTER_CONTENT_MATCH_LEAF_LIST_FILE_NAME =
+            "isFilterContentMatchLeafListMask";
 
     /**
      * File name for is filter content node match.
      */
-    private static final String FILTER_CONTENT_MATCH_NODE_FILE_NAME = "isFilterContentMatchNodeMask";
+    private static final String FILTER_CONTENT_MATCH_NODE_FILE_NAME =
+            "isFilterContentMatchNodeMask";
 
     /**
      * File name for edit content file.
@@ -233,7 +247,8 @@
     /**
      * File name for builder interface file name suffix.
      */
-    private static final String BUILDER_INTERFACE_FILE_NAME_SUFFIX = BUILDER + INTERFACE;
+    private static final String BUILDER_INTERFACE_FILE_NAME_SUFFIX =
+            BUILDER + INTERFACE;
 
     /**
      * File name for builder class file name suffix.
@@ -251,9 +266,10 @@
     private JavaImportData javaImportData;
 
     /**
-     * The variable which guides the types of temporary files generated using the temporary generated file types mask.
+     * The variable which guides the types of temporary files generated using
+     * the temporary generated file types mask.
      */
-    private int generatedTempFiles;
+    private int tempFilesFlagSet;
 
     /**
      * Absolute path where the target java file needs to be generated.
@@ -261,7 +277,8 @@
     private String absoluteDirPath;
 
     /**
-     * Contains all the interface(s)/class name which will be extended by generated files.
+     * Contains all the interface(s)/class name which will be extended by
+     * generated files.
      */
     private JavaExtendsListHolder javaExtendsListHolder;
 
@@ -373,13 +390,16 @@
     /**
      * If current node is root node.
      */
-    private boolean isRooNode;
+    private boolean rootNode;
 
     /**
      * Is attribute added.
      */
     private boolean isAttributePresent;
 
+    /**
+     * Creates an instance of temp JAVA fragment files.
+     */
     TempJavaFragmentFiles() {
     }
 
@@ -389,228 +409,234 @@
      * @param javaFileInfo generated java file information
      * @throws IOException when fails to create new file handle
      */
-    TempJavaFragmentFiles(JavaFileInfoTranslator javaFileInfo)
+    protected TempJavaFragmentFiles(JavaFileInfoTranslator javaFileInfo)
             throws IOException {
-        setJavaExtendsListHolder(new JavaExtendsListHolder());
-        setJavaImportData(new JavaImportData());
-        setJavaFileInfo(javaFileInfo);
-        setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
-                                                  getJavaFileInfo().getPackageFilePath()));
-
+        javaExtendsListHolder = new JavaExtendsListHolder();
+        javaImportData = new JavaImportData();
+        this.javaFileInfo = javaFileInfo;
+        absoluteDirPath =
+                getAbsolutePackagePath(javaFileInfo.getBaseCodeGenPath(),
+                                       javaFileInfo.getPackageFilePath());
         /*
          * Initialize getter when generation file type matches to interface
          * mask.
          */
-        if ((getGeneratedJavaFiles() & INTERFACE_MASK) != 0) {
-            addGeneratedTempFile(GETTER_FOR_INTERFACE_MASK);
-            addGeneratedTempFile(ADD_TO_LIST_INTERFACE_MASK);
-            addGeneratedTempFile(LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK);
+        if (javaFlagSet(INTERFACE_MASK)) {
+            addGeneratedTempFile(GETTER_FOR_INTERFACE_MASK |
+                                         ADD_TO_LIST_INTERFACE_MASK |
+                                         LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK);
         }
-
         /*
          * Initialize getter and setter when generation file type matches to
          * builder interface mask.
          */
-        if ((getGeneratedJavaFiles() & BUILDER_INTERFACE_MASK) != 0) {
-            addGeneratedTempFile(GETTER_FOR_INTERFACE_MASK);
-            addGeneratedTempFile(SETTER_FOR_INTERFACE_MASK);
+        if (javaFlagSet(BUILDER_INTERFACE_MASK)) {
+            addGeneratedTempFile(GETTER_FOR_INTERFACE_MASK |
+                                         SETTER_FOR_INTERFACE_MASK);
         }
-
         /*
          * Initialize getterImpl, setterImpl and attributes when generation file
          * type matches to builder class mask.
          */
-        if ((getGeneratedJavaFiles() & BUILDER_CLASS_MASK) != 0) {
-            addGeneratedTempFile(ATTRIBUTES_MASK);
-            addGeneratedTempFile(GETTER_FOR_CLASS_MASK);
-            addGeneratedTempFile(SETTER_FOR_CLASS_MASK);
+        if (javaFlagSet(BUILDER_CLASS_MASK)) {
+            addGeneratedTempFile(ATTRIBUTES_MASK | GETTER_FOR_CLASS_MASK |
+                                         SETTER_FOR_CLASS_MASK);
         }
-
         /*
          * Initialize getterImpl, attributes, constructor, hash code, equals and
          * to strings when generation file type matches to impl class mask.
          */
-        if ((getGeneratedJavaFiles() & DEFAULT_CLASS_MASK) != 0) {
-            addGeneratedTempFile(ATTRIBUTES_MASK);
-            addGeneratedTempFile(GETTER_FOR_CLASS_MASK);
-            addGeneratedTempFile(HASH_CODE_IMPL_MASK);
-            addGeneratedTempFile(EQUALS_IMPL_MASK);
-            addGeneratedTempFile(TO_STRING_IMPL_MASK);
-            addGeneratedTempFile(ADD_TO_LIST_IMPL_MASK);
-            addGeneratedTempFile(FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK);
-            addGeneratedTempFile(FILTER_CONTENT_MATCH_FOR_LEAF_MASK);
-            addGeneratedTempFile(FILTER_CONTENT_MATCH_FOR_NODES_MASK);
+        if (javaFlagSet(DEFAULT_CLASS_MASK)) {
+            addGeneratedTempFile(
+                    ATTRIBUTES_MASK | GETTER_FOR_CLASS_MASK |
+                            HASH_CODE_IMPL_MASK | EQUALS_IMPL_MASK |
+                            TO_STRING_IMPL_MASK | ADD_TO_LIST_IMPL_MASK |
+                            FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK |
+                            FILTER_CONTENT_MATCH_FOR_LEAF_MASK |
+                            FILTER_CONTENT_MATCH_FOR_NODES_MASK);
         }
-
         /*
          * Initialize temp files to generate type class.
          */
-        if ((getGeneratedJavaFiles() & GENERATE_TYPE_CLASS) != 0) {
-            addGeneratedTempFile(ATTRIBUTES_MASK);
-            addGeneratedTempFile(GETTER_FOR_CLASS_MASK);
-            addGeneratedTempFile(HASH_CODE_IMPL_MASK);
-            addGeneratedTempFile(EQUALS_IMPL_MASK);
-            addGeneratedTempFile(TO_STRING_IMPL_MASK);
-            addGeneratedTempFile(FROM_STRING_IMPL_MASK);
+        if (javaFlagSet(GENERATE_TYPE_CLASS)) {
+            addGeneratedTempFile(ATTRIBUTES_MASK | GETTER_FOR_CLASS_MASK |
+                                         HASH_CODE_IMPL_MASK | EQUALS_IMPL_MASK |
+                                         TO_STRING_IMPL_MASK |
+                                         FROM_STRING_IMPL_MASK);
         }
-
         //Initialize temp files to generate enum class.
-        if ((getGeneratedJavaFiles() & GENERATE_ENUM_CLASS) != 0) {
+        if (javaFlagSet(GENERATE_ENUM_CLASS)) {
             addGeneratedTempFile(FROM_STRING_IMPL_MASK);
         }
-
         //Set temporary file handles
-        if ((getGeneratedTempFiles() & ATTRIBUTES_MASK) != 0) {
-            setAttributesTempFileHandle(getTemporaryFileHandle(ATTRIBUTE_FILE_NAME));
+        if (tempFlagSet(ATTRIBUTES_MASK)) {
+            attributesTempFileHandle =
+                    getTemporaryFileHandle(ATTRIBUTE_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & GETTER_FOR_INTERFACE_MASK) != 0) {
-            setGetterInterfaceTempFileHandle(getTemporaryFileHandle(GETTER_METHOD_FILE_NAME));
+        if (tempFlagSet(GETTER_FOR_INTERFACE_MASK)) {
+            getterInterfaceTempFileHandle =
+                    getTemporaryFileHandle(GETTER_METHOD_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & SETTER_FOR_INTERFACE_MASK) != 0) {
-            setSetterInterfaceTempFileHandle(getTemporaryFileHandle(SETTER_METHOD_FILE_NAME));
+        if (tempFlagSet(SETTER_FOR_INTERFACE_MASK)) {
+            setterInterfaceTempFileHandle =
+                    getTemporaryFileHandle(SETTER_METHOD_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & GETTER_FOR_CLASS_MASK) != 0) {
-            setGetterImplTempFileHandle(getTemporaryFileHandle(GETTER_METHOD_IMPL_FILE_NAME));
+        if (tempFlagSet(GETTER_FOR_CLASS_MASK)) {
+            getterImplTempFileHandle =
+                    getTemporaryFileHandle(GETTER_METHOD_IMPL_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & SETTER_FOR_CLASS_MASK) != 0) {
-            setSetterImplTempFileHandle(getTemporaryFileHandle(SETTER_METHOD_IMPL_FILE_NAME));
+        if (tempFlagSet(SETTER_FOR_CLASS_MASK)) {
+            setterImplTempFileHandle =
+                    getTemporaryFileHandle(SETTER_METHOD_IMPL_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & HASH_CODE_IMPL_MASK) != 0) {
-            setHashCodeImplTempFileHandle(getTemporaryFileHandle(HASH_CODE_METHOD_FILE_NAME));
+        if (tempFlagSet(HASH_CODE_IMPL_MASK)) {
+            hashCodeImplTempFileHandle =
+                    getTemporaryFileHandle(HASH_CODE_METHOD_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & EQUALS_IMPL_MASK) != 0) {
-            setEqualsImplTempFileHandle(getTemporaryFileHandle(EQUALS_METHOD_FILE_NAME));
+        if (tempFlagSet(EQUALS_IMPL_MASK)) {
+            equalsImplTempFileHandle =
+                    getTemporaryFileHandle(EQUALS_METHOD_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & TO_STRING_IMPL_MASK) != 0) {
-            setToStringImplTempFileHandle(getTemporaryFileHandle(TO_STRING_METHOD_FILE_NAME));
+        if (tempFlagSet(TO_STRING_IMPL_MASK)) {
+            toStringImplTempFileHandle =
+                    getTemporaryFileHandle(TO_STRING_METHOD_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
-            setFromStringImplTempFileHandle(getTemporaryFileHandle(FROM_STRING_METHOD_FILE_NAME));
+        if (tempFlagSet(FROM_STRING_IMPL_MASK)) {
+            fromStringImplTempFileHandle =
+                    getTemporaryFileHandle(FROM_STRING_METHOD_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & ADD_TO_LIST_INTERFACE_MASK) != 0) {
-            setAddToListInterfaceTempFileHandle(getTemporaryFileHandle(ADD_TO_LIST_INTERFACE_METHOD_FILE_NAME));
+        if (tempFlagSet(ADD_TO_LIST_INTERFACE_MASK)) {
+            addToListInterfaceTempFileHandle =
+                    getTemporaryFileHandle(ADD_TO_LIST_INTERFACE_METHOD_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & ADD_TO_LIST_IMPL_MASK) != 0) {
-            setAddToListImplTempFileHandle(getTemporaryFileHandle(ADD_TO_LIST_IMPL_METHOD_FILE_NAME));
+        if (tempFlagSet(ADD_TO_LIST_IMPL_MASK)) {
+            addToListImplTempFileHandle =
+                    getTemporaryFileHandle(ADD_TO_LIST_IMPL_METHOD_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK) != 0) {
-            setLeafIdAttributeTempFileHandle(getTemporaryFileHandle(LEAF_IDENTIFIER_ATTRIBUTES_FILE_NAME));
+        if (tempFlagSet(LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK)) {
+            leafIdAttributeTempFileHandle =
+                    getTemporaryFileHandle(LEAF_IDENTIFIER_ATTRIBUTES_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & FILTER_CONTENT_MATCH_FOR_LEAF_MASK) != 0) {
-            setSubtreeFilteringForLeafTempFileHandle(getTemporaryFileHandle(FILTER_CONTENT_MATCH_LEAF_FILE_NAME));
+        if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_LEAF_MASK)) {
+            subtreeFilteringForLeafTempFileHandle =
+                    getTemporaryFileHandle(FILTER_CONTENT_MATCH_LEAF_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK) != 0) {
-            setGetSubtreeFilteringForListTempFileHandle(
-                    getTemporaryFileHandle(FILTER_CONTENT_MATCH_LEAF_LIST_FILE_NAME));
+        if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK)) {
+            getSubtreeFilteringForListTempFileHandle =
+                    getTemporaryFileHandle(FILTER_CONTENT_MATCH_LEAF_LIST_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & FILTER_CONTENT_MATCH_FOR_NODES_MASK) != 0) {
-            setGetSubtreeFilteringForChildNodeTempFileHandle(
-                    getTemporaryFileHandle(FILTER_CONTENT_MATCH_NODE_FILE_NAME));
+        if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_NODES_MASK)) {
+            getSubtreeFilteringForChildNodeTempFileHandle =
+                    getTemporaryFileHandle(FILTER_CONTENT_MATCH_NODE_FILE_NAME);
         }
-        if ((getGeneratedTempFiles() & EDIT_CONTENT_MASK) != 0) {
-            setEditContentTempFileHandle(getTemporaryFileHandle(EDIT_CONTENT_FILE_NAME));
+        if (tempFlagSet(EDIT_CONTENT_MASK)) {
+            editContentTempFileHandle =
+                    getTemporaryFileHandle(EDIT_CONTENT_FILE_NAME);
         }
     }
 
     /**
      * Adds current node info as and attribute to the parent generated file.
      *
-     * @param curNode      current node which needs to be added as an attribute in the parent generated code
-     * @param isList       is list construct
-     * @param pluginConfig plugin configurations
+     * @param curNode current node
+     * @param isList  is list construct
+     * @param config  plugin configurations
      * @throws IOException IO operation exception
      */
-    static void addCurNodeInfoInParentTempFile(YangNode curNode,
-                                               boolean isList, YangPluginConfig pluginConfig)
+    protected static void addCurNodeInfoInParentTempFile(YangNode curNode,
+                                                         boolean isList,
+                                                         YangPluginConfig config)
             throws IOException {
         YangNode parent = getParentNodeInGenCode(curNode);
         if (!(parent instanceof JavaCodeGenerator)) {
-            throw new TranslatorException("missing parent node to contain current node info in generated file "
-                                                  + parent.getName() + " in " + parent.getLineNumber() + " at " +
-                                                  parent.getCharPosition()
-                                                  + " in " + parent.getFileName());
+            throw new TranslatorException(getErrorMsg(MISSING_PARENT_NODE,
+                                                      curNode));
         }
-
         if (parent instanceof YangJavaGroupingTranslator) {
             /*
              * In case of grouping, there is no need to add the information, it
-             * will be taken care in uses
+             * will be taken care in uses.
              */
             return;
         }
+        TempJavaBeanFragmentFiles tempFiles =
+                getBeanFiles((JavaCodeGeneratorInfo) parent);
 
-        TempJavaBeanFragmentFiles tempJavaBeanFragmentFiles = ((JavaCodeGeneratorInfo) parent)
-                .getTempJavaCodeFragmentFiles().getBeanTempFiles();
-
-        JavaAttributeInfo javaAttributeInfo = getCurNodeAsAttributeInTarget(curNode,
-                                                                            parent, isList, tempJavaBeanFragmentFiles);
-        tempJavaBeanFragmentFiles.addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo, pluginConfig);
+        JavaAttributeInfo attr =
+                getCurNodeAsAttributeInTarget(curNode, parent, isList,
+                                              tempFiles);
+        tempFiles.addJavaSnippetInfoToApplicableTempFiles(attr, config);
     }
 
     /**
-     * Creates an attribute info object corresponding to a data model node and return it.
+     * Creates an attribute info object corresponding to a data model node
+     * and return it.
      *
-     * @param curNode               current data model node for which the java code generation is being handled
-     * @param targetNode            target node in which the current node is an attribute
-     * @param isListNode            is the current added attribute needs to be a list
-     * @param tempJavaFragmentFiles temp java fragment files
-     * @return AttributeInfo attribute details required to add in temporary files
+     * @param curNode    current node
+     * @param targetNode target node
+     * @param listNode   flag indicating if a node is a list node
+     * @param tempFiles  temp java fragment files
+     * @return java attribute info
      */
-    public static JavaAttributeInfo getCurNodeAsAttributeInTarget(YangNode curNode,
-                                                                  YangNode targetNode, boolean isListNode,
-                                                                  TempJavaFragmentFiles tempJavaFragmentFiles) {
-        String curNodeName = ((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName();
+    public static JavaAttributeInfo
+    getCurNodeAsAttributeInTarget(YangNode curNode, YangNode targetNode,
+                                  boolean listNode,
+                                  TempJavaFragmentFiles tempFiles) {
+        JavaFileInfoTranslator translator =
+                ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+        String curNodeName = translator.getJavaName();
         if (curNodeName == null) {
             updateJavaFileInfo(curNode, null);
-            curNodeName = ((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName();
+            curNodeName = translator.getJavaName();
         }
-
         /*
          * Get the import info corresponding to the attribute for import in
-         * generated java files or qualified access
+         * generated java files or qualified access.
          */
-        JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
-                                                                                          getCapitalCase(curNodeName));
+        JavaQualifiedTypeInfoTranslator typeInfo =
+                getQualifiedTypeInfoOfCurNode(curNode,
+                                              getCapitalCase(curNodeName));
         if (!(targetNode instanceof TempJavaCodeFragmentFilesContainer)) {
-            throw new TranslatorException("Parent node does not have file info "
-                                                  + targetNode.getName() + " in " + targetNode.getLineNumber() +
-                                                  " at " + targetNode.getCharPosition()
-                                                  + " in " + targetNode.getFileName());
+            throw new TranslatorException(getErrorMsg(INVALID_PARENT_NODE,
+                                                      curNode));
         }
-        JavaImportData parentImportData = tempJavaFragmentFiles.getJavaImportData();
-        JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) targetNode).getJavaFileInfo();
+        JavaImportData parentImportData = tempFiles.getJavaImportData();
+        JavaFileInfoTranslator fileInfo =
+                ((JavaFileInfoContainer) targetNode).getJavaFileInfo();
 
-        boolean isQualified;
-        if ((tempJavaFragmentFiles instanceof TempJavaServiceFragmentFiles)
-                && (qualifiedTypeInfo.getClassInfo().contentEquals(SERVICE))
-                || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(fileInfo.getJavaName() + SERVICE))) {
-
-            isQualified = true;
+        boolean qualified;
+        if ((tempFiles instanceof TempJavaServiceFragmentFiles) &&
+                (typeInfo.getClassInfo().contentEquals(SERVICE)) ||
+                typeInfo.getClassInfo()
+                        .contentEquals(getCapitalCase(fileInfo.getJavaName() +
+                                                              SERVICE))) {
+            qualified = true;
         } else {
             String className;
-            if (tempJavaFragmentFiles instanceof TempJavaServiceFragmentFiles) {
+            if (tempFiles instanceof TempJavaServiceFragmentFiles) {
                 className = getCapitalCase(fileInfo.getJavaName()) + SERVICE;
             } else {
                 className = getCapitalCase(fileInfo.getJavaName());
             }
-
-            isQualified = parentImportData.addImportInfo(qualifiedTypeInfo,
-                                                         className, fileInfo.getPackage());
+            qualified = parentImportData.addImportInfo(typeInfo, className,
+                                                       fileInfo.getPackage());
         }
-        boolean collectionSetFlag = false;
+        boolean collectionSet = false;
         if (curNode instanceof YangList) {
             YangList yangList = (YangList) curNode;
-            if (yangList.getCompilerAnnotation() != null && yangList.getCompilerAnnotation()
-                    .getYangAppDataStructure() != null) {
-                switch (yangList.getCompilerAnnotation().getYangAppDataStructure().getDataStructure()) {
+            if (yangList.getCompilerAnnotation() != null &&
+                    yangList.getCompilerAnnotation()
+                            .getYangAppDataStructure() != null) {
+                switch (yangList.getCompilerAnnotation()
+                        .getYangAppDataStructure().getDataStructure()) {
                     case QUEUE: {
                         parentImportData.setQueueToImport(true);
-                        collectionSetFlag = true;
+                        collectionSet = true;
                         break;
                     }
                     case SET: {
                         parentImportData.setSetToImport(true);
-                        collectionSetFlag = true;
+                        collectionSet = true;
                         break;
                     }
                     default: {
@@ -619,84 +645,81 @@
                 }
             }
         }
-        if (isListNode && !(collectionSetFlag)) {
+        if (listNode && !(collectionSet)) {
             parentImportData.setIfListImported(true);
         }
         if (curNode instanceof YangList) {
-            return getAttributeInfoForTheData(qualifiedTypeInfo, curNodeName, null, isQualified, isListNode,
-                                              ((YangList) curNode).getCompilerAnnotation());
+            return getAttributeInfoForTheData(typeInfo, curNodeName,
+                                              null, qualified, listNode,
+                                              ((YangList) curNode)
+                                                      .getCompilerAnnotation());
         }
-        return getAttributeInfoForTheData(qualifiedTypeInfo, curNodeName, null, isQualified, isListNode);
+        return getAttributeInfoForTheData(typeInfo, curNodeName, null,
+                                          qualified, listNode);
     }
 
     /**
      * Returns java attribute for leaf.
      *
-     * @param tempJavaFragmentFiles temporary generated file
-     * @param leaf                  YANG leaf
-     * @param yangPluginConfig      plugin configurations
-     * @return java attribute for leaf
+     * @param tempFiles temporary generated file
+     * @param container JAVA leaf info container
+     * @param config    plugin configurations
+     * @param leafList  flag indicating if it's leaf list
+     * @return java attribute info
      */
-    private static JavaAttributeInfo getJavaAttributeOfLeaf(TempJavaFragmentFiles tempJavaFragmentFiles, YangLeaf leaf,
-                                                            YangPluginConfig yangPluginConfig) {
-        JavaLeafInfoContainer javaLeaf = (JavaLeafInfoContainer) leaf;
-        javaLeaf.setConflictResolveConfig(yangPluginConfig.getConflictResolver());
-        javaLeaf.updateJavaQualifiedInfo();
-        return getAttributeInfoForTheData(
-                javaLeaf.getJavaQualifiedInfo(),
-                javaLeaf.getJavaName(yangPluginConfig.getConflictResolver()),
-                javaLeaf.getDataType(),
-                tempJavaFragmentFiles.getIsQualifiedAccessOrAddToImportList(javaLeaf.getJavaQualifiedInfo()),
-                false);
+    private static JavaAttributeInfo
+    getJavaAttributeOfLeaf(TempJavaFragmentFiles tempFiles,
+                           JavaLeafInfoContainer container,
+                           YangPluginConfig config, boolean leafList) {
+        if (leafList) {
+            tempFiles.getJavaImportData().setIfListImported(true);
+            return getAttributeOfLeafInfoContainer(tempFiles, container, config,
+                                                   true);
+        }
+        return getAttributeOfLeafInfoContainer(tempFiles, container, config,
+                                               false);
     }
 
     /**
-     * Returns java attribute for leaf-list.
+     * Returns java attribute for leaf container.
      *
-     * @param tempJavaFragmentFiles temporary generated file
-     * @param leafList              YANG leaf-list
-     * @param yangPluginConfig      plugin configurations
-     * @return java attribute for leaf-list
+     * @param tempFiles     temporary generated file
+     * @param container     JAVA leaf info container
+     * @param config        plugin configurations
+     * @param listAttribute flag indicating if list attribute
+     * @return JAVA attribute information
      */
-    private static JavaAttributeInfo getJavaAttributeOfLeafList(TempJavaFragmentFiles tempJavaFragmentFiles,
-                                                                YangLeafList leafList,
-                                                                YangPluginConfig yangPluginConfig) {
-        JavaLeafInfoContainer javaLeaf = (JavaLeafInfoContainer) leafList;
-        javaLeaf.setConflictResolveConfig(yangPluginConfig.getConflictResolver());
-        javaLeaf.updateJavaQualifiedInfo();
-        tempJavaFragmentFiles.getJavaImportData().setIfListImported(true);
+    private static JavaAttributeInfo
+    getAttributeOfLeafInfoContainer(TempJavaFragmentFiles tempFiles,
+                                    JavaLeafInfoContainer container,
+                                    YangPluginConfig config,
+                                    boolean listAttribute) {
+        container.setConflictResolveConfig(config.getConflictResolver());
+        container.updateJavaQualifiedInfo();
         return getAttributeInfoForTheData(
-                javaLeaf.getJavaQualifiedInfo(),
-                javaLeaf.getJavaName(yangPluginConfig.getConflictResolver()),
-                javaLeaf.getDataType(),
-                tempJavaFragmentFiles.getIsQualifiedAccessOrAddToImportList(javaLeaf.getJavaQualifiedInfo()),
-                true);
-    }
-
-    /*
-     * Retrieves the absolute path where the file needs to be generated.
-     *
-     * @return absolute path where the file needs to be generated
-     */
-    private String getAbsoluteDirPath() {
-        return absoluteDirPath;
+                container.getJavaQualifiedInfo(),
+                container.getJavaName(config.getConflictResolver()),
+                container.getDataType(),
+                tempFiles.getIsQualifiedAccessOrAddToImportList(
+                        container.getJavaQualifiedInfo()), listAttribute);
     }
 
     /**
      * Sets absolute path where the file needs to be generated.
      *
-     * @param absoluteDirPath absolute path where the file needs to be generated.
+     * @param absoluteDirPath absolute path where the file needs to be
+     *                        generated
      */
-    void setAbsoluteDirPath(String absoluteDirPath) {
+    protected void setAbsoluteDirPath(String absoluteDirPath) {
         this.absoluteDirPath = absoluteDirPath;
     }
 
     /**
-     * Retrieves the generated java file information.
+     * Returns the generated java file information.
      *
      * @return generated java file information
      */
-    public JavaFileInfoTranslator getJavaFileInfo() {
+    protected JavaFileInfoTranslator getJavaFileInfo() {
         return javaFileInfo;
     }
 
@@ -705,45 +728,35 @@
      *
      * @param javaFileInfo generated java file information
      */
-    public void setJavaFileInfo(JavaFileInfoTranslator javaFileInfo) {
+    protected void setJavaFileInfo(JavaFileInfoTranslator javaFileInfo) {
         this.javaFileInfo = javaFileInfo;
     }
 
     /**
-     * Retrieves the generated temp files.
+     * Returns the flag-set for generated temp files.
      *
-     * @return generated temp files
+     * @return flag-set
      */
-    int getGeneratedTempFiles() {
-        return generatedTempFiles;
+    protected int getGeneratedTempFiles() {
+        return tempFilesFlagSet;
     }
 
     /**
-     * Sets generated file files.
+     * Adds to the flag-set for generated temp files.
      *
-     * @param fileType generated file type
+     * @param flags generated temp files flag-set
      */
-    private void setGeneratedTempFiles(int fileType) {
-        generatedTempFiles = fileType;
+    protected void addGeneratedTempFile(int flags) {
+        tempFilesFlagSet |= flags;
     }
 
     /**
-     * Adds to generated temporary files.
-     *
-     * @param generatedTempFile generated file
-     */
-    void addGeneratedTempFile(int generatedTempFile) {
-        generatedTempFiles |= generatedTempFile;
-        setGeneratedTempFiles(generatedTempFiles);
-    }
-
-    /**
-     * Retrieves the generated Java files.
+     * Returns the generated Java files.
      *
      * @return generated Java files
      */
-    int getGeneratedJavaFiles() {
-        return getJavaFileInfo().getGeneratedFileTypes();
+    protected int getGeneratedJavaFiles() {
+        return javaFileInfo.getGeneratedFileTypes();
     }
 
     /**
@@ -751,8 +764,8 @@
      *
      * @return mapped Java class name
      */
-    String getGeneratedJavaClassName() {
-        return getCapitalCase(getJavaFileInfo().getJavaName());
+    protected String getGeneratedJavaClassName() {
+        return getCapitalCase(javaFileInfo.getJavaName());
     }
 
     /**
@@ -767,10 +780,10 @@
     /**
      * Sets import data for the generated Java file.
      *
-     * @param javaImportData import data for the generated Java file
+     * @param data import data for the generated Java file
      */
-    void setJavaImportData(JavaImportData javaImportData) {
-        this.javaImportData = javaImportData;
+    protected void setJavaImportData(JavaImportData data) {
+        javaImportData = data;
     }
 
     /**
@@ -778,20 +791,11 @@
      *
      * @return status of any attributes added
      */
-    boolean isAttributePresent() {
+    protected boolean isAttributePresent() {
         return isAttributePresent;
     }
 
     /**
-     * Sets status of any attributes added.
-     *
-     * @param attributePresent status of any attributes added
-     */
-    private void setAttributePresent(boolean attributePresent) {
-        isAttributePresent = attributePresent;
-    }
-
-    /**
      * Returns getter methods's temporary file handle.
      *
      * @return temporary file handle
@@ -801,15 +805,6 @@
     }
 
     /**
-     * Sets to getter method's temporary file handle.
-     *
-     * @param getterForInterface file handle for to getter method
-     */
-    private void setGetterInterfaceTempFileHandle(File getterForInterface) {
-        getterInterfaceTempFileHandle = getterForInterface;
-    }
-
-    /**
      * Returns setter method's temporary file handle.
      *
      * @return temporary file handle
@@ -819,15 +814,6 @@
     }
 
     /**
-     * Sets to setter method's temporary file handle.
-     *
-     * @param setterForInterface file handle for to setter method
-     */
-    private void setSetterInterfaceTempFileHandle(File setterForInterface) {
-        setterInterfaceTempFileHandle = setterForInterface;
-    }
-
-    /**
      * Returns setter method's impl's temporary file handle.
      *
      * @return temporary file handle
@@ -837,15 +823,6 @@
     }
 
     /**
-     * Sets to setter method's impl's temporary file handle.
-     *
-     * @param setterImpl file handle for to setter method's implementation class
-     */
-    private void setSetterImplTempFileHandle(File setterImpl) {
-        setterImplTempFileHandle = setterImpl;
-    }
-
-    /**
      * Returns from string method's temporary file handle.
      *
      * @return from string method's temporary file handle
@@ -855,87 +832,6 @@
     }
 
     /**
-     * Sets from string method's temporary file handle.
-     *
-     * @param fromStringImplTempFileHandle from string method's temporary file handle
-     */
-    private void setFromStringImplTempFileHandle(File fromStringImplTempFileHandle) {
-        this.fromStringImplTempFileHandle = fromStringImplTempFileHandle;
-    }
-
-    /**
-     * Returns java file handle for interface file.
-     *
-     * @return java file handle for interface file
-     */
-    private File getInterfaceJavaFileHandle() {
-        return interfaceJavaFileHandle;
-    }
-
-    /**
-     * Sets the java file handle for interface file.
-     *
-     * @param interfaceJavaFileHandle java file handle
-     */
-    private void setInterfaceJavaFileHandle(File interfaceJavaFileHandle) {
-        this.interfaceJavaFileHandle = interfaceJavaFileHandle;
-    }
-
-    /**
-     * Returns java file handle for builder interface file.
-     *
-     * @return java file handle for builder interface file
-     */
-    private File getBuilderInterfaceJavaFileHandle() {
-        return builderInterfaceJavaFileHandle;
-    }
-
-    /**
-     * Sets the java file handle for builder interface file.
-     *
-     * @param builderInterfaceJavaFileHandle java file handle
-     */
-    private void setBuilderInterfaceJavaFileHandle(File builderInterfaceJavaFileHandle) {
-        this.builderInterfaceJavaFileHandle = builderInterfaceJavaFileHandle;
-    }
-
-    /**
-     * Returns java file handle for builder class file.
-     *
-     * @return java file handle for builder class file
-     */
-    private File getBuilderClassJavaFileHandle() {
-        return builderClassJavaFileHandle;
-    }
-
-    /**
-     * Sets the java file handle for builder class file.
-     *
-     * @param builderClassJavaFileHandle java file handle
-     */
-    private void setBuilderClassJavaFileHandle(File builderClassJavaFileHandle) {
-        this.builderClassJavaFileHandle = builderClassJavaFileHandle;
-    }
-
-    /**
-     * Returns java file handle for impl class file.
-     *
-     * @return java file handle for impl class file
-     */
-    private File getImplClassJavaFileHandle() {
-        return implClassJavaFileHandle;
-    }
-
-    /**
-     * Sets the java file handle for impl class file.
-     *
-     * @param implClassJavaFileHandle java file handle
-     */
-    private void setImplClassJavaFileHandle(File implClassJavaFileHandle) {
-        this.implClassJavaFileHandle = implClassJavaFileHandle;
-    }
-
-    /**
      * Returns attribute's temporary file handle.
      *
      * @return temporary file handle
@@ -945,15 +841,6 @@
     }
 
     /**
-     * Sets attribute's temporary file handle.
-     *
-     * @param attributeForClass file handle for attribute
-     */
-    private void setAttributesTempFileHandle(File attributeForClass) {
-        attributesTempFileHandle = attributeForClass;
-    }
-
-    /**
      * Returns getter method's impl's temporary file handle.
      *
      * @return temporary file handle
@@ -963,15 +850,6 @@
     }
 
     /**
-     * Sets to getter method's impl's temporary file handle.
-     *
-     * @param getterImpl file handle for to getter method's impl
-     */
-    private void setGetterImplTempFileHandle(File getterImpl) {
-        getterImplTempFileHandle = getterImpl;
-    }
-
-    /**
      * Returns hash code method's temporary file handle.
      *
      * @return temporary file handle
@@ -981,15 +859,6 @@
     }
 
     /**
-     * Sets hash code method's temporary file handle.
-     *
-     * @param hashCodeMethod file handle for hash code method
-     */
-    private void setHashCodeImplTempFileHandle(File hashCodeMethod) {
-        hashCodeImplTempFileHandle = hashCodeMethod;
-    }
-
-    /**
      * Returns equals method's temporary file handle.
      *
      * @return temporary file handle
@@ -999,15 +868,6 @@
     }
 
     /**
-     * Sets equals method's temporary file handle.
-     *
-     * @param equalsMethod file handle for to equals method
-     */
-    private void setEqualsImplTempFileHandle(File equalsMethod) {
-        equalsImplTempFileHandle = equalsMethod;
-    }
-
-    /**
      * Returns to string method's temporary file handle.
      *
      * @return temporary file handle
@@ -1017,15 +877,6 @@
     }
 
     /**
-     * Sets to string method's temporary file handle.
-     *
-     * @param toStringMethod file handle for to string method
-     */
-    private void setToStringImplTempFileHandle(File toStringMethod) {
-        toStringImplTempFileHandle = toStringMethod;
-    }
-
-    /**
      * Returns java extends list holder.
      *
      * @return java extends list holder
@@ -1037,10 +888,11 @@
     /**
      * Sets java extends list holder.
      *
-     * @param javaExtendsListHolder java extends list holder
+     * @param holder java extends list holder
      */
-    void setJavaExtendsListHolder(JavaExtendsListHolder javaExtendsListHolder) {
-        this.javaExtendsListHolder = javaExtendsListHolder;
+    protected void setJavaExtendsListHolder(JavaExtendsListHolder
+                                                    holder) {
+        javaExtendsListHolder = holder;
     }
 
     /**
@@ -1051,8 +903,9 @@
      */
     private void addSubTreeFilteringForLeaf(JavaAttributeInfo attr)
             throws IOException {
-        appendToFile(getSubtreeFilteringForLeafTempFileHandle(),
-                     getSubtreeFilteringForLeaf(attr, attr.getAttributeType()) + NEW_LINE);
+        appendToFile(subtreeFilteringForLeafTempFileHandle,
+                     getSubtreeFilteringForLeaf(attr, attr.getAttributeType()) +
+                             NEW_LINE);
     }
 
     /**
@@ -1063,7 +916,7 @@
      */
     private void addSubtreeFilteringForLeafList(JavaAttributeInfo attr)
             throws IOException {
-        appendToFile(getGetSubtreeFilteringForListTempFileHandle(),
+        appendToFile(getSubtreeFilteringForListTempFileHandle,
                      getSubtreeFilteringForLeafList(attr) + NEW_LINE);
     }
 
@@ -1075,48 +928,53 @@
      */
     private void addSubtreeFilteringForChildNode(JavaAttributeInfo attr)
             throws IOException {
-        appendToFile(getGetSubtreeFilteringForChildNodeTempFileHandle(),
+        appendToFile(getSubtreeFilteringForChildNodeTempFileHandle,
                      getSubtreeFilteringForNode(attr) + NEW_LINE);
     }
 
     /**
      * Adds attribute for class.
      *
-     * @param attr             attribute info
-     * @param yangPluginConfig plugin configurations
+     * @param attr   attribute info
+     * @param config plugin configurations
      * @throws IOException when fails to append to temporary file
      */
-    private void addAttribute(JavaAttributeInfo attr, YangPluginConfig yangPluginConfig)
+    private void addAttribute(JavaAttributeInfo attr,
+                              YangPluginConfig config)
             throws IOException {
-        appendToFile(getAttributesTempFileHandle(), parseAttribute(attr, yangPluginConfig)
-                + FOUR_SPACE_INDENTATION);
+        appendToFile(attributesTempFileHandle, parseAttribute(attr, config) +
+                FOUR_SPACE_INDENTATION);
     }
 
     /**
      * Adds getter for interface.
      *
-     * @param attr         attribute info
-     * @param pluginConfig plugin configurations
+     * @param attr   attribute info
+     * @param config plugin configurations
      * @throws IOException when fails to append to temporary file
      */
-    private void addGetterForInterface(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
+    private void addGetterForInterface(JavaAttributeInfo attr,
+                                       YangPluginConfig config)
             throws IOException {
-        appendToFile(getGetterInterfaceTempFileHandle(),
-                     getGetterString(attr, getGeneratedJavaFiles(), pluginConfig) + NEW_LINE);
+        appendToFile(getterInterfaceTempFileHandle,
+                     getGetterString(attr, getGeneratedJavaFiles(), config) +
+                             NEW_LINE);
     }
 
     /**
      * Adds setter for interface.
      *
-     * @param attr         attribute info
-     * @param pluginConfig plugin configurations
+     * @param attr   attribute info
+     * @param config plugin configurations
      * @throws IOException when fails to append to temporary file
      */
-    private void addSetterForInterface(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
+    private void addSetterForInterface(JavaAttributeInfo attr,
+                                       YangPluginConfig config)
             throws IOException {
-        appendToFile(getSetterInterfaceTempFileHandle(),
-                     getSetterString(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles(), pluginConfig)
-                             + NEW_LINE);
+        appendToFile(setterInterfaceTempFileHandle,
+                     getSetterString(attr, getGeneratedJavaClassName(),
+                                     getGeneratedJavaFiles(), config) +
+                             NEW_LINE);
     }
 
     /**
@@ -1125,62 +983,68 @@
      * @param attr attribute info
      * @throws IOException when fails to append to temporary file
      */
-    private void addSetterImpl(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
+    private void addSetterImpl(JavaAttributeInfo attr,
+                               YangPluginConfig config)
             throws IOException {
-        if (isRooNode()) {
-            appendToFile(getSetterImplTempFileHandle(), getJavaDoc(SETTER_METHOD, attr.getAttributeName(),
-                                                                   attr.isListAttr(), pluginConfig, null) +
-                    getSetterForClass(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles())
-                    + NEW_LINE);
+        String setter =
+                getSetterForClass(attr, getGeneratedJavaClassName(),
+                                  getGeneratedJavaFiles()) + NEW_LINE;
+        if (rootNode) {
+            appendToFile(setterImplTempFileHandle,
+                         getJavaDoc(SETTER_METHOD, attr.getAttributeName(),
+                                    attr.isListAttr(), config, null) + setter);
         } else {
-            appendToFile(getSetterImplTempFileHandle(), getOverRideString() +
-                    getSetterForClass(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles())
-                    + NEW_LINE);
+            appendToFile(setterImplTempFileHandle, getOverRideString() + setter);
         }
     }
 
     /**
      * Adds getter method's impl for class.
      *
-     * @param attr         attribute info
-     * @param pluginConfig plugin configurations
+     * @param attr   attribute info
+     * @param config plugin configurations
      * @throws IOException when fails to append to temporary file
      */
-    void addGetterImpl(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
+    protected void addGetterImpl(JavaAttributeInfo attr,
+                                 YangPluginConfig config)
             throws IOException {
-        if ((getGeneratedJavaFiles() & BUILDER_CLASS_MASK) != 0
-                || (getGeneratedJavaFiles() & GENERATE_SERVICE_AND_MANAGER) != 0) {
-            if (!isRooNode()) {
-                appendToFile(getGetterImplTempFileHandle(), getOverRideString() +
-                        getGetterForClass(attr, getGeneratedJavaFiles()) +
-                        NEW_LINE);
+        String getter =
+                getGetterForClass(attr, getGeneratedJavaFiles()) + NEW_LINE;
+        if (javaFlagSet(BUILDER_CLASS_MASK | GENERATE_SERVICE_AND_MANAGER)) {
+            if (!rootNode) {
+                appendToFile(getterImplTempFileHandle, getOverRideString() +
+                        getter);
             } else {
-                appendToFile(getGetterImplTempFileHandle(), getGetterForClass(attr,
-                                                                              getGeneratedJavaFiles()) + NEW_LINE);
+                appendToFile(getterImplTempFileHandle, getter);
             }
         } else {
             String appDataStructure = null;
             if (attr.getCompilerAnnotation() != null) {
-                appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
+                appDataStructure = attr.getCompilerAnnotation()
+                        .getYangAppDataStructure().getDataStructure().name();
             }
-            appendToFile(getGetterImplTempFileHandle(),
-                         getJavaDoc(GETTER_METHOD, getCapitalCase(attr.getAttributeName()), false, pluginConfig,
-                                    appDataStructure) + getGetterForClass(attr, getGeneratedJavaFiles()) + NEW_LINE);
+            appendToFile(getterImplTempFileHandle,
+                         getJavaDoc(GETTER_METHOD,
+                                    getCapitalCase(attr.getAttributeName()),
+                                    false, config, appDataStructure) + getter);
         }
     }
 
     /**
      * Adds add to list interface method.
      *
-     * @param attr         attribute
-     * @param pluginConfig plugin configurations
+     * @param attr   attribute
+     * @param config plugin configurations
      * @throws IOException when fails to do IO operations
      */
-    private void addAddToListInterface(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
+    private void addAddToListInterface(JavaAttributeInfo attr,
+                                       YangPluginConfig config)
             throws IOException {
-        appendToFile(getAddToListInterfaceTempFileHandle(),
-                     getJavaDoc(ADD_TO_LIST, getCapitalCase(attr.getAttributeName()), false, pluginConfig, null)
-                             + getAddToListMethodInterface(attr, getGeneratedJavaClassName()) + NEW_LINE);
+        appendToFile(addToListInterfaceTempFileHandle,
+                     getJavaDoc(ADD_TO_LIST,
+                                getCapitalCase(attr.getAttributeName()), false,
+                                config, null) + getAddToListMethodInterface(
+                             attr, getGeneratedJavaClassName()) + NEW_LINE);
     }
 
     /**
@@ -1191,35 +1055,35 @@
      */
     private void addAddToListImpl(JavaAttributeInfo attr)
             throws IOException {
-        appendToFile(getAddToListImplTempFileHandle(),
-                     getAddToListMethodImpl(attr, getGeneratedJavaClassName(), isRooNode()) + NEW_LINE);
+        appendToFile(addToListImplTempFileHandle,
+                     getAddToListMethodImpl(attr, getGeneratedJavaClassName(),
+                                            rootNode) + NEW_LINE);
     }
 
     /**
      * Adds leaf identifier enum attributes.
      *
-     * @param attr             attribute
-     * @param value            value
-     * @param yangPluginConfig plugin config
+     * @param attr  attribute
+     * @param value value
      * @throws IOException when fails to do IO operations
      */
-    private void addLeafIdAttributes(JavaAttributeInfo attr, int value, YangPluginConfig yangPluginConfig)
+    private void addLeafIdAttributes(JavaAttributeInfo attr, int value)
             throws IOException {
-        appendToFile(getLeafIdAttributeTempFileHandle(),
-                     FOUR_SPACE_INDENTATION + generateEnumAttributeString(attr.getAttributeName(),
-                                                                          value));
+        appendToFile(leafIdAttributeTempFileHandle, FOUR_SPACE_INDENTATION +
+                generateEnumAttributeString(attr.getAttributeName(), value));
     }
 
     /**
      * Adds build method for interface.
      *
-     * @param pluginConfig plugin configurations
+     * @param config plugin configurations
      * @return build method for interface
      * @throws IOException when fails to append to temporary file
      */
-    String addBuildMethodForInterface(YangPluginConfig pluginConfig)
+    protected String addBuildMethodForInterface(YangPluginConfig config)
             throws IOException {
-        return parseBuilderInterfaceBuildMethodString(getGeneratedJavaClassName(), pluginConfig);
+        return parseBuilderInterfaceBuildMethodString(getGeneratedJavaClassName(),
+                                                      config);
     }
 
     /**
@@ -1228,43 +1092,46 @@
      * @return build method implementation for class
      * @throws IOException when fails to append to temporary file
      */
-    String addBuildMethodImpl()
+    protected String addBuildMethodImpl()
             throws IOException {
-        return getBuildString(getGeneratedJavaClassName(), isRooNode()) + NEW_LINE;
+        return getBuildString(getGeneratedJavaClassName(), rootNode) + NEW_LINE;
     }
 
     /**
      * Adds default constructor for class.
      *
-     * @param modifier     modifier for constructor.
-     * @param toAppend     string which need to be appended with the class name
-     * @param pluginConfig plugin configurations
-     * @param isSuffix     is value need to be appended as suffix
+     * @param modifier modifier for constructor
+     * @param toAppend string which need to be appended with the class name
+     * @param config   plugin configurations
+     * @param suffix   is value need to be appended as suffix
      * @return default constructor for class
      * @throws IOException when fails to append to file
      */
-    String addDefaultConstructor(String modifier, String toAppend, YangPluginConfig pluginConfig, boolean isSuffix)
+    protected String addDefaultConstructor(String modifier, String toAppend,
+                                           YangPluginConfig config,
+                                           boolean suffix)
             throws IOException {
-        String name = getGeneratedJavaClassName();
-        if (isRooNode() && !toAppend.equals(BUILDER)) {
-            name = name + OP_PARAM;
-            return NEW_LINE
-                    + getDefaultConstructorString(name, modifier,
-                                                  pluginConfig);
+        StringBuilder name = new StringBuilder();
+        name.append(getGeneratedJavaClassName());
+        String constructor = NEW_LINE +
+                getDefaultConstructorString(name.toString(), modifier, config);
+        if (rootNode && !toAppend.equals(BUILDER)) {
+            name.append(OP_PARAM);
+            return constructor;
         }
-        if (isSuffix) {
-            return NEW_LINE +
-                    getDefaultConstructorString(name + toAppend, modifier, pluginConfig);
+        if (suffix) {
+            name.append(toAppend);
+            return constructor;
         }
-        String appended;
+        StringBuilder appended = new StringBuilder();
         if (toAppend.equals(DEFAULT)) {
-            appended = getCapitalCase(toAppend);
+            appended.append(getCapitalCase(toAppend));
         } else {
-            appended = toAppend;
+            appended.append(toAppend);
         }
-        return NEW_LINE
-                + getDefaultConstructorString(appended + name, modifier,
-                                              pluginConfig);
+        return NEW_LINE + getDefaultConstructorString(appended.append(
+                name.toString()).toString(), modifier, config);
+        // TODO getDefaultConstructorString to handle new line.
     }
 
     /**
@@ -1275,7 +1142,8 @@
      */
     private void addHashCodeMethod(JavaAttributeInfo attr)
             throws IOException {
-        appendToFile(getHashCodeImplTempFileHandle(), getHashCodeMethod(attr) + NEW_LINE);
+        appendToFile(hashCodeImplTempFileHandle,
+                     getHashCodeMethod(attr) + NEW_LINE);
     }
 
     /**
@@ -1286,7 +1154,8 @@
      */
     private void addEqualsMethod(JavaAttributeInfo attr)
             throws IOException {
-        appendToFile(getEqualsImplTempFileHandle(), getEqualsMethod(attr) + NEW_LINE);
+        appendToFile(equalsImplTempFileHandle,
+                     getEqualsMethod(attr) + NEW_LINE);
     }
 
     /**
@@ -1297,21 +1166,22 @@
      */
     private void addToStringMethod(JavaAttributeInfo attr)
             throws IOException {
-        appendToFile(getToStringImplTempFileHandle(), getToStringMethod(attr) + NEW_LINE);
+        appendToFile(toStringImplTempFileHandle,
+                     getToStringMethod(attr) + NEW_LINE);
     }
 
     /**
      * Adds from string method for union class.
      *
-     * @param javaAttributeInfo       type attribute info
-     * @param fromStringAttributeInfo from string attribute info
+     * @param attr           type attribute info
+     * @param fromStringAttr from string attribute info
      * @throws IOException when fails to append to temporary file
      */
-    void addFromStringMethod(JavaAttributeInfo javaAttributeInfo,
-                             JavaAttributeInfo fromStringAttributeInfo)
+    void addFromStringMethod(JavaAttributeInfo attr,
+                             JavaAttributeInfo fromStringAttr)
             throws IOException {
-        appendToFile(getFromStringImplTempFileHandle(), getFromStringMethod(javaAttributeInfo,
-                                                                            fromStringAttributeInfo) + NEW_LINE);
+        appendToFile(fromStringImplTempFileHandle,
+                     getFromStringMethod(attr, fromStringAttr) + NEW_LINE);
     }
 
     /**
@@ -1321,26 +1191,29 @@
      * @return temporary file handle
      * @throws IOException when fails to create new file handle
      */
-    File getTemporaryFileHandle(String fileName)
+    protected File getTemporaryFileHandle(String fileName)
             throws IOException {
-        String path = getTempDirPath(getAbsoluteDirPath());
+        String path = getTempDirPath(absoluteDirPath);
         File dir = new File(path);
         boolean isCreated;
         if (!dir.exists()) {
             isCreated = dir.mkdirs();
             if (!isCreated) {
-                throw new IOException("failed to create temporary directory for " + fileName);
+                throw new IOException("failed to create temporary directory " +
+                                              "for " + fileName);
             }
         }
         File file = new File(path + fileName + TEMP_FILE_EXTENSION);
         if (!file.exists()) {
             isCreated = file.createNewFile();
             if (!isCreated) {
-                throw new IOException("failed to create temporary file for " + fileName);
+                throw new IOException("failed to create temporary file for " +
+                                              fileName);
             }
         } else {
-            throw new IOException(fileName + " is reused due to YANG naming. probably your previous build would have " +
-                                          "failed");
+            throw new IOException(fileName + " is reused due to YANG naming. " +
+                                          "probably your previous build " +
+                                          "would have failed");
         }
         return file;
     }
@@ -1352,9 +1225,10 @@
      * @return temporary file handle
      * @throws IOException when fails to create new file handle
      */
-    File getJavaFileHandle(String fileName)
+    protected File getJavaFileHandle(String fileName)
             throws IOException {
-        return getFileObject(getDirPath(), fileName, JAVA_FILE_EXTENSION, getJavaFileInfo());
+        return getFileObject(getDirPath(), fileName, JAVA_FILE_EXTENSION,
+                             javaFileInfo);
     }
 
     /**
@@ -1370,48 +1244,49 @@
         String path = getTempDirPath(absolutePath);
         if (new File(path + file.getName()).exists()) {
             return readAppendFile(path + file.getName(), EMPTY_STRING);
-        } else {
-            throw new IOException("Unable to get data from the given "
-                                          + file.getName() + " file for " + getGeneratedJavaClassName() + PERIOD);
         }
+        throw new IOException("Unable to get data from the given " +
+                                      file.getName() + " file for " +
+                                      getGeneratedJavaClassName() + PERIOD);
     }
 
     /**
      * Returns temporary directory path.
      *
-     * @param absolutePath absolute path
+     * @param path absolute path
      * @return directory path
      */
-    private String getTempDirPath(String absolutePath) {
-        return getPackageDirPathFromJavaJPackage(absolutePath) + SLASH + getGeneratedJavaClassName()
-                + TEMP_FOLDER_NAME_SUFFIX + SLASH;
+    private String getTempDirPath(String path) {
+        return getPackageDirPathFromJavaJPackage(path) + SLASH +
+                getGeneratedJavaClassName() + TEMP_FOLDER_NAME_SUFFIX + SLASH;
     }
 
     /**
      * Parses attribute to get the attribute string.
      *
-     * @param attr         attribute info
-     * @param pluginConfig plugin configurations
+     * @param attr   attribute info
+     * @param config plugin configurations
      * @return attribute string
      */
-    String parseAttribute(JavaAttributeInfo attr, YangPluginConfig pluginConfig) {
+    protected String parseAttribute(JavaAttributeInfo attr,
+                                    YangPluginConfig config) {
         /*
          * TODO: check if this utility needs to be called or move to the caller
          */
-        String attributeName = getCamelCase(attr.getAttributeName(), pluginConfig.getConflictResolver());
-        String attributeAccessType = PRIVATE;
-        if ((javaFileInfo.getGeneratedFileTypes() & GENERATE_INTERFACE_WITH_BUILDER) != 0) {
-            attributeAccessType = PROTECTED;
+        String attrName = getCamelCase(attr.getAttributeName(),
+                                       config.getConflictResolver());
+        String attrAccessType = PRIVATE;
+        if ((javaFileInfo.getGeneratedFileTypes() &
+                GENERATE_INTERFACE_WITH_BUILDER) != 0) {
+            attrAccessType = PROTECTED;
         }
+        String pkg = null;
         if (attr.isQualifiedName()) {
-            return getJavaAttributeDefinition(attr.getImportInfo().getPkgInfo(),
-                                              attr.getImportInfo().getClassInfo(),
-                                              attributeName, attr.isListAttr(), attributeAccessType,
-                                              attr.getCompilerAnnotation());
-        } else {
-            return getJavaAttributeDefinition(null, attr.getImportInfo().getClassInfo(), attributeName,
-                                              attr.isListAttr(), attributeAccessType, attr.getCompilerAnnotation());
+            pkg = attr.getImportInfo().getPkgInfo();
         }
+        return getJavaAttributeDefinition(
+                pkg, attr.getImportInfo().getClassInfo(), attrName,
+                attr.isListAttr(), attrAccessType, attr.getCompilerAnnotation());
     }
 
     /**
@@ -1421,7 +1296,7 @@
      * @param data data to be appended
      * @throws IOException when fails to append to file
      */
-    void appendToFile(File file, String data)
+    protected void appendToFile(File file, String data)
             throws IOException {
         try {
             insertDataIntoJavaFile(file, data);
@@ -1433,228 +1308,221 @@
     /**
      * Adds parent's info to current node import list.
      *
-     * @param curNode      current node for which import list needs to be updated
-     * @param pluginConfig plugin configurations
+     * @param curNode current node
+     * @param config  plugin configurations
      */
-    void addParentInfoInCurNodeTempFile(YangNode curNode, YangPluginConfig pluginConfig) {
-        JavaQualifiedTypeInfoTranslator caseImportInfo = new JavaQualifiedTypeInfoTranslator();
+    protected void addParentInfoInCurNodeTempFile(YangNode curNode,
+                                                  YangPluginConfig config) {
+        JavaQualifiedTypeInfoTranslator caseImportInfo =
+                new JavaQualifiedTypeInfoTranslator();
         YangNode parent = getParentNodeInGenCode(curNode);
         if (curNode instanceof YangCase && parent instanceof YangAugment) {
             return;
         }
         if (!(parent instanceof JavaCodeGenerator)) {
-            throw new TranslatorException("missing parent node to contain current node info in generated file");
+            throw new TranslatorException(getErrorMsg(INVALID_PARENT_NODE, curNode));
         }
         if (!(curNode instanceof JavaFileInfoContainer)) {
-            throw new TranslatorException("missing java file information to get the package details "
-                                                  + "of attribute corresponding to child node " +
-                                                  curNode.getName() + " in " + curNode.getLineNumber() + " at " +
-                                                  curNode.getCharPosition()
-                                                  + " in " + curNode.getFileName());
+            throw new TranslatorException(getErrorMsg(INVALID_NODE, curNode));
         }
-        caseImportInfo.setClassInfo(getCapitalCase(getCamelCase(parent.getName(),
-                                                                pluginConfig.getConflictResolver())));
-        caseImportInfo.setPkgInfo(((JavaFileInfoContainer) parent).getJavaFileInfo().getPackage());
+        caseImportInfo.setClassInfo(
+                getCapitalCase(getCamelCase(parent.getName(),
+                                            config.getConflictResolver())));
+        caseImportInfo.setPkgInfo(((JavaFileInfoContainer) parent).getJavaFileInfo()
+                                          .getPackage());
 
-        JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+        JavaFileInfoTranslator fileInfo =
+                ((JavaFileInfoContainer) curNode).getJavaFileInfo();
 
-        ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
-                .getBeanTempFiles().getJavaImportData().addImportInfo(caseImportInfo,
-                                                                      getCapitalCase(fileInfo.getJavaName()),
-                                                                      fileInfo.getPackage());
+        getBeanFiles(curNode).getJavaImportData().addImportInfo(
+                caseImportInfo, getCapitalCase(fileInfo.getJavaName()),
+                fileInfo.getPackage());
     }
 
     /**
      * Adds leaf attributes in generated files.
      *
-     * @param listOfLeaves     list of YANG leaf
-     * @param yangPluginConfig plugin config
-     * @param curNode          current node
+     * @param entry    JAVA leaf info container
+     * @param config   plugin config
+     * @param curNode  current node
+     * @param leafList flag indicating whether leaf container is leafList
      * @throws IOException IO operation fail
      */
-    private void addLeavesInfoToTempFiles(List<YangLeaf> listOfLeaves,
-                                          YangPluginConfig yangPluginConfig, YangNode curNode)
+    private void addLeafInfoToTempFiles(JavaLeafInfoContainer entry,
+                                        YangPluginConfig config,
+                                        YangNode curNode,
+                                        boolean leafList)
             throws IOException {
-        if (listOfLeaves != null) {
-            for (YangLeaf leaf : listOfLeaves) {
-                if (!(leaf instanceof JavaLeafInfoContainer)) {
-                    throw new TranslatorException("Leaf does not have java information " +
-                                                          leaf.getName() + " in " + leaf.getLineNumber() + " at " +
-                                                          leaf.getCharPosition()
-                                                          + " in " + leaf.getFileName());
-                }
-                if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
-                    TempJavaBeanFragmentFiles tempJavaBeanFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
-                            .getTempJavaCodeFragmentFiles().getBeanTempFiles();
-                    addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeOfLeaf(tempJavaBeanFragmentFiles, leaf,
-                                                                                   yangPluginConfig), yangPluginConfig);
-                } else {
-                    addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeOfLeaf(this, leaf, yangPluginConfig),
-                                                            yangPluginConfig);
-                }
+        if (entry != null) {
+            if (curNode instanceof RpcNotificationContainer) {
+                TempJavaBeanFragmentFiles tempFiles = getBeanFiles(curNode);
+                addJavaSnippetInfoToApplicableTempFiles(
+                        getJavaAttributeOfLeaf(tempFiles, entry,
+                                               config, leafList), config);
+            } else {
+                addJavaSnippetInfoToApplicableTempFiles(
+                        getJavaAttributeOfLeaf(this, entry,
+                                               config, leafList), config);
             }
         }
     }
 
     /**
-     * Adds leaf list's attributes in generated files.
+     * Adds all the leaves in the current data model node as part of the
+     * generated temporary file.
      *
-     * @param listOfLeafList   list of YANG leaves
-     * @param yangPluginConfig plugin config
-     * @param curNode          current node
+     * @param curNode current node
+     * @param config  plugin config
      * @throws IOException IO operation fail
      */
-    private void addLeafListInfoToTempFiles(List<YangLeafList> listOfLeafList, YangPluginConfig yangPluginConfig,
-                                            YangNode curNode)
-            throws IOException {
-        if (listOfLeafList != null) {
-            for (YangLeafList leafList : listOfLeafList) {
-                if (!(leafList instanceof JavaLeafInfoContainer)) {
-                    throw new TranslatorException("Leaf-list does not have java information " +
-                                                          curNode.getName() + " in " + curNode.getLineNumber() +
-                                                          " at " + curNode.getCharPosition()
-                                                          + " in " + curNode.getFileName());
-                }
-                if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
-                    TempJavaBeanFragmentFiles tempJavaBeanFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
-                            .getTempJavaCodeFragmentFiles().getBeanTempFiles();
-                    addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeOfLeafList(tempJavaBeanFragmentFiles,
-                                                                                       leafList, yangPluginConfig),
-                                                            yangPluginConfig);
-                } else {
-                    addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeOfLeafList(this,
-                                                                                       leafList, yangPluginConfig),
-                                                            yangPluginConfig);
-                }
-            }
-        }
-    }
-
-    /**
-     * Adds all the leaves in the current data model node as part of the generated temporary file.
-     *
-     * @param curNode          current node
-     * @param yangPluginConfig plugin config
-     * @throws IOException IO operation fail
-     */
-    void addCurNodeLeavesInfoToTempFiles(YangNode curNode,
-                                         YangPluginConfig yangPluginConfig)
+    protected void addCurNodeLeavesInfoToTempFiles(YangNode curNode,
+                                                   YangPluginConfig config)
             throws IOException {
         if (!(curNode instanceof YangLeavesHolder)) {
-            throw new TranslatorException("Data model node does not have any leaves " +
-                                                  curNode.getName() + " in " + curNode.getLineNumber() + " at " +
-                                                  curNode.getCharPosition()
-                                                  + " in " + curNode.getFileName());
+            throw new TranslatorException(getErrorMsg(INVALID_LEAF_HOLDER,
+                                                      curNode));
         }
         YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
-        addLeavesInfoToTempFiles(leavesHolder.getListOfLeaf(), yangPluginConfig, curNode);
-        addLeafListInfoToTempFiles(leavesHolder.getListOfLeafList(), yangPluginConfig, curNode);
+
+        for (YangLeaf leaf : leavesHolder.getListOfLeaf()) {
+            addLeafInfoToTempFiles((JavaLeafInfoContainer) leaf, config,
+                                   curNode, false);
+        }
+
+        for (YangLeafList leafList : leavesHolder.getListOfLeafList()) {
+            addLeafInfoToTempFiles((JavaLeafInfoContainer) leafList, config,
+                                   curNode, true);
+        }
+    }
+
+    /**
+     * Adds operation type to temp files.
+     *
+     * @param curNode current YANG node
+     * @param config  YANG plugin config
+     * @throws IOException IO exception
+     */
+    protected void addOperationTypeToTempFiles(YangNode curNode,
+                                               YangPluginConfig config)
+            throws IOException {
+        JavaQualifiedTypeInfoTranslator typeInfo =
+                new JavaQualifiedTypeInfoTranslator();
+        typeInfo.setClassInfo(OPERATION_TYPE_CLASS);
+        typeInfo.setPkgInfo(((JavaFileInfoContainer) curNode).getJavaFileInfo()
+                                    .getPackage());
+        JavaAttributeInfo attributeInfo =
+                getAttributeInfoForTheData(typeInfo, YANG + getCapitalCase(
+                        curNode.getJavaClassNameOrBuiltInType()) +
+                        OPERATION_TYPE_ATTRIBUTE, null, false, false);
+        addJavaSnippetInfoToApplicableTempFiles(attributeInfo, config);
     }
 
     /**
      * Adds the new attribute info to the target generated temporary files.
      *
-     * @param newAttrInfo  the attribute info that needs to be added to temporary files
+     * @param newAttrInfo  new attribute info
      * @param pluginConfig plugin configurations
      * @throws IOException IO operation fail
      */
-    void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo newAttrInfo, YangPluginConfig pluginConfig)
+    void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo newAttrInfo,
+                                                 YangPluginConfig pluginConfig)
             throws IOException {
-        setAttributePresent(true);
-        if ((getGeneratedTempFiles() & ATTRIBUTES_MASK) != 0) {
+        isAttributePresent = true;
+        if (tempFlagSet(ATTRIBUTES_MASK)) {
             addAttribute(newAttrInfo, pluginConfig);
         }
-        if ((getGeneratedTempFiles() & GETTER_FOR_INTERFACE_MASK) != 0) {
+        if (tempFlagSet(GETTER_FOR_INTERFACE_MASK)) {
             addGetterForInterface(newAttrInfo, pluginConfig);
         }
-        if ((getGeneratedTempFiles() & SETTER_FOR_INTERFACE_MASK) != 0) {
+        if (tempFlagSet(SETTER_FOR_INTERFACE_MASK)) {
             addSetterForInterface(newAttrInfo, pluginConfig);
         }
-        if ((getGeneratedTempFiles() & SETTER_FOR_CLASS_MASK) != 0) {
+        if (tempFlagSet(SETTER_FOR_CLASS_MASK)) {
             addSetterImpl(newAttrInfo, pluginConfig);
         }
-        if ((getGeneratedTempFiles() & HASH_CODE_IMPL_MASK) != 0) {
+        if (tempFlagSet(HASH_CODE_IMPL_MASK)) {
             addHashCodeMethod(newAttrInfo);
         }
-        if ((getGeneratedTempFiles() & EQUALS_IMPL_MASK) != 0) {
+        if (tempFlagSet(EQUALS_IMPL_MASK)) {
             addEqualsMethod(newAttrInfo);
         }
-        if ((getGeneratedTempFiles() & TO_STRING_IMPL_MASK) != 0) {
+        if (tempFlagSet(TO_STRING_IMPL_MASK)) {
             addToStringMethod(newAttrInfo);
         }
-        if ((getGeneratedTempFiles() & EDIT_CONTENT_MASK) != 0) {
+        if (tempFlagSet(EDIT_CONTENT_MASK)) {
             //TODO: add implementation for edit content match.
         }
-        if ((getGeneratedTempFiles() & ADD_TO_LIST_IMPL_MASK) != 0 && newAttrInfo.isListAttr()) {
+        boolean listAttr = newAttrInfo.isListAttr();
+        if (tempFlagSet(ADD_TO_LIST_IMPL_MASK) && listAttr) {
             addAddToListImpl(newAttrInfo);
         }
-        if ((getGeneratedTempFiles() & ADD_TO_LIST_INTERFACE_MASK) != 0 && newAttrInfo.isListAttr()) {
+        if (tempFlagSet(ADD_TO_LIST_INTERFACE_MASK) && listAttr) {
             addAddToListInterface(newAttrInfo, pluginConfig);
         }
-        if ((getGeneratedTempFiles() & FILTER_CONTENT_MATCH_FOR_NODES_MASK) != 0
-                && newAttrInfo.getAttributeType() == null) {
+        YangType attrType = newAttrInfo.getAttributeType();
+        if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_NODES_MASK) &&
+                attrType == null && !newAttrInfo.getAttributeName()
+                .equals(OPERATION_TYPE_ATTRIBUTE)) {
             addSubtreeFilteringForChildNode(newAttrInfo);
         }
-        if ((getGeneratedTempFiles() & FILTER_CONTENT_MATCH_FOR_LEAF_MASK) != 0 && !newAttrInfo.isListAttr()
-                && newAttrInfo.getAttributeType() != null) {
+        if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_LEAF_MASK) &&
+                !listAttr && attrType != null) {
             addSubTreeFilteringForLeaf(newAttrInfo);
         }
-        if ((getGeneratedTempFiles() & FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK) != 0 && newAttrInfo.isListAttr()
-                && newAttrInfo.getAttributeType() != null) {
+        if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK) &&
+                listAttr && attrType != null) {
             addSubtreeFilteringForLeafList(newAttrInfo);
         }
-        if ((getGeneratedTempFiles() & LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK) != 0 && !newAttrInfo.isListAttr()
-                && newAttrInfo.getAttributeType() != null) {
+        if (tempFlagSet(LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK) &&
+                !listAttr && attrType != null) {
             leafCount++;
-            addLeafIdAttributes(newAttrInfo, leafCount, pluginConfig);
+            addLeafIdAttributes(newAttrInfo, leafCount);
         }
-        if (!newAttrInfo.isIntConflict() &&
-                !newAttrInfo.isLongConflict() && !newAttrInfo.isShortConflict()) {
-            if ((getGeneratedTempFiles() & GETTER_FOR_CLASS_MASK) != 0) {
+        if (!newAttrInfo.isIntConflict() && !newAttrInfo.isLongConflict() &&
+                !newAttrInfo.isShortConflict()) {
+            if (tempFlagSet(GETTER_FOR_CLASS_MASK)) {
                 addGetterImpl(newAttrInfo, pluginConfig);
             }
-
-            if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
-                JavaQualifiedTypeInfoTranslator qualifiedInfoOfFromString =
-                        getQualifiedInfoOfFromString(newAttrInfo, pluginConfig
-                                .getConflictResolver());
+            if (tempFlagSet(FROM_STRING_IMPL_MASK)) {
+                JavaQualifiedTypeInfoTranslator typeInfo =
+                        getQualifiedInfoOfFromString(newAttrInfo,
+                                                     pluginConfig.getConflictResolver());
             /*
              * Create a new java attribute info with qualified information of
              * wrapper classes.
              */
                 JavaAttributeInfo fromStringAttributeInfo =
-                        getAttributeInfoForTheData(qualifiedInfoOfFromString, newAttrInfo.getAttributeName(),
-                                                   newAttrInfo.getAttributeType(),
-                                                   getIsQualifiedAccessOrAddToImportList(
-                                                           qualifiedInfoOfFromString),
-                                                   false);
-
+                        getAttributeInfoForTheData(
+                                typeInfo, newAttrInfo.getAttributeName(),
+                                attrType, getIsQualifiedAccessOrAddToImportList(
+                                        typeInfo), false);
                 addFromStringMethod(newAttrInfo, fromStringAttributeInfo);
             }
         }
     }
 
     /**
-     * Returns java class name.
+     * Returns JAVA class name for non implementation classes.
      *
      * @param suffix for the class name based on the file type
      * @return java class name
      */
-    String getJavaClassName(String suffix) {
-        return getCapitalCase(getJavaFileInfo().getJavaName()) + suffix;
+    protected String getJavaClassName(String suffix) {
+        return getCapitalCase(javaFileInfo.getJavaName()) + suffix;
     }
 
     /**
-     * Returns java class name.
+     * Returns class name for implementation classes.
      *
      * @param node YANG node
      * @return java class name
      */
     private String getImplClassName(YangNode node) {
-        if (node instanceof YangModule || node instanceof YangSubModule) {
-            return getCapitalCase(getJavaFileInfo().getJavaName()) + OP_PARAM;
+        if (node instanceof RpcNotificationContainer) {
+            return getCapitalCase(javaFileInfo.getJavaName()) + OP_PARAM;
         }
-        return getCapitalCase(DEFAULT) + getCapitalCase(getJavaFileInfo().getJavaName());
+        return getCapitalCase(DEFAULT) +
+                getCapitalCase(javaFileInfo.getJavaName());
     }
 
     /**
@@ -1663,7 +1531,7 @@
      * @return directory path
      */
     private String getDirPath() {
-        return getJavaFileInfo().getPackageFilePath();
+        return javaFileInfo.getPackageFilePath();
     }
 
     /**
@@ -1675,8 +1543,8 @@
      */
     public void generateJavaFile(int fileType, YangNode curNode)
             throws IOException {
-        List<String> imports = ((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getBeanTempFiles()
-                .getJavaImportData().getImports();
+        List<String> imports =
+                getBeanFiles(curNode).getJavaImportData().getImports();
         if (curNode instanceof YangAugmentableNode) {
             addImportsForAugmentableClass(imports, true, true, curNode);
         }
@@ -1687,41 +1555,52 @@
                 BUILDER_INTERFACE_MASK) != 0) {
 
             //Create interface file.
-            setInterfaceJavaFileHandle(getJavaFileHandle(getJavaClassName(INTERFACE_FILE_NAME_SUFFIX)));
-            setInterfaceJavaFileHandle(
-                    generateInterfaceFile(getInterfaceJavaFileHandle(), imports, curNode, isAttributePresent()));
-            if (!(curNode instanceof YangModule) && !(curNode instanceof YangSubModule)) {
+            interfaceJavaFileHandle =
+                    getJavaFileHandle(getJavaClassName(INTERFACE_FILE_NAME_SUFFIX));
+            interfaceJavaFileHandle =
+                    generateInterfaceFile(interfaceJavaFileHandle, imports,
+                                          curNode, isAttributePresent);
+            if (!(curNode instanceof RpcNotificationContainer)) {
 
                 //Create builder interface file.
                 if ((fileType & BUILDER_INTERFACE_MASK) != 0) {
-                    setBuilderInterfaceJavaFileHandle(
-                            getJavaFileHandle(getJavaClassName(BUILDER_INTERFACE_FILE_NAME_SUFFIX)));
-                    setBuilderInterfaceJavaFileHandle(
-                            generateBuilderInterfaceFile(getBuilderInterfaceJavaFileHandle(), curNode,
-                                                         isAttributePresent()));
-
-                    //Append builder interface file to interface file and close it.
-                    mergeJavaFiles(getBuilderInterfaceJavaFileHandle(), getInterfaceJavaFileHandle());
+                    builderInterfaceJavaFileHandle =
+                            getJavaFileHandle(getJavaClassName(
+                                    BUILDER_INTERFACE_FILE_NAME_SUFFIX));
+                    builderInterfaceJavaFileHandle =
+                            generateBuilderInterfaceFile(
+                                    builderInterfaceJavaFileHandle,
+                                    curNode, isAttributePresent);
+                    /*
+                     * Append builder interface file to interface file and
+                     * close it.
+                     */
+                    mergeJavaFiles(builderInterfaceJavaFileHandle,
+                                   interfaceJavaFileHandle);
                 }
             }
-            insertDataIntoJavaFile(getInterfaceJavaFileHandle(), getJavaClassDefClose());
-            validateLineLength(getInterfaceJavaFileHandle());
+            insertDataIntoJavaFile(interfaceJavaFileHandle,
+                                   getJavaClassDefClose());
+            validateLineLength(interfaceJavaFileHandle);
             if (curNode instanceof YangAugmentableNode) {
                 addImportsForAugmentableClass(imports, false, true, curNode);
             }
         }
-        if ((fileType & BUILDER_CLASS_MASK) != 0 || (fileType & DEFAULT_CLASS_MASK) != 0) {
-            if (isAttributePresent()) {
+        if ((fileType & BUILDER_CLASS_MASK) != 0 ||
+                (fileType & DEFAULT_CLASS_MASK) != 0) {
+            if (isAttributePresent) {
                 addImportsToStringAndHasCodeMethods(imports, true);
                 addArrayListImport(imports);
             }
 
-            boolean isLeavesPresent;
+            boolean leavesPresent;
             if (curNode instanceof YangLeavesHolder) {
                 YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
-                isLeavesPresent = leavesHolder.getListOfLeaf() != null && !leavesHolder.getListOfLeaf().isEmpty()
-                        || leavesHolder.getListOfLeafList() != null && !leavesHolder.getListOfLeafList().isEmpty();
-                if (isLeavesPresent) {
+                leavesPresent = leavesHolder.getListOfLeaf() != null &&
+                        !leavesHolder.getListOfLeaf().isEmpty() ||
+                        leavesHolder.getListOfLeafList() != null &&
+                                !leavesHolder.getListOfLeafList().isEmpty();
+                if (leavesPresent) {
                     addBitsetImport(imports);
                 }
             }
@@ -1732,22 +1611,30 @@
             sortImports(imports);
 
             //Create impl class file.
-            setImplClassJavaFileHandle(getJavaFileHandle(getImplClassName(curNode)));
-            setImplClassJavaFileHandle(
-                    generateDefaultClassFile(getImplClassJavaFileHandle(), curNode, isAttributePresent(), imports));
+            implClassJavaFileHandle =
+                    getJavaFileHandle(getImplClassName(curNode));
+            implClassJavaFileHandle =
+                    generateDefaultClassFile(implClassJavaFileHandle,
+                                             curNode, isAttributePresent,
+                                             imports);
 
             //Create builder class file.
             if ((fileType & BUILDER_CLASS_MASK) != 0) {
-                setBuilderClassJavaFileHandle(getJavaFileHandle(getJavaClassName(BUILDER_CLASS_FILE_NAME_SUFFIX)));
-                setBuilderClassJavaFileHandle(
-                        generateBuilderClassFile(getBuilderClassJavaFileHandle(), curNode,
-                                                 isAttributePresent()));
+                builderClassJavaFileHandle =
+                        getJavaFileHandle(getJavaClassName(
+                                BUILDER_CLASS_FILE_NAME_SUFFIX));
+                builderClassJavaFileHandle =
+                        generateBuilderClassFile(builderClassJavaFileHandle,
+                                                 curNode,
+                                                 isAttributePresent);
 
                 //Append impl class to builder class and close it.
-                mergeJavaFiles(getBuilderClassJavaFileHandle(), getImplClassJavaFileHandle());
+                mergeJavaFiles(builderClassJavaFileHandle,
+                               implClassJavaFileHandle);
             }
-            insertDataIntoJavaFile(getImplClassJavaFileHandle(), getJavaClassDefClose());
-            validateLineLength(getImplClassJavaFileHandle());
+            insertDataIntoJavaFile(implClassJavaFileHandle,
+                                   getJavaClassDefClose());
+            validateLineLength(implClassJavaFileHandle);
         }
         //Close all the file handles.
         freeTemporaryResources(false);
@@ -1755,13 +1642,13 @@
 
     //Adds import for array list.
     private void addArrayListImport(List<String> imports) {
-        if (imports.contains(getJavaImportData().getImportForList())) {
+        if (imports.contains(javaImportData.getImportForList())) {
             imports.add(ARRAY_LIST_IMPORT);
         }
     }
 
     private void addBitsetImport(List<String> imports) {
-        imports.add(getJavaImportData().getImportForToBitSet());
+        imports.add(javaImportData.getImportForToBitSet());
     }
 
     /**
@@ -1770,14 +1657,16 @@
      * @param imports   import list
      * @param operation add or remove
      */
-    void addImportsToStringAndHasCodeMethods(List<String> imports, boolean operation) {
+    protected void addImportsToStringAndHasCodeMethods(List<String> imports,
+                                                       boolean operation) {
         if (operation) {
-            imports.add(getJavaImportData().getImportForHashAndEquals());
-            imports.add(getJavaImportData().getImportForToString());
+            imports.add(javaImportData.getImportForHashAndEquals());
+            imports.add(javaImportData.getImportForToString());
         } else {
-            imports.remove(getJavaImportData().getImportForHashAndEquals());
-            imports.remove(getJavaImportData().getImportForToString());
+            imports.remove(javaImportData.getImportForHashAndEquals());
+            imports.remove(javaImportData.getImportForToString());
         }
+        // TODO change boolean to OPERATION, in all related places.
     }
 
     /**
@@ -1788,21 +1677,23 @@
      * @param isInterfaceFile if need to add in interface file
      * @param curNode         current node
      */
-    private void addImportsForAugmentableClass(List<String> imports, boolean operations, boolean isInterfaceFile,
+    private void addImportsForAugmentableClass(List<String> imports,
+                                               boolean operations,
+                                               boolean isInterfaceFile,
                                                YangNode curNode) {
         if (operations) {
             if (!isInterfaceFile) {
-                imports.add(getJavaImportData().getHashMapImport());
+                imports.add(javaImportData.getHashMapImport());
             }
             // Add import for hash map only if node is not a YANG choice.
             if (!(curNode instanceof YangChoice)) {
-                imports.add(getJavaImportData().getMapImport());
+                imports.add(javaImportData.getMapImport());
             }
         } else {
             if (!isInterfaceFile) {
-                imports.remove(getJavaImportData().getHashMapImport());
+                imports.remove(javaImportData.getHashMapImport());
             }
-            imports.remove(getJavaImportData().getMapImport());
+            imports.remove(javaImportData.getMapImport());
         }
         sortImports(imports);
     }
@@ -1819,82 +1710,83 @@
     /**
      * Removes all temporary file handles.
      *
-     * @param isErrorOccurred flag to tell translator that error has occurred while file generation
+     * @param errorOccurred flag indicating if error occurred
      * @throws IOException when failed to delete the temporary files
      */
-    public void freeTemporaryResources(boolean isErrorOccurred)
+    public void freeTemporaryResources(boolean errorOccurred)
             throws IOException {
         /*
          * Close all java file handles and when error occurs delete the files.
          */
-        if ((getGeneratedJavaFiles() & INTERFACE_MASK) != 0) {
-            closeFile(getInterfaceJavaFileHandle(), isErrorOccurred);
+        if (javaFlagSet(INTERFACE_MASK)) {
+            closeFile(interfaceJavaFileHandle, errorOccurred);
         }
-        if ((getGeneratedJavaFiles() & BUILDER_CLASS_MASK) != 0) {
-            closeFile(getBuilderClassJavaFileHandle(), true);
+        if (javaFlagSet(BUILDER_CLASS_MASK)) {
+            closeFile(builderClassJavaFileHandle);
         }
-        if ((getGeneratedJavaFiles() & BUILDER_INTERFACE_MASK) != 0) {
-            closeFile(getBuilderInterfaceJavaFileHandle(), true);
+        if (javaFlagSet(BUILDER_INTERFACE_MASK)) {
+            closeFile(builderInterfaceJavaFileHandle);
         }
-        if ((getGeneratedJavaFiles() & DEFAULT_CLASS_MASK) != 0) {
-            closeFile(getImplClassJavaFileHandle(), isErrorOccurred);
+        if (javaFlagSet(DEFAULT_CLASS_MASK)) {
+            closeFile(implClassJavaFileHandle, errorOccurred);
         }
         /*
          * Close all temporary file handles and delete the files.
          */
-        if ((getGeneratedTempFiles() & GETTER_FOR_CLASS_MASK) != 0) {
-            closeFile(getGetterImplTempFileHandle(), true);
+        if (tempFlagSet(GETTER_FOR_CLASS_MASK)) {
+            closeFile(getterImplTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & ATTRIBUTES_MASK) != 0) {
-            closeFile(getAttributesTempFileHandle(), true);
+        if (tempFlagSet(ATTRIBUTES_MASK)) {
+            closeFile(attributesTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & HASH_CODE_IMPL_MASK) != 0) {
-            closeFile(getHashCodeImplTempFileHandle(), true);
+        if (tempFlagSet(HASH_CODE_IMPL_MASK)) {
+            closeFile(hashCodeImplTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & TO_STRING_IMPL_MASK) != 0) {
-            closeFile(getToStringImplTempFileHandle(), true);
+        if (tempFlagSet(TO_STRING_IMPL_MASK)) {
+            closeFile(toStringImplTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & EQUALS_IMPL_MASK) != 0) {
-            closeFile(getEqualsImplTempFileHandle(), true);
+        if (tempFlagSet(EQUALS_IMPL_MASK)) {
+            closeFile(equalsImplTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
-            closeFile(getFromStringImplTempFileHandle(), true);
+        if (tempFlagSet(FROM_STRING_IMPL_MASK)) {
+            closeFile(fromStringImplTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & ADD_TO_LIST_IMPL_MASK) != 0) {
-            closeFile(getAddToListImplTempFileHandle(), true);
+        if (tempFlagSet(ADD_TO_LIST_IMPL_MASK)) {
+            closeFile(addToListImplTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & ADD_TO_LIST_INTERFACE_MASK) != 0) {
-            closeFile(getAddToListInterfaceTempFileHandle(), true);
+        if (tempFlagSet(ADD_TO_LIST_INTERFACE_MASK)) {
+            closeFile(addToListInterfaceTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK) != 0) {
-            closeFile(getLeafIdAttributeTempFileHandle(), true);
+        if (tempFlagSet(LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK)) {
+            closeFile(leafIdAttributeTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & FILTER_CONTENT_MATCH_FOR_LEAF_MASK) != 0) {
-            closeFile(getSubtreeFilteringForLeafTempFileHandle(), true);
+        if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_LEAF_MASK)) {
+            closeFile(subtreeFilteringForLeafTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK) != 0) {
-            closeFile(getGetSubtreeFilteringForListTempFileHandle(), true);
+        if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK)) {
+            closeFile(getSubtreeFilteringForListTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & FILTER_CONTENT_MATCH_FOR_NODES_MASK) != 0) {
-            closeFile(getGetSubtreeFilteringForChildNodeTempFileHandle(), true);
+        if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_NODES_MASK)) {
+            closeFile(getSubtreeFilteringForChildNodeTempFileHandle);
         }
-        if ((getGeneratedTempFiles() & EDIT_CONTENT_MASK) != 0) {
-            closeFile(getEditContentTempFileHandle(), true);
+        if (tempFlagSet(EDIT_CONTENT_MASK)) {
+            closeFile(editContentTempFileHandle);
         }
     }
 
     /**
-     * Returns if the attribute needs to be accessed in a qualified manner or not, if it needs to be imported, then the
-     * same needs to be done.
+     * Returns if the attribute needs to be accessed in a qualified manner or
+     * not, if it needs to be imported, then the same needs to be done.
      *
-     * @param importInfo import info for the current attribute being added
+     * @param importInfo import info
      * @return status of the qualified access to the attribute
      */
-    boolean getIsQualifiedAccessOrAddToImportList(
-            JavaQualifiedTypeInfo importInfo) {
-        return getJavaImportData().addImportInfo((JavaQualifiedTypeInfoTranslator) importInfo,
-                                                 getGeneratedJavaClassName(),
-                                                 getJavaFileInfo().getPackage());
+    protected boolean getIsQualifiedAccessOrAddToImportList(JavaQualifiedTypeInfo
+                                                                    importInfo) {
+        return javaImportData
+                .addImportInfo((JavaQualifiedTypeInfoTranslator) importInfo,
+                               getGeneratedJavaClassName(),
+                               javaFileInfo.getPackage());
     }
 
     /**
@@ -1907,15 +1799,6 @@
     }
 
     /**
-     * Sets temp file handle for add to list interface.
-     *
-     * @param addToListInterfaceTempFileHandle temp file handle for add to list interface
-     */
-    private void setAddToListInterfaceTempFileHandle(File addToListInterfaceTempFileHandle) {
-        this.addToListInterfaceTempFileHandle = addToListInterfaceTempFileHandle;
-    }
-
-    /**
      * Returns temp file handle for add to list impl.
      *
      * @return temp file handle for add to list impl
@@ -1925,15 +1808,6 @@
     }
 
     /**
-     * Sets temp file handle for add to list impl.
-     *
-     * @param addToListImplTempFileHandle temp file handle for add to list impl
-     */
-    private void setAddToListImplTempFileHandle(File addToListImplTempFileHandle) {
-        this.addToListImplTempFileHandle = addToListImplTempFileHandle;
-    }
-
-    /**
      * Returns temp file handle for leaf identifier attributes.
      *
      * @return temp file handle for leaf identifier attributes
@@ -1943,30 +1817,12 @@
     }
 
     /**
-     * Sets temp file handle for leaf identifier attributes.
-     *
-     * @param leafIdAttributeTempFileHandle temp file handle for leaf identifier attributes
-     */
-    private void setLeafIdAttributeTempFileHandle(File leafIdAttributeTempFileHandle) {
-        this.leafIdAttributeTempFileHandle = leafIdAttributeTempFileHandle;
-    }
-
-    /**
-     * Returns if root node is set.
-     *
-     * @return true if root node
-     */
-    private boolean isRooNode() {
-        return isRooNode;
-    }
-
-    /**
      * Sets true if root node.
      *
-     * @param rooNode true if root node
+     * @param rootNode true if root node
      */
-    void setRooNode(boolean rooNode) {
-        isRooNode = rooNode;
+    void setRootNode(boolean rootNode) {
+        this.rootNode = rootNode;
     }
 
     /**
@@ -1979,15 +1835,6 @@
     }
 
     /**
-     * Sets temp file handle for is content match.
-     *
-     * @param subtreeFilteringForLeafTempFileHandle temp file handle for is content match
-     */
-    private void setSubtreeFilteringForLeafTempFileHandle(File subtreeFilteringForLeafTempFileHandle) {
-        this.subtreeFilteringForLeafTempFileHandle = subtreeFilteringForLeafTempFileHandle;
-    }
-
-    /**
      * Returns temp file for edit content file.
      *
      * @return temp file for edit content file
@@ -1997,15 +1844,6 @@
     }
 
     /**
-     * Sets temp file for edit content file.
-     *
-     * @param editContentTempFileHandle temp file for edit content file
-     */
-    private void setEditContentTempFileHandle(File editContentTempFileHandle) {
-        this.editContentTempFileHandle = editContentTempFileHandle;
-    }
-
-    /**
      * Returns temp file for is content match.
      *
      * @return temp file for is content match
@@ -2015,15 +1853,6 @@
     }
 
     /**
-     * Sets temp file handle for is content match.
-     *
-     * @param getSubtreeFilteringForListTempFileHandle temp file handle for is content match
-     */
-    private void setGetSubtreeFilteringForListTempFileHandle(File getSubtreeFilteringForListTempFileHandle) {
-        this.getSubtreeFilteringForListTempFileHandle = getSubtreeFilteringForListTempFileHandle;
-    }
-
-    /**
      * Returns temp file for is content match.
      *
      * @return temp file for is content match
@@ -2033,11 +1862,27 @@
     }
 
     /**
-     * Sets temp file handle for is content match.
+     * Checks if a given flag is set in generated java files.
+     * Returns true if ANY flag is set in a bitwise-ORed argument, e.g.
+     * <pre>
+     *    javaFlagSet(FOO | BAR)
+     * </pre>
+     * returns true if either FOO flag or BAR flag is set.
      *
-     * @param getSubtreeFilteringForChildNodeTempFileHandle temp file handle for is content match
+     * @param flag input flag mask value
+     * @return true if set, else false
      */
-    private void setGetSubtreeFilteringForChildNodeTempFileHandle(File getSubtreeFilteringForChildNodeTempFileHandle) {
-        this.getSubtreeFilteringForChildNodeTempFileHandle = getSubtreeFilteringForChildNodeTempFileHandle;
+    private boolean javaFlagSet(int flag) {
+        return (getGeneratedJavaFiles() & flag) != 0;
+    }
+
+    /**
+     * Checks if a given flag is set in temp files.
+     *
+     * @param flag input flag mask value
+     * @return true if set, else false
+     */
+    private boolean tempFlagSet(int flag) {
+        return (tempFilesFlagSet & flag) != 0;
     }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
index 97817d4..8d08754 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
@@ -16,15 +16,15 @@
 
 package org.onosproject.yangutils.translator.tojava;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModuleTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModuleTranslator;
 import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_IMPL_MASK;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK;
@@ -37,6 +37,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.Operation.ADD;
 import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.VOID;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
@@ -45,11 +46,11 @@
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 
 /**
- * Represents implementation of java service code fragments temporary implementations. Maintains the temp files required
- * specific for service and manager java snippet generation.
+ * Represents implementation of java service code fragments temporary
+ * implementations. Maintains the temp files required specific for service
+ * and manager java snippet generation.
  */
-public class TempJavaServiceFragmentFiles
-        extends TempJavaFragmentFiles {
+public class TempJavaServiceFragmentFiles extends TempJavaFragmentFiles {
 
     /**
      * File name for rpc method.
@@ -92,31 +93,15 @@
         setJavaExtendsListHolder(new JavaExtendsListHolder());
         setJavaImportData(new JavaImportData());
         setJavaFileInfo(javaFileInfo);
-        setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
+        setAbsoluteDirPath(getAbsolutePackagePath(
+                getJavaFileInfo().getBaseCodeGenPath(),
                 getJavaFileInfo().getPackageFilePath()));
         addGeneratedTempFile(RPC_INTERFACE_MASK);
         addGeneratedTempFile(RPC_IMPL_MASK);
 
-        setRpcInterfaceTempFileHandle(getTemporaryFileHandle(RPC_INTERFACE_FILE_NAME));
-        setRpcImplTempFileHandle(getTemporaryFileHandle(RPC_IMPL_FILE_NAME));
-    }
-
-    /**
-     * Returns rpc method's java file handle.
-     *
-     * @return java file handle
-     */
-    private File getServiceInterfaceJavaFileHandle() {
-        return serviceInterfaceJavaFileHandle;
-    }
-
-    /**
-     * Sets rpc method's java file handle.
-     *
-     * @param serviceInterfaceJavaFileHandle file handle for to rpc method
-     */
-    private void setServiceInterfaceJavaFileHandle(File serviceInterfaceJavaFileHandle) {
-        this.serviceInterfaceJavaFileHandle = serviceInterfaceJavaFileHandle;
+        rpcInterfaceTempFileHandle =
+                getTemporaryFileHandle(RPC_INTERFACE_FILE_NAME);
+        rpcImplTempFileHandle = getTemporaryFileHandle(RPC_IMPL_FILE_NAME);
     }
 
     /**
@@ -129,15 +114,6 @@
     }
 
     /**
-     * Sets rpc method's temporary file handle.
-     *
-     * @param rpcInterfaceTempFileHandle file handle for to rpc method
-     */
-    private void setRpcInterfaceTempFileHandle(File rpcInterfaceTempFileHandle) {
-        this.rpcInterfaceTempFileHandle = rpcInterfaceTempFileHandle;
-    }
-
-    /**
      * Retrieves the manager impl temp file.
      *
      * @return the manager impl temp file
@@ -147,15 +123,6 @@
     }
 
     /**
-     * Sets the manager impl temp file.
-     *
-     * @param rpcImplTempFileHandle the manager impl temp file
-     */
-    private void setRpcImplTempFileHandle(File rpcImplTempFileHandle) {
-        this.rpcImplTempFileHandle = rpcImplTempFileHandle;
-    }
-
-    /**
      * Constructs java code exit.
      *
      * @param fileType generated file type
@@ -167,26 +134,31 @@
             throws IOException {
 
         addResolvedAugmentedDataNodeImports(curNode);
-        List<String> imports = ((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getServiceTempFiles()
+        List<String> imports = ((JavaCodeGeneratorInfo) curNode)
+                .getTempJavaCodeFragmentFiles().getServiceTempFiles()
                 .getJavaImportData().getImports();
         createPackage(curNode);
-        boolean isNotification = false;
+        boolean notification = false;
         if (curNode instanceof YangJavaModuleTranslator) {
-            if (!((YangJavaModuleTranslator) curNode).getNotificationNodes().isEmpty()) {
-                isNotification = true;
+            if (!((YangJavaModuleTranslator) curNode).getNotificationNodes()
+                    .isEmpty()) {
+                notification = true;
             }
         } else if (curNode instanceof YangJavaSubModuleTranslator) {
-            if (!((YangJavaSubModuleTranslator) curNode).getNotificationNodes().isEmpty()) {
-                isNotification = true;
+            if (!((YangJavaSubModuleTranslator) curNode).getNotificationNodes()
+                    .isEmpty()) {
+                notification = true;
             }
         }
 
-        if (isNotification) {
-            addListenersImport(curNode, imports, true, LISTENER_SERVICE);
+        if (notification) {
+            addListenersImport(curNode, imports, ADD, LISTENER_SERVICE);
         }
 
-        setServiceInterfaceJavaFileHandle(getJavaFileHandle(getJavaClassName(SERVICE_FILE_NAME_SUFFIX)));
-        generateServiceInterfaceFile(getServiceInterfaceJavaFileHandle(), curNode, imports);
+        serviceInterfaceJavaFileHandle =
+                getJavaFileHandle(getJavaClassName(SERVICE_FILE_NAME_SUFFIX));
+        generateServiceInterfaceFile(serviceInterfaceJavaFileHandle, curNode,
+                                     imports);
 
         // Close all the file handles.
         freeTemporaryResources(false);
@@ -195,70 +167,70 @@
     /**
      * Adds rpc string information to applicable temp file.
      *
-     * @param javaAttributeInfoOfInput  RPCs input node attribute info
-     * @param javaAttributeInfoOfOutput RPCs output node attribute info
-     * @param rpcName                   name of the rpc function
-     * @param pluginConfig              plugin configurations
+     * @param inputAttr  RPCs input node attribute info
+     * @param outputAttr RPCs output node attribute info
+     * @param rpcName    name of the rpc function
+     * @param config     plugin configurations
      * @throws IOException IO operation fail
      */
-    private void addRpcString(JavaAttributeInfo javaAttributeInfoOfInput,
-                              JavaAttributeInfo javaAttributeInfoOfOutput, YangPluginConfig pluginConfig,
-                              String rpcName)
+    private void addRpcString(JavaAttributeInfo inputAttr,
+                              JavaAttributeInfo outputAttr,
+                              YangPluginConfig config, String rpcName)
             throws IOException {
         String rpcInput = EMPTY_STRING;
         String rpcOutput = VOID;
         String rpcInputJavaDoc = EMPTY_STRING;
-        if (javaAttributeInfoOfInput != null) {
-            rpcInput = getCapitalCase(javaAttributeInfoOfInput.getAttributeName());
+        if (inputAttr != null) {
+            rpcInput = getCapitalCase(inputAttr.getAttributeName());
         }
-        if (javaAttributeInfoOfOutput != null) {
-            rpcOutput = getCapitalCase(javaAttributeInfoOfOutput.getAttributeName());
+        if (outputAttr != null) {
+            rpcOutput = getCapitalCase(outputAttr.getAttributeName());
         }
         if (!rpcInput.equals(EMPTY_STRING)) {
             rpcInputJavaDoc = RPC_INPUT_VAR_NAME;
         }
-        appendToFile(getRpcInterfaceTempFileHandle(),
-                generateJavaDocForRpc(rpcName, rpcInputJavaDoc, rpcOutput, pluginConfig)
-                        + getRpcServiceMethod(rpcName, rpcInput, rpcOutput, pluginConfig) + NEW_LINE);
-        appendToFile(getRpcImplTempFileHandle(),
-                getRpcManagerMethod(rpcName, rpcInput, rpcOutput, pluginConfig) + NEW_LINE);
+        appendToFile(rpcInterfaceTempFileHandle,
+                     generateJavaDocForRpc(rpcName, rpcInputJavaDoc, rpcOutput,
+                                           config) +
+                             getRpcServiceMethod(rpcName, rpcInput, rpcOutput,
+                                                 config) + NEW_LINE);
+        appendToFile(rpcImplTempFileHandle,
+                     getRpcManagerMethod(rpcName, rpcInput, rpcOutput, config) +
+                             NEW_LINE);
     }
 
     /**
      * Adds the JAVA rpc snippet information.
      *
-     * @param javaAttributeInfoOfInput  RPCs input node attribute info
-     * @param javaAttributeInfoOfOutput RPCs output node attribute info
-     * @param pluginConfig              plugin configurations
-     * @param rpcName                   name of the rpc function
+     * @param inputAttr  RPCs input node attribute info
+     * @param outputAttr RPCs output node attribute info
+     * @param config     plugin configurations
+     * @param rpcName    name of the rpc function
      * @throws IOException IO operation fail
      */
-    public void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo javaAttributeInfoOfInput,
-                                                        JavaAttributeInfo javaAttributeInfoOfOutput,
-                                                        YangPluginConfig pluginConfig, String rpcName)
+    public void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo inputAttr,
+                                                        JavaAttributeInfo outputAttr,
+                                                        YangPluginConfig config,
+                                                        String rpcName)
             throws IOException {
-        addRpcString(javaAttributeInfoOfInput, javaAttributeInfoOfOutput, pluginConfig, rpcName);
+        addRpcString(inputAttr, outputAttr, config, rpcName);
     }
 
     /**
      * Removes all temporary file handles.
      *
-     * @param isErrorOccurred flag to tell translator that error has occurred while file generation
+     * @param errorOccurred flag indicating error
      * @throws IOException when failed to delete the temporary files
      */
     @Override
-    public void freeTemporaryResources(boolean isErrorOccurred)
+    public void freeTemporaryResources(boolean errorOccurred)
             throws IOException {
-
-        closeFile(getServiceInterfaceJavaFileHandle(), isErrorOccurred);
-
-        closeFile(getRpcInterfaceTempFileHandle(), true);
-        closeFile(getRpcImplTempFileHandle(), true);
-        closeFile(getGetterInterfaceTempFileHandle(), true);
-        closeFile(getSetterInterfaceTempFileHandle(), true);
-        closeFile(getSetterImplTempFileHandle(), true);
-
-        super.freeTemporaryResources(isErrorOccurred);
-
+        closeFile(serviceInterfaceJavaFileHandle, errorOccurred);
+        closeFile(rpcInterfaceTempFileHandle);
+        closeFile(rpcImplTempFileHandle);
+        closeFile(getGetterInterfaceTempFileHandle());
+        closeFile(getSetterInterfaceTempFileHandle());
+        closeFile(getSetterImplTempFileHandle());
+        super.freeTemporaryResources(errorOccurred);
     }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
index 7891b08..ed37a36 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
@@ -16,10 +16,6 @@
 
 package org.onosproject.yangutils.translator.tojava;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
 import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
 import org.onosproject.yangutils.datamodel.YangAtomicPath;
 import org.onosproject.yangutils.datamodel.YangAugment;
@@ -38,11 +34,22 @@
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModuleTranslator;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.isRpcChildNodePresent;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.addCurNodeInfoInParentTempFile;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_PARENT_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_TRANSLATION_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getBeanFiles;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsg;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsgForCodeGenerator;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
@@ -54,145 +61,156 @@
  */
 public final class YangJavaModelUtils {
 
-    /**
-     * Creates an instance of YANG java model utility.
-     */
+    // No instantiation.
     private YangJavaModelUtils() {
     }
 
     /**
      * Updates YANG java file package information.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
-     * @param yangPluginConfig      YANG plugin config
+     * @param info   YANG java file info node
+     * @param config YANG plugin config
      * @throws IOException IO operations fails
      */
-    public static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-                                         YangPluginConfig yangPluginConfig)
+    public static void updatePackageInfo(JavaCodeGeneratorInfo info,
+                                         YangPluginConfig config)
             throws IOException {
-        if (javaCodeGeneratorInfo instanceof YangJavaAugmentTranslator) {
-            updatePackageForAugmentInfo(javaCodeGeneratorInfo, yangPluginConfig);
+
+        JavaFileInfoTranslator translator = info.getJavaFileInfo();
+
+        if (info instanceof YangJavaAugmentTranslator) {
+            updatePackageForAugmentInfo(info, config);
         } else {
-            javaCodeGeneratorInfo.getJavaFileInfo()
-                    .setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
-                                              yangPluginConfig.getConflictResolver()));
-            javaCodeGeneratorInfo.getJavaFileInfo().setJavaAttributeName(javaCodeGeneratorInfo
-                                                                                 .getJavaFileInfo().getJavaName());
-            javaCodeGeneratorInfo.getJavaFileInfo().setPackage(getCurNodePackage((YangNode) javaCodeGeneratorInfo));
+            translator.setJavaName(getCamelCase(((YangNode) info).getName(),
+                                                config.getConflictResolver()));
+            translator.setJavaAttributeName(info.getJavaFileInfo()
+                                                    .getJavaName());
+            translator.setPackage(getCurNodePackage((YangNode) info));
         }
-        javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
-                getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
-
-        javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPluginConfig.getCodeGenDir());
-        javaCodeGeneratorInfo.getJavaFileInfo().setPluginConfig(yangPluginConfig);
-
+        updateCommonPackageInfo(translator, info, config);
     }
 
     /**
      * Updates YANG java file package information.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
-     * @param yangPluginConfig      YANG plugin config
+     * @param info   YANG java file info node
+     * @param config YANG plugin config
      * @throws IOException IO operations fails
      */
-    private static void updatePackageForAugmentInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-                                                    YangPluginConfig yangPluginConfig)
+    private static void updatePackageForAugmentInfo(JavaCodeGeneratorInfo info,
+                                                    YangPluginConfig config)
             throws IOException {
-        javaCodeGeneratorInfo.getJavaFileInfo()
-                .setJavaName(getAugmentClassName((YangJavaAugmentTranslator) javaCodeGeneratorInfo,
-                                                 yangPluginConfig));
-        javaCodeGeneratorInfo.getJavaFileInfo().setPackage(
-                getAugmentsNodePackage((YangNode) javaCodeGeneratorInfo, yangPluginConfig));
-        javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
-                getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
-        javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPluginConfig.getCodeGenDir());
-        javaCodeGeneratorInfo.getJavaFileInfo().setPluginConfig(yangPluginConfig);
+
+        JavaFileInfoTranslator translator = info.getJavaFileInfo();
+
+        translator.setJavaName(getAugmentClassName(
+                (YangJavaAugmentTranslator) info, config));
+        translator.setPackage(getAugmentsNodePackage((YangNode) info, config));
+        updateCommonPackageInfo(translator, info, config);
     }
 
     /**
      * Returns package for augment node.
      *
-     * @param yangNode         augment node
-     * @param yangPluginConfig plugin configurations
+     * @param yangNode augment node
+     * @param config   plugin configurations
      * @return package for augment node
      */
-    private static String getAugmentsNodePackage(YangNode yangNode, YangPluginConfig yangPluginConfig) {
+    private static String getAugmentsNodePackage(YangNode yangNode,
+                                                 YangPluginConfig config) {
         YangAugment augment = (YangAugment) yangNode;
         StringBuilder augmentPkg = new StringBuilder();
         augmentPkg.append(getCurNodePackage(augment));
 
-        String pkg = PERIOD;
+        StringBuilder pkg = new StringBuilder();
+        pkg.append(PERIOD);
         for (YangAtomicPath atomicPath : augment.getTargetNode()) {
-            pkg = pkg + getCamelCase(atomicPath.getNodeIdentifier().getName(), yangPluginConfig.getConflictResolver())
-                    + PERIOD;
+            pkg.append(getCamelCase(atomicPath.getNodeIdentifier().getName(),
+                                    config.getConflictResolver()))
+                    .append(PERIOD);
         }
-        pkg = trimAtLast(pkg, PERIOD);
-        augmentPkg.append(pkg.toLowerCase());
+        augmentPkg.append(trimAtLast(pkg.toString(), PERIOD).toLowerCase());
         return augmentPkg.toString();
     }
 
     /**
      * Updates YANG java file package information for specified package.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
-     * @param yangPlugin            YANG plugin config
-     * @throws IOException IO operations fails
+     * @param info   YANG java file info node
+     * @param config YANG plugin config
      */
-    private static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin,
-                                          String pkg)
-            throws IOException {
-        javaCodeGeneratorInfo.getJavaFileInfo()
-                .setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
-                                          yangPlugin.getConflictResolver()));
-        javaCodeGeneratorInfo.getJavaFileInfo().setPackage(pkg);
-        javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
-                getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
-        javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getCodeGenDir());
-        javaCodeGeneratorInfo.getJavaFileInfo().setPluginConfig(yangPlugin);
+    private static void updatePackageInfo(JavaCodeGeneratorInfo info,
+                                          YangPluginConfig config,
+                                          String pkg) {
+
+        JavaFileInfoTranslator translator = info.getJavaFileInfo();
+        translator.setJavaName(getCamelCase(((YangNode) info).getName(),
+                                            config.getConflictResolver()));
+        translator.setPackage(pkg);
+        updateCommonPackageInfo(translator, info, config);
+    }
+
+    /**
+     * Updates common package information.
+     *
+     * @param translator JAVA file info translator
+     * @param info       YANG java file info node
+     * @param config     YANG plugin config
+     */
+    private static void updateCommonPackageInfo(JavaFileInfoTranslator translator,
+                                                JavaCodeGeneratorInfo info,
+                                                YangPluginConfig config) {
+        translator.setPackageFilePath(getPackageDirPathFromJavaJPackage(
+                info.getJavaFileInfo().getPackage()));
+        translator.setBaseCodeGenPath(config.getCodeGenDir());
+        translator.setPluginConfig(config);
     }
 
     /**
      * Updates temporary java code fragment files.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
+     * @param info YANG java file info node
      * @throws IOException IO operations fails
      */
-    private static void createTempFragmentFile(JavaCodeGeneratorInfo javaCodeGeneratorInfo)
+    private static void createTempFragmentFile(JavaCodeGeneratorInfo info)
             throws IOException {
-        javaCodeGeneratorInfo.setTempJavaCodeFragmentFiles(
-                new TempJavaCodeFragmentFiles(javaCodeGeneratorInfo.getJavaFileInfo()));
+        info.setTempJavaCodeFragmentFiles(
+                new TempJavaCodeFragmentFiles(info.getJavaFileInfo()));
     }
 
     /**
      * Updates leaf information in temporary java code fragment files.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
+     * @param info YANG java file info node
      * @throws IOException IO operations fails
      */
-    private static void updateTempFragmentFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-                                                YangPluginConfig yangPluginConfig)
+    private static void updateTempFragmentFiles(JavaCodeGeneratorInfo info,
+                                                YangPluginConfig config)
             throws IOException {
 
-        if (javaCodeGeneratorInfo instanceof RpcNotificationContainer) {
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().setRooNode(true);
+        TempJavaCodeFragmentFiles translator =
+                info.getTempJavaCodeFragmentFiles();
+
+        if (info instanceof RpcNotificationContainer) {
+            getBeanFiles(info).setRootNode(true);
             /*
              * Module / sub module node code generation.
              */
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
-                    .getServiceTempFiles().addCurNodeLeavesInfoToTempFiles(
-                    (YangNode) javaCodeGeneratorInfo, yangPluginConfig);
-            if (javaCodeGeneratorInfo instanceof YangJavaModuleTranslator) {
-                if (!((YangJavaModuleTranslator) javaCodeGeneratorInfo).getNotificationNodes().isEmpty()) {
-                    updateNotificationNodeInfo(javaCodeGeneratorInfo, yangPluginConfig);
+            translator.getServiceTempFiles()
+                    .addCurNodeLeavesInfoToTempFiles((YangNode) info, config);
+            if (info instanceof YangJavaModuleTranslator) {
+                if (!((YangJavaModuleTranslator) info).getNotificationNodes()
+                        .isEmpty()) {
+                    updateNotificationNodeInfo(info, config);
                 }
-            } else if (javaCodeGeneratorInfo instanceof YangJavaSubModuleTranslator) {
-                if (!((YangJavaSubModuleTranslator) javaCodeGeneratorInfo).getNotificationNodes().isEmpty()) {
-                    updateNotificationNodeInfo(javaCodeGeneratorInfo, yangPluginConfig);
+            } else if (info instanceof YangJavaSubModuleTranslator) {
+                if (!((YangJavaSubModuleTranslator) info).getNotificationNodes()
+                        .isEmpty()) {
+                    updateNotificationNodeInfo(info, config);
                 }
             }
-
         }
-        if (javaCodeGeneratorInfo instanceof YangLeavesHolder) {
+        if (info instanceof YangLeavesHolder) {
             /*
              * Container
              * Case
@@ -202,155 +220,157 @@
              * Notification
              * Output
              */
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
-                    .getBeanTempFiles().addCurNodeLeavesInfoToTempFiles(
-                    (YangNode) javaCodeGeneratorInfo, yangPluginConfig);
-        } else if (javaCodeGeneratorInfo instanceof YangTypeHolder) {
+            getBeanFiles(info).addCurNodeLeavesInfoToTempFiles((YangNode) info,
+                                                               config);
+
+            // Add operation type as an attribute.
+            getBeanFiles(info).addOperationTypeToTempFiles((YangNode) info,
+                                                           config);
+        } else if (info instanceof YangTypeHolder) {
             /*
              * Typedef
              * Union
              */
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
-                    .addTypeInfoToTempFiles((YangTypeHolder) javaCodeGeneratorInfo, yangPluginConfig);
-        } else if (javaCodeGeneratorInfo instanceof YangJavaEnumerationTranslator) {
+            translator.addTypeInfoToTempFiles((YangTypeHolder) info, config);
+        } else if (info instanceof YangJavaEnumerationTranslator) {
             /*
              * Enumeration
              */
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getEnumerationTempFiles()
-                    .addEnumAttributeToTempFiles((YangNode) javaCodeGeneratorInfo, yangPluginConfig);
-
-        } else if (javaCodeGeneratorInfo instanceof YangChoice) {
+            translator.getEnumerationTempFiles()
+                    .addEnumAttributeToTempFiles((YangNode) info, config);
+        } else if (info instanceof YangChoice) {
             /*Do nothing, only the interface needs to be generated*/
         } else {
-            throw new TranslatorException("Unsupported Node Translation "
-                                                  + javaCodeGeneratorInfo.getLineNumber() + " at " +
-                                                  javaCodeGeneratorInfo.getCharPosition()
-                                                  + " in " + javaCodeGeneratorInfo.getFileName());
+            throw new TranslatorException(
+                    getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+                                                info));
         }
     }
 
     /**
      * Process generate code entry of YANG node.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
-     * @param yangPluginConfig      plugin configurations
+     * @param info   YANG java file info node
+     * @param config plugin configurations
      * @throws IOException IO operations fails
      */
-    private static void generateTempFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-                                          YangPluginConfig yangPluginConfig)
+    private static void generateTempFiles(JavaCodeGeneratorInfo info,
+                                          YangPluginConfig config)
             throws IOException {
-        if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("translation is not supported for the node "
-                                                  + javaCodeGeneratorInfo.getLineNumber() + " at " +
-                                                  javaCodeGeneratorInfo.getCharPosition()
-                                                  + " in " + javaCodeGeneratorInfo.getFileName());
+        if (!(info instanceof YangNode)) {
+            throw new TranslatorException(
+                    getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+                                                info));
         }
-        createTempFragmentFile(javaCodeGeneratorInfo);
-        updateTempFragmentFiles(javaCodeGeneratorInfo, yangPluginConfig);
-
+        createTempFragmentFile(info);
+        updateTempFragmentFiles(info, config);
     }
 
     /**
      * Updates notification node info in service temporary file.
      *
-     * @param javaCodeGeneratorInfo java code generator info
-     * @param yangPluginConfig      plugin configurations
+     * @param info   java code generator info
+     * @param config plugin configurations
      * @throws IOException when fails to do IO operations
      */
-    private static void updateNotificationNodeInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-                                                   YangPluginConfig yangPluginConfig)
+    private static void updateNotificationNodeInfo(JavaCodeGeneratorInfo info,
+                                                   YangPluginConfig config)
             throws IOException {
-        if (javaCodeGeneratorInfo instanceof YangJavaModuleTranslator) {
-            for (YangNode notification : ((YangJavaModuleTranslator) javaCodeGeneratorInfo).getNotificationNodes()) {
-                javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
-                        .getEventFragmentFiles()
-                        .addJavaSnippetOfEvent(notification, yangPluginConfig);
+        TempJavaCodeFragmentFiles translator =
+                info.getTempJavaCodeFragmentFiles();
+        if (info instanceof YangJavaModuleTranslator) {
+            for (YangNode notification : ((YangJavaModuleTranslator) info)
+                    .getNotificationNodes()) {
+                translator.getEventFragmentFiles()
+                        .addJavaSnippetOfEvent(notification, config);
             }
         }
-        if (javaCodeGeneratorInfo instanceof YangJavaSubModuleTranslator) {
-            for (YangNode notification : ((YangJavaSubModuleTranslator) javaCodeGeneratorInfo)
+        if (info instanceof YangJavaSubModuleTranslator) {
+            for (YangNode notification : ((YangJavaSubModuleTranslator) info)
                     .getNotificationNodes()) {
-                javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
-                        .getEventFragmentFiles()
-                        .addJavaSnippetOfEvent(notification, yangPluginConfig);
+                translator.getEventFragmentFiles()
+                        .addJavaSnippetOfEvent(notification, config);
             }
         }
     }
 
     /**
-     * Generates code for the current ata model node and adds itself as an attribute in the parent.
+     * Generates code for the current ata model node and adds itself as an
+     * attribute in the parent.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
-     * @param yangPlugin            YANG plugin config
-     * @param isMultiInstance       flag to indicate whether it's a list
+     * @param info            YANG java file info node
+     * @param config          YANG plugin config
+     * @param isMultiInstance flag to indicate whether it's a list
      * @throws IOException IO operations fails
      */
-    public static void generateCodeAndUpdateInParent(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-                                                     YangPluginConfig yangPlugin, boolean isMultiInstance)
+    public static void generateCodeAndUpdateInParent(JavaCodeGeneratorInfo info,
+                                                     YangPluginConfig config,
+                                                     boolean isMultiInstance)
             throws IOException {
-        if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("Invalid node for translation " +
-                                                  javaCodeGeneratorInfo.getLineNumber() + " at " +
-                                                  javaCodeGeneratorInfo.getCharPosition()
-                                                  + " in " + javaCodeGeneratorInfo.getFileName());
+        if (!(info instanceof YangNode)) {
+            throw new TranslatorException(
+                    getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+                                                info));
         }
 
         /*
          * Generate the Java files corresponding to the current node.
          */
-        generateCodeOfAugmentableNode(javaCodeGeneratorInfo, yangPlugin);
+        generateCodeOfAugmentableNode(info, config);
 
         /*
          * Update the current nodes info in its parent nodes generated files.
          */
-        addCurNodeInfoInParentTempFile((YangNode) javaCodeGeneratorInfo, isMultiInstance, yangPlugin);
+        addCurNodeInfoInParentTempFile((YangNode) info, isMultiInstance,
+                                       config);
     }
 
     /**
-     * Generates code for the current data model node and adds support for it to be augmented.
+     * Generates code for the current data model node and adds support for it to
+     * be augmented.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
-     * @param yangPlugin            YANG plugin config
+     * @param info   YANG java file info node
+     * @param config YANG plugin config
      * @throws IOException IO operations fails
      */
-    public static void generateCodeOfAugmentableNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-                                                     YangPluginConfig yangPlugin)
+    public static void generateCodeOfAugmentableNode(JavaCodeGeneratorInfo info,
+                                                     YangPluginConfig config)
             throws IOException {
-        if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("invalid node for translation " +
-                                                  javaCodeGeneratorInfo.getLineNumber() + " at " +
-                                                  javaCodeGeneratorInfo.getCharPosition()
-                                                  + " in " + javaCodeGeneratorInfo.getFileName());
+        if (!(info instanceof YangNode)) {
+            throw new TranslatorException(
+                    getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+                                                info));
         }
 
-        generateCodeOfNode(javaCodeGeneratorInfo, yangPlugin);
-        TempJavaCodeFragmentFiles tempJavaCodeFragmentFiles = javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles();
+        generateCodeOfNode(info, config);
+        TempJavaCodeFragmentFiles tempFiles =
+                info.getTempJavaCodeFragmentFiles();
 
-        if (javaCodeGeneratorInfo instanceof YangCase) {
-            YangNode parent = ((YangCase) javaCodeGeneratorInfo).getParent();
-            JavaQualifiedTypeInfoTranslator parentsInfo = getQualifierInfoForCasesParent(parent, yangPlugin);
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
-                    .addToExtendsList(parentsInfo, (YangNode) javaCodeGeneratorInfo,
-                                      tempJavaCodeFragmentFiles.getBeanTempFiles());
+        if (info instanceof YangCase) {
+            YangNode parent = ((YangCase) info).getParent();
+            JavaQualifiedTypeInfoTranslator typeInfo =
+                    getQualifierInfoForCasesParent(parent, config);
+            getBeanFiles(info).getJavaExtendsListHolder()
+                    .addToExtendsList(typeInfo, (YangNode) info,
+                                      tempFiles.getBeanTempFiles());
 
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles()
-                    .addParentInfoInCurNodeTempFile((YangNode) javaCodeGeneratorInfo, yangPlugin);
-
+            getBeanFiles(info).addParentInfoInCurNodeTempFile((YangNode) info,
+                                                              config);
         }
     }
 
     /**
      * Returns cases parent's qualified info.
      *
-     * @param parent           parent node
-     * @param yangPluginConfig plugin configuration
+     * @param parent parent node
+     * @param config plugin configuration
      * @return cases parent's qualified info
      */
-    public static JavaQualifiedTypeInfoTranslator getQualifierInfoForCasesParent(YangNode parent,
-                                                                                 YangPluginConfig yangPluginConfig) {
+    public static JavaQualifiedTypeInfoTranslator
+    getQualifierInfoForCasesParent(YangNode parent,
+                                   YangPluginConfig config) {
         String parentName;
         String parentPkg;
-        JavaQualifiedTypeInfoTranslator parentsInfo = new JavaQualifiedTypeInfoTranslator();
         JavaFileInfoTranslator parentInfo;
         if (parent instanceof YangChoice) {
             parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
@@ -362,59 +382,60 @@
             parentName = getCapitalCase(parentInfo.getJavaName());
             parentPkg = parentInfo.getPackage();
         } else {
-            parentName = getCapitalCase(getCamelCase(parent.getName(), yangPluginConfig.getConflictResolver()));
-            parentPkg = getNodesPackage(parent, yangPluginConfig);
+            parentName = getCapitalCase(getCamelCase(parent.getName(),
+                                                     config.getConflictResolver()));
+            parentPkg = getNodesPackage(parent, config);
         }
-        parentsInfo.setClassInfo(parentName);
-        parentsInfo.setPkgInfo(parentPkg);
-        return parentsInfo;
-
+        JavaQualifiedTypeInfoTranslator qualifiedTypeInfo =
+                new JavaQualifiedTypeInfoTranslator();
+        qualifiedTypeInfo.setClassInfo(parentName);
+        qualifiedTypeInfo.setPkgInfo(parentPkg);
+        return qualifiedTypeInfo;
     }
 
     /**
      * Generates code for the current data model node.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
-     * @param yangPluginConfig      YANG plugin config
+     * @param info   YANG java file info node
+     * @param config YANG plugin config
      * @throws IOException IO operations fails
      */
-    public static void generateCodeOfNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-                                          YangPluginConfig yangPluginConfig)
+    public static void generateCodeOfNode(JavaCodeGeneratorInfo info,
+                                          YangPluginConfig config)
             throws IOException {
-        if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("invalid node for translation "
-                                                  + javaCodeGeneratorInfo.getLineNumber() + " at " +
-                                                  javaCodeGeneratorInfo.getCharPosition()
-                                                  + " in " + javaCodeGeneratorInfo.getFileName());
+        if (!(info instanceof YangNode)) {
+            throw new TranslatorException(
+                    getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+                                                info));
         }
-        updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig);
-        generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
+        updatePackageInfo(info, config);
+        generateTempFiles(info, config);
     }
 
     /**
      * Generates code for the root module/sub-module node.
      *
-     * @param javaCodeGeneratorInfo YANG java file info node
-     * @param yangPluginConfig      YANG plugin config
-     * @param rootPkg               package of the root node
+     * @param info    YANG java file info node
+     * @param config  YANG plugin config
+     * @param rootPkg package of the root node
      * @throws IOException IO operations fails
      */
-    public static void generateCodeOfRootNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
-                                              YangPluginConfig yangPluginConfig, String rootPkg)
+    public static void generateCodeOfRootNode(JavaCodeGeneratorInfo info,
+                                              YangPluginConfig config,
+                                              String rootPkg)
             throws IOException {
-        if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("invalid node for translation " + javaCodeGeneratorInfo.getLineNumber()
-                                                  + " at " +
-                                                  javaCodeGeneratorInfo.getCharPosition()
-                                                  + " in " + javaCodeGeneratorInfo.getFileName());
+        if (!(info instanceof YangNode)) {
+            throw new TranslatorException(
+                    getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+                                                info));
         }
-        updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig, rootPkg);
+        updatePackageInfo(info, config, rootPkg);
 
-        if (isRpcChildNodePresent((YangNode) javaCodeGeneratorInfo)) {
-            javaCodeGeneratorInfo.getJavaFileInfo().addGeneratedFileTypes(GENERATE_SERVICE_AND_MANAGER);
+        if (isRpcChildNodePresent((YangNode) info)) {
+            info.getJavaFileInfo()
+                    .addGeneratedFileTypes(GENERATE_SERVICE_AND_MANAGER);
         }
-
-        generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
+        generateTempFiles(info, config);
     }
 
     /**
@@ -423,28 +444,23 @@
      * @param curNode current java node whose package string needs to be set
      * @return returns the root package string
      */
-    public static String getCurNodePackage(YangNode curNode) {
+    public static String getCurNodePackage(YangNode curNode)
+            throws TranslatorException {
 
         String pkg;
-        if (!(curNode instanceof JavaFileInfoContainer)
-                || curNode.getParent() == null) {
-            throw new TranslatorException("missing parent node to get current node's package " +
-                                                  curNode.getName() + " in " +
-                                                  curNode.getLineNumber() + " at " +
-                                                  curNode.getCharPosition()
-                                                  + " in " + curNode.getFileName());
+        if (!(curNode instanceof JavaFileInfoContainer) ||
+                curNode.getParent() == null) {
+            throw new TranslatorException(getErrorMsg(INVALID_NODE, curNode));
         }
 
         YangNode parentNode = DataModelUtils.getParentNodeInGenCode(curNode);
         if (!(parentNode instanceof JavaFileInfoContainer)) {
-            throw new TranslatorException("missing parent java node to get current node's package " +
-                                                  curNode.getName() + " in " +
-                                                  curNode.getLineNumber() + " at " +
-                                                  curNode.getCharPosition()
-                                                  + " in " + curNode.getFileName());
+            throw new TranslatorException(getErrorMsg(INVALID_PARENT_NODE,
+                                                      curNode));
         }
-        JavaFileInfoTranslator parentJavaFileHandle = ((JavaFileInfoContainer) parentNode).getJavaFileInfo();
-        pkg = parentJavaFileHandle.getPackage() + PERIOD + parentJavaFileHandle.getJavaName();
+        JavaFileInfoTranslator handle =
+                ((JavaFileInfoContainer) parentNode).getJavaFileInfo();
+        pkg = handle.getPackage() + PERIOD + handle.getJavaName();
         return pkg.toLowerCase();
     }
 
@@ -455,74 +471,80 @@
      * @return true if root node contains any data node
      */
     public static boolean isRootNodesCodeGenRequired(YangNode node) {
-        YangLeavesHolder holder = (YangLeavesHolder) node;
-
-        if (holder.getListOfLeaf().isEmpty()) {
-            if (holder.getListOfLeafList().isEmpty()) {
-                YangNode tempNode = node.getChild();
-                if (tempNode == null) {
-                    return false;
-                }
-                while (tempNode != null) {
-                    if (!(tempNode instanceof YangTranslatorOperatorNode)) {
-                        return true;
-                    }
-                    tempNode = tempNode.getNextSibling();
-                }
-                return false;
-            } else {
-                return true;
-            }
-        } else {
-            return true;
-        }
+        return isNodeCodeGenRequired(node, true);
     }
 
     /**
      * Returns true if get/set method of root node are required.
      *
-     * @param curNode root node
+     * @param node root node
      * @return true if get/set method of root node are required
      */
-    public static boolean isGetSetOfRootNodeRequired(YangNode curNode) {
-        YangLeavesHolder holder = (YangLeavesHolder) curNode;
+    public static boolean isGetSetOfRootNodeRequired(YangNode node) {
+        return isNodeCodeGenRequired(node, false);
+    }
 
-        if (holder.getListOfLeaf().isEmpty()) {
-            if (holder.getListOfLeafList().isEmpty()) {
-                curNode = curNode.getChild();
-                if (curNode == null) {
-                    return false;
-                }
-                while (curNode != null) {
-                    if (!(curNode instanceof YangAugment)) {
-                        return true;
-                    }
-                    curNode = curNode.getNextSibling();
-                }
-                return false;
-            } else {
-                return true;
-            }
-        } else {
+    /**
+     * Returns true if either get/set method of root node are required or root
+     * node contains any data node. This check is done depending on the
+     * boolean parameter indicating whether check to be performed for root
+     * node code generation or get/set method generation.
+     *
+     * @param node        root node
+     * @param rootNodeGen flag indicating check type
+     * @return true if check pass, false otherwise
+     */
+    public static boolean isNodeCodeGenRequired(YangNode node,
+                                                boolean rootNodeGen) {
+        YangLeavesHolder holder = (YangLeavesHolder) node;
+
+        if (!holder.getListOfLeaf().isEmpty()) {
             return true;
         }
+        if (!holder.getListOfLeafList().isEmpty()) {
+            return true;
+        }
+        node = node.getChild();
+        if (node == null) {
+            return false;
+        }
+
+        if (rootNodeGen) {
+            while (node != null) {
+                if (!(node instanceof YangTranslatorOperatorNode)) {
+                    return true;
+                }
+                node = node.getNextSibling();
+            }
+            return false;
+        }
+        while (node != null) {
+            if (!(node instanceof YangAugment)) {
+                return true;
+            }
+            node = node.getNextSibling();
+        }
+        return false;
     }
 
     /**
      * Returns nodes package.
      *
-     * @param node             YANG node
-     * @param yangPluginConfig plugin config
+     * @param node   YANG node
+     * @param config plugin config
      * @return java package
      */
-    public static String getNodesPackage(YangNode node, YangPluginConfig yangPluginConfig) {
+    public static String getNodesPackage(YangNode node,
+                                         YangPluginConfig config) {
 
         List<String> clsInfo = new ArrayList<>();
         while (node.getParent() != null) {
             if (node instanceof YangJavaAugmentTranslator) {
-                clsInfo.add(getAugmentClassName((YangAugment) node, yangPluginConfig));
+                clsInfo.add(getAugmentClassName((YangAugment) node,
+                                                config));
             } else {
-                clsInfo.add(getCamelCase(node.getName(), yangPluginConfig.getConflictResolver()));
+                clsInfo.add(getCamelCase(node.getName(), config
+                        .getConflictResolver()));
             }
             node = node.getParent();
         }
@@ -530,41 +552,44 @@
         StringBuilder pkg = new StringBuilder();
         if (node instanceof YangJavaModuleTranslator) {
             YangJavaModuleTranslator module = (YangJavaModuleTranslator) node;
-            pkg.append(getRootPackage(module.getVersion(), module.getNameSpace(), module
-                    .getRevision(), yangPluginConfig.getConflictResolver()));
+            pkg.append(getRootPackage(module.getVersion(), module.getNameSpace(),
+                                      module.getRevision(),
+                                      config.getConflictResolver()));
         } else if (node instanceof YangJavaSubModuleTranslator) {
-            YangJavaSubModuleTranslator subModule = (YangJavaSubModuleTranslator) node;
+            YangJavaSubModuleTranslator subModule =
+                    (YangJavaSubModuleTranslator) node;
             pkg.append(getRootPackage(subModule.getVersion(),
                                       subModule.getNameSpaceFromModule(),
-                                      subModule.getRevision(), yangPluginConfig.getConflictResolver()));
+                                      subModule.getRevision(),
+                                      config.getConflictResolver()));
         }
-        String concat = "";
-        for (int i = 1; i <= clsInfo.size(); i++) {
-            concat = concat + "." + clsInfo.get(clsInfo.size() - i);
+        pkg.append(EMPTY_STRING);
+        int size = clsInfo.size();
+        for (int i = size - 1; i >= 0; i--) {
+            pkg.append(PERIOD).append(clsInfo.get(i));
         }
-        pkg.append(concat);
         return pkg.toString().toLowerCase();
-
     }
 
     /**
      * Returns augment class name.
      *
-     * @param augment          YANG augment
-     * @param yangPluginConfig plugin configurations
+     * @param augment YANG augment
+     * @param config  plugin configurations
      * @return augment class name
      */
-    private static String getAugmentClassName(YangAugment augment, YangPluginConfig yangPluginConfig) {
-        YangNodeIdentifier yangNodeIdentifier = augment.getTargetNode().get(augment.getTargetNode().size() - 1)
-                .getNodeIdentifier();
-        String name = getCapitalCase(getCamelCase(yangNodeIdentifier.getName(), yangPluginConfig
-                .getConflictResolver()));
-        if (yangNodeIdentifier.getPrefix() != null) {
-            return AUGMENTED + getCapitalCase(getCamelCase(yangNodeIdentifier.getPrefix(), yangPluginConfig
-                    .getConflictResolver())) + name;
-        } else {
-            return AUGMENTED + name;
+    private static String getAugmentClassName(YangAugment augment,
+                                              YangPluginConfig config) {
+        YangNodeIdentifier identifier =
+                augment.getTargetNode().get(augment.getTargetNode().size() - 1)
+                        .getNodeIdentifier();
+        String name = getCapitalCase(getCamelCase(identifier.getName(),
+                                                  config.getConflictResolver()));
+        if (identifier.getPrefix() != null) {
+            return AUGMENTED + getCapitalCase(
+                    getCamelCase(identifier.getPrefix(),
+                                 config.getConflictResolver())) + name;
         }
+        return AUGMENTED + name;
     }
-
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
index 88a9070..daffc7a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
@@ -16,8 +16,6 @@
 
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
-import java.io.IOException;
-
 import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaNotification;
@@ -33,9 +31,15 @@
 import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
+import java.io.IOException;
+
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfAugmentableNode;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.FAIL_AT_ENTRY;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.FAIL_AT_EXIT;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsg;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
@@ -59,7 +63,6 @@
      * Creates an instance of java Notification.
      */
     public YangJavaNotificationTranslator() {
-        super();
         setJavaFileInfo(new JavaFileInfoTranslator());
         getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER);
     }
@@ -73,11 +76,7 @@
     public JavaFileInfoTranslator getJavaFileInfo() {
 
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node " +
-                                                  getName() + " in " +
-                                                  getLineNumber() + " at " +
-                                                  getCharPosition()
-                                                  + " in " + getFileName());
+            throw new TranslatorException(getErrorMsg(INVALID_NODE, this));
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -124,9 +123,12 @@
             throws TranslatorException {
 
         /*
-         * As part of the notification support the following files needs to be generated.
-         * 1) Subject of the notification(event), this is simple interface with builder class.
-         * 2) Event class extending "AbstractEvent" and defining event type enum.
+         * As part of the notification support the following files needs to be
+         * generated.
+         * 1) Subject of the notification(event), this is simple interface with
+         * builder class.
+         * 2) Event class extending "AbstractEvent" and defining event type
+         * enum.
          * 3) Event listener interface extending "EventListener".
          *
          * The manager class needs to extend the ListenerRegistry.
@@ -138,36 +140,34 @@
             generateCodeOfAugmentableNode(this, yangPlugin);
             addNotificationToExtendsList();
         } catch (IOException e) {
-            throw new TranslatorException(
-                    "Failed to prepare generate code entry for notification node " +
-                            getName() + " in " +
-                            getLineNumber() + " at " +
-                            getCharPosition()
-                            + " in " + getFileName() + " " + e.getLocalizedMessage());
+            throw new TranslatorException(getErrorMsg(FAIL_AT_ENTRY, this,
+                                                      e.getLocalizedMessage()));
         }
     }
 
     /*Adds current notification info to the extends list so its parents service*/
     private void addNotificationToExtendsList() {
         YangNode parent = getParent();
-        TempJavaServiceFragmentFiles tempJavaServiceFragmentFiles = ((TempJavaCodeFragmentFilesContainer) parent)
-                .getTempJavaCodeFragmentFiles()
-                .getServiceTempFiles();
-        JavaExtendsListHolder holder = tempJavaServiceFragmentFiles.getJavaExtendsListHolder();
-        JavaQualifiedTypeInfoTranslator event = new JavaQualifiedTypeInfoTranslator();
+        TempJavaServiceFragmentFiles tempFiles =
+                ((TempJavaCodeFragmentFilesContainer) parent).getTempJavaCodeFragmentFiles()
+                        .getServiceTempFiles();
+        JavaExtendsListHolder holder = tempFiles.getJavaExtendsListHolder();
+        JavaQualifiedTypeInfoTranslator event =
+                new JavaQualifiedTypeInfoTranslator();
 
         String parentInfo = getCapitalCase(((JavaFileInfoContainer) parent)
-                                                   .getJavaFileInfo().getJavaName());
+                                                   .getJavaFileInfo()
+                                                   .getJavaName());
         event.setClassInfo(parentInfo + EVENT_STRING);
         event.setPkgInfo(getJavaFileInfo().getPackage());
-        holder.addToExtendsList(event, parent, tempJavaServiceFragmentFiles);
+        holder.addToExtendsList(event, parent, tempFiles);
 
-        JavaQualifiedTypeInfoTranslator eventListener = new JavaQualifiedTypeInfoTranslator();
+        JavaQualifiedTypeInfoTranslator eventListener =
+                new JavaQualifiedTypeInfoTranslator();
 
         eventListener.setClassInfo(parentInfo + EVENT_LISTENER_STRING);
         eventListener.setPkgInfo(getJavaFileInfo().getPackage());
-        holder.addToExtendsList(eventListener, parent, tempJavaServiceFragmentFiles);
-
+        holder.addToExtendsList(eventListener, parent, tempFiles);
     }
 
     /**
@@ -177,36 +177,34 @@
     public void generateCodeExit()
             throws TranslatorException {
         try {
-            getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
+            getTempJavaCodeFragmentFiles().generateJavaFile(
+                    GENERATE_INTERFACE_WITH_BUILDER, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for notification node " +
-                                                  getName() + " in " +
-                                                  getLineNumber() + " at " +
-                                                  getCharPosition()
-                                                  + " in " + getFileName() + " " + e.getLocalizedMessage());
+            throw new TranslatorException(getErrorMsg(FAIL_AT_EXIT, this,
+                                                      e.getLocalizedMessage()));
         }
     }
 
     @Override
     public void setNameSpaceAndAddToParentSchemaMap() {
         // Get parent namespace.
-        if (this.getParent() != null) {
-            String nameSpace = this.getParent().getNameSpace();
+        if (getParent() != null) {
+            String nameSpace = getParent().getNameSpace();
             // Set namespace for self node.
             setNameSpace(nameSpace);
             // Process addition of leaf to the child schema map of parent.
             processAdditionOfSchemaNodeToParentMap(getName(), getNameSpace());
             // Obtain the notification name as per enum in notification.
-            String enumName = getEnumJavaAttribute(getJavaFileInfo().getJavaName()).toUpperCase();
+            String enumName = getEnumJavaAttribute(getName().toUpperCase());
 
-            ((RpcNotificationContainer) this.getParent()).addToNotificationEnumMap(enumName, this);
+            ((RpcNotificationContainer) getParent())
+                    .addToNotificationEnumMap(enumName, this);
 
         }
         /*
          * Check if node contains leaf/leaf-list, if yes add namespace for leaf
          * and leaf list.
          */
-        this.setLeafNameSpaceAndAddToParentSchemaMap();
-
+        setLeafNameSpaceAndAddToParentSchemaMap();
     }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index b47cc9c..3910a78 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -16,15 +16,18 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
-import java.util.List;
-
 import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
 import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
+import org.onosproject.yangutils.utils.UtilConstants.Operation;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
+import java.util.List;
+
+import static java.util.Collections.sort;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
 import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
 import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
@@ -79,16 +82,12 @@
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
 
-import static java.util.Collections.sort;
-
 /**
  * Represents utility class to generate the java snippet.
  */
 public final class JavaCodeSnippetGen {
 
-    /**
-     * Creates an instance of java code snippet gen.
-     */
+    // No instantiation.
     private JavaCodeSnippetGen() {
     }
 
@@ -106,84 +105,119 @@
     }
 
     /**
-     * Returns the textual java code information corresponding to the import list.
+     * Returns the textual java code information corresponding to the import
+     * list.
      *
      * @param importInfo import info
-     * @return the textual java code information corresponding to the import list
+     * @return the textual java code information corresponding to the import
+     * list
      */
     static String getImportText(JavaQualifiedTypeInfoTranslator importInfo) {
-        return IMPORT + importInfo.getPkgInfo() + PERIOD + importInfo.getClassInfo() + SEMI_COLAN + NEW_LINE;
+        return IMPORT + importInfo.getPkgInfo() + PERIOD +
+                importInfo.getClassInfo() + SEMI_COLAN + NEW_LINE;
     }
 
     /**
      * Returns the textual java code for attribute definition in class.
      *
-     * @param javaAttributeTypePkg Package of the attribute type
-     * @param javaAttributeType    java attribute type
-     * @param javaAttributeName    name of the attribute
-     * @param isList               is list attribute
-     * @param attributeAccessType  attribute access type
-     * @param compilerAnnotation   compiler annotation
+     * @param typePkg    Package of the attribute type
+     * @param attrType   java attribute type
+     * @param attrName   name of the attribute
+     * @param isList     is list attribute
+     * @param accessType attribute access type
+     * @param annotation compiler annotation
      * @return the textual java code for attribute definition in class
      */
-    public static String getJavaAttributeDefinition(String javaAttributeTypePkg, String javaAttributeType,
-                                                    String javaAttributeName, boolean isList,
-                                                    String attributeAccessType,
-                                                    YangCompilerAnnotation compilerAnnotation) {
-
-        String attributeDefinition = attributeAccessType + SPACE;
+    public static String getJavaAttributeDefinition(String typePkg,
+                                                    String attrType,
+                                                    String attrName,
+                                                    boolean isList,
+                                                    String accessType,
+                                                    YangCompilerAnnotation annotation) {
+        StringBuilder attrDef = new StringBuilder();
+        attrDef.append(accessType).append(SPACE);
 
         if (!isList) {
-            if (javaAttributeTypePkg != null) {
-                attributeDefinition = attributeDefinition + javaAttributeTypePkg + PERIOD;
+            if (typePkg != null) {
+                attrDef.append(typePkg).append(PERIOD);
             }
 
-            attributeDefinition = attributeDefinition + javaAttributeType + SPACE + javaAttributeName + SEMI_COLAN
-                    + NEW_LINE;
+            attrDef.append(attrType).append(SPACE)
+                    .append(attrName).append(SEMI_COLAN)
+                    .append(NEW_LINE);
         } else {
-            if (compilerAnnotation != null && compilerAnnotation.getYangAppDataStructure() != null) {
-                switch (compilerAnnotation.getYangAppDataStructure().getDataStructure()) {
-                    case QUEUE: {
-                        attributeDefinition = attributeDefinition + QUEUE + DIAMOND_OPEN_BRACKET;
-                        break;
-                    }
-                    case SET: {
-                        attributeDefinition = attributeDefinition + SET + DIAMOND_OPEN_BRACKET;
-                        break;
-                    }
-                    default: {
-                        attributeDefinition = attributeDefinition + LIST + DIAMOND_OPEN_BRACKET;
-                    }
-                }
-            } else {
-                attributeDefinition = attributeDefinition + LIST + DIAMOND_OPEN_BRACKET;
+            // Add starting definition.
+            addAttrStartDef(annotation, attrDef);
+
+            if (typePkg != null) {
+                attrDef.append(typePkg).append(PERIOD);
             }
 
-            if (javaAttributeTypePkg != null) {
-                attributeDefinition = attributeDefinition + javaAttributeTypePkg + PERIOD;
-            }
+            attrDef.append(attrType);
 
-            attributeDefinition = attributeDefinition + javaAttributeType;
-
-            if (compilerAnnotation != null && compilerAnnotation.getYangAppDataStructure() != null) {
-                switch (compilerAnnotation.getYangAppDataStructure().getDataStructure()) {
-                    default: {
-                        attributeDefinition = attributeDefinition + DIAMOND_CLOSE_BRACKET + SPACE
-                                + javaAttributeName + SEMI_COLAN + NEW_LINE;
-                    }
-                }
-            } else {
-                attributeDefinition = attributeDefinition + DIAMOND_CLOSE_BRACKET + SPACE
-                        + javaAttributeName + SPACE + EQUAL + SPACE + NEW + SPACE
-                        + ARRAY_LIST + SEMI_COLAN + NEW_LINE;
-            }
-
+            // Add ending definition.
+            addAttrEndDef(annotation, attrDef, attrName);
         }
-        return attributeDefinition;
+        return attrDef.toString();
     }
 
     /**
-     * Returns based on the file type and the YANG name of the file, generate the class / interface definition close.
+     * Adds starting attribute definition.
+     *
+     * @param annotation compiler annotation
+     * @param attrDef    JAVA attribute definition
+     */
+    private static void addAttrStartDef(YangCompilerAnnotation annotation,
+                                        StringBuilder attrDef) {
+        if (annotation != null &&
+                annotation.getYangAppDataStructure() != null) {
+            switch (annotation.getYangAppDataStructure().getDataStructure()) {
+                case QUEUE: {
+                    attrDef.append(QUEUE)
+                            .append(DIAMOND_OPEN_BRACKET);
+                    break;
+                }
+                case SET: {
+                    attrDef.append(SET)
+                            .append(DIAMOND_OPEN_BRACKET);
+                    break;
+                }
+                default: {
+                    attrDef.append(LIST)
+                            .append(DIAMOND_OPEN_BRACKET);
+                }
+            }
+        } else {
+            attrDef.append(LIST).append(DIAMOND_OPEN_BRACKET);
+        }
+    }
+
+    /**
+     * Adds ending attribute definition.
+     *
+     * @param annotation compiler annotation
+     * @param attrDef    JAVA attribute definition
+     * @param attrName   name of attribute
+     */
+    private static void addAttrEndDef(YangCompilerAnnotation annotation,
+                                      StringBuilder attrDef, String attrName) {
+        if (annotation != null &&
+                annotation.getYangAppDataStructure() != null) {
+            attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE)
+                    .append(attrName).append(SEMI_COLAN)
+                    .append(NEW_LINE);
+            // TODO refactor SEMI_COLAN, when refactoring in method generator.
+        } else {
+            attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE).append(attrName)
+                    .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
+                    .append(SPACE).append(ARRAY_LIST).append(SEMI_COLAN)
+                    .append(NEW_LINE);
+        }
+    }
+
+    /**
+     * Returns based on the file type and the YANG name of the file, generate
+     * the class / interface definition close.
      *
      * @return corresponding textual java code information
      */
@@ -200,25 +234,27 @@
      */
     public static String generateEnumAttributeString(String name, int value) {
         String enumName = getEnumJavaAttribute(name);
-        return NEW_LINE + enumJavaDocForInnerClass(name)
-                + EIGHT_SPACE_INDENTATION + enumName.toUpperCase() + OPEN_PARENTHESIS
-                + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
+        return NEW_LINE + enumJavaDocForInnerClass(name) +
+                EIGHT_SPACE_INDENTATION + enumName.toUpperCase() +
+                OPEN_PARENTHESIS + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
     }
 
     /**
      * Returns string for enum's attribute for enum class.
      *
-     * @param name         name of attribute
-     * @param value        value of the enum
-     * @param pluginConfig plugin configurations
+     * @param name   name of attribute
+     * @param value  value of the enum
+     * @param config plugin configurations
      * @return string for enum's attribute
      */
-    public static String generateEnumAttributeStringWithSchemaName(String name, int value, YangPluginConfig
-            pluginConfig) {
+    public static String generateEnumAttributeStringWithSchemaName(String name,
+                                                                   int value,
+                                                                   YangPluginConfig config) {
         String enumName = getEnumJavaAttribute(name);
-        return NEW_LINE + getJavaDoc(ENUM_ATTRIBUTE, name, false, pluginConfig, null)
-                + FOUR_SPACE_INDENTATION + enumName.toUpperCase() + OPEN_PARENTHESIS
-                + value + COMMA + SPACE + QUOTES + name + QUOTES + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
+        return NEW_LINE + getJavaDoc(ENUM_ATTRIBUTE, name, false, config, null) +
+                FOUR_SPACE_INDENTATION + enumName.toUpperCase() +
+                OPEN_PARENTHESIS + value + COMMA + SPACE + QUOTES + name +
+                QUOTES + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
     }
 
     /**
@@ -238,8 +274,8 @@
      * @return event enum start
      */
     static String getEventEnumTypeStart() {
-        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + TYPE + SPACE + OPEN_CURLY_BRACKET
-                + NEW_LINE;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + TYPE +
+                SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -250,16 +286,21 @@
      * @param operation add or remove
      * @param classInfo class info to be added to import list
      */
-    public static void addListenersImport(YangNode curNode, List<String> imports, boolean operation,
+    public static void addListenersImport(YangNode curNode,
+                                          List<String> imports,
+                                          Operation operation,
                                           String classInfo) {
         String thisImport;
-        TempJavaServiceFragmentFiles tempJavaServiceFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
-                .getTempJavaCodeFragmentFiles().getServiceTempFiles();
+        TempJavaServiceFragmentFiles tempFiles =
+                ((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles()
+                        .getServiceTempFiles();
         if (classInfo.equals(LISTENER_SERVICE)) {
-            thisImport = tempJavaServiceFragmentFiles.getJavaImportData().getListenerServiceImport();
+            thisImport = tempFiles.getJavaImportData()
+                    .getListenerServiceImport();
             performOperationOnImports(imports, thisImport, operation);
         } else {
-            thisImport = tempJavaServiceFragmentFiles.getJavaImportData().getListenerRegistryImport();
+            thisImport = tempFiles.getJavaImportData()
+                    .getListenerRegistryImport();
             performOperationOnImports(imports, thisImport, operation);
         }
     }
@@ -269,15 +310,21 @@
      *
      * @param imports   list of imports
      * @param curImport current import
-     * @param operation add or remove
+     * @param operation ADD or REMOVE
      * @return import list
      */
-    private static List<String> performOperationOnImports(List<String> imports, String curImport,
-                                                          boolean operation) {
-        if (operation) {
-            imports.add(curImport);
-        } else {
-            imports.remove(curImport);
+    private static List<String> performOperationOnImports(List<String> imports,
+                                                          String curImport,
+                                                          Operation operation) {
+        switch (operation) {
+            case ADD:
+                imports.add(curImport);
+                break;
+            case REMOVE:
+                imports.remove(curImport);
+                break;
+            default:
+                throw new TranslatorException("Invalid operation type");
         }
         sortImports(imports);
         return imports;
@@ -290,9 +337,10 @@
      * @return enum's attribute
      */
     static String getEnumsValueAttribute(String className) {
-        return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + INT + SPACE + getSmallCase(className)
-                + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + STRING_DATA_TYPE + SPACE +
-                SCHEMA_NAME + SEMI_COLAN + NEW_LINE;
+        return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + INT +
+                SPACE + getSmallCase(className) + SEMI_COLAN + NEW_LINE +
+                FOUR_SPACE_INDENTATION + PRIVATE + SPACE + STRING_DATA_TYPE +
+                SPACE + SCHEMA_NAME + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -301,11 +349,14 @@
      * @return attribute for augmentation
      */
     static String addAugmentationAttribute() {
-        return NEW_LINE + FOUR_SPACE_INDENTATION + PROTECTED + SPACE + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING
-                + DIAMOND_OPEN_BRACKET + QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING
-                + DIAMOND_CLOSE_BRACKET + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SPACE + EQUAL + SPACE +
-                NEW + SPACE + HASH_MAP + DIAMOND_OPEN_BRACKET + DIAMOND_CLOSE_BRACKET + OPEN_PARENTHESIS
-                + CLOSE_PARENTHESIS + SEMI_COLAN;
+        return NEW_LINE + FOUR_SPACE_INDENTATION + PROTECTED + SPACE + MAP +
+                DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
+                QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE +
+                OBJECT_STRING + DIAMOND_CLOSE_BRACKET + SPACE +
+                getSmallCase(YANG_AUGMENTED_INFO) + MAP + SPACE + EQUAL +
+                SPACE + NEW + SPACE + HASH_MAP + DIAMOND_OPEN_BRACKET +
+                DIAMOND_CLOSE_BRACKET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+                SEMI_COLAN;
     }
 
     /**
@@ -315,15 +366,16 @@
      * @param addFirst true if int need to be added fist.
      * @return attribute for int ranges
      */
-    static String addStaticAttributeIntRange(String modifier, boolean addFirst) {
+    static String addStaticAttributeIntRange(String modifier,
+                                             boolean addFirst) {
         if (addFirst) {
-            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + INT_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION +
-                    modifier +
+            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
+                    INT_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
                     SPACE + INT_MAX_RANGE_ATTR;
-        } else {
-            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + UINT_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION +
-                    modifier + SPACE + UINT_MAX_RANGE_ATTR;
         }
+        return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
+                UINT_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
+                SPACE + UINT_MAX_RANGE_ATTR;
     }
 
     /**
@@ -333,14 +385,16 @@
      * @param addFirst if need to be added first
      * @return attribute for long ranges
      */
-    static String addStaticAttributeLongRange(String modifier, boolean addFirst) {
+    static String addStaticAttributeLongRange(String modifier,
+                                              boolean addFirst) {
         if (addFirst) {
-            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + LONG_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION +
+            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
+                    LONG_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION +
                     modifier + SPACE + LONG_MAX_RANGE_ATTR;
-        } else {
-            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + ULONG_MIN_RANGE_ATTR +
-                    FOUR_SPACE_INDENTATION + modifier + SPACE + ULONG_MAX_RANGE_ATTR;
         }
+        return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
+                ULONG_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
+                SPACE + ULONG_MAX_RANGE_ATTR;
     }
 
     /**
@@ -350,15 +404,16 @@
      * @param addFirst if need to be added first
      * @return attribute for long ranges
      */
-    static String addStaticAttributeShortRange(String modifier, boolean addFirst) {
+    static String addStaticAttributeShortRange(String modifier,
+                                               boolean addFirst) {
         if (addFirst) {
-            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + SHORT_MIN_RANGE_ATTR +
-                    FOUR_SPACE_INDENTATION +
-                    modifier + SPACE + SHORT_MAX_RANGE_ATTR;
-        } else {
-            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + UINT8_MIN_RANGE_ATTR +
-                    FOUR_SPACE_INDENTATION + modifier + SPACE + UINT8_MAX_RANGE_ATTR;
+            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
+                    SHORT_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
+                    SPACE + SHORT_MAX_RANGE_ATTR;
         }
+        return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
+                UINT8_MIN_RANGE_ATTR + FOUR_SPACE_INDENTATION + modifier +
+                SPACE + UINT8_MAX_RANGE_ATTR;
     }
 
     /**
@@ -383,9 +438,10 @@
     }
 
     /**
-     * Returns operation type enum, leaf value set attribute and select leaf attribute.
+     * Returns operation type enum, leaf value set attribute and select leaf
+     * attribute.
      *
-     * @return operation type enum, leaf value set attribute and select leaf attribute.
+     * @return operation attributes for value and select leaf flags
      */
     static String getOperationAttributes() {
         return "    /**\n" +
@@ -401,23 +457,10 @@
     }
 
     /**
-     * Returns operation type enum, leaf value set attribute and select leaf attribute.
+     * Returns operation type enum, leaf value set attribute and select leaf
+     * attribute for constructor.
      *
-     * @return operation type enum, leaf value set attribute and select leaf attribute.
-     */
-    static String getOperationTypeAttr() {
-        return "\n    /**\n" +
-                "     * Specify the node specific operation in protocols like NETCONF.\n" +
-                "     * Applicable in protocol edit operation, will be ignored in query operation\n" +
-                "     */\n" +
-                "    private OnosYangNodeOperationType onosYangNodeOperationType;\n" +
-                "\n";
-    }
-
-    /**
-     * Returns operation type enum, leaf value set attribute and select leaf attribute for constructor.
-     *
-     * @return operation type enum, leaf value set attribute and select leaf attribute for constructor
+     * @return operation attributes for constructor
      */
     static String getOperationAttributeForConstructor() {
         return "        this.valueLeafFlags = builderObject.getValueLeafFlags();\n" +
@@ -425,18 +468,9 @@
     }
 
     /**
-     * Returns operation type enum, leaf value set attribute and select leaf attribute for constructor.
-     *
-     * @return operation type enum, leaf value set attribute and select leaf attribute for constructor
-     */
-    static String getOperationTypeForConstructor() {
-        return "        this.onosYangNodeOperationType = builderObject.onosYangNodeOperationType();\n";
-    }
-
-    /**
      * Returns attribute in constructor for yang augmented info map.
      *
-     * @return attribute in constructor for yang augmented info map
+     * @return augment info map
      */
     static String getYangAugmentedMapObjectForConstruct() {
         return "        this.yangAugmentedInfoMap = builderObject.yangAugmentedInfoMap();\n";
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index d3df0dc..6853ac9 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -16,11 +16,6 @@
 
 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.YangAugmentableNode;
 import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.datamodel.YangChoice;
@@ -43,8 +38,15 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaEventFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
+import org.onosproject.yangutils.utils.UtilConstants;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import static java.util.Collections.sort;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
@@ -90,11 +92,8 @@
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEventEnumTypeStart;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationAttributeForConstructor;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationAttributes;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeAttr;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeEnum;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeForConstructor;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen
-        .getYangAugmentedMapObjectForConstruct;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getYangAugmentedMapObjectForConstruct;
 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.MethodsGenerator.builderMethod;
@@ -110,7 +109,6 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethodClose;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethodSignature;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetter;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterForOperationType;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGettersForValueAndSelectLeaf;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodClose;
@@ -121,7 +119,6 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOperationAttributesGetters;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOverRideString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRangeValidatorMethodForUnion;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForOperationType;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForSelectLeaf;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterString;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodClose;
@@ -134,23 +131,21 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isSelectLeafSetInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.processSubtreeFilteringInterface;
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.setSelectLeafSetInterface;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getAugmentableSubTreeFiltering;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getProcessChildNodeSubtreeFiltering;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getProcessLeafListSubtreeFiltering;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getProcessLeafSubtreeFiltering;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getProcessSubTreeFilteringEnd;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getProcessSubtreeFilteringStart;
-import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator
-        .getProcessSubtreeFunctionBody;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getAugmentableSubTreeFiltering;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getProcessChildNodeSubtreeFiltering;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getProcessLeafListSubtreeFiltering;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getProcessLeafSubtreeFiltering;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getProcessSubTreeFilteringEnd;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getProcessSubtreeFilteringStart;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getProcessSubtreeFunctionBody;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.addDefaultConstructor;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getBeanFiles;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getTypeFiles;
 import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
 import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE;
 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;
@@ -158,12 +153,16 @@
 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.ENCODE_TO_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.ENUM_CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.EVENT_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_SUBJECT_NAME_SUFFIX;
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.GET_ENCODER;
+import static org.onosproject.yangutils.utils.UtilConstants.IMPL_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.INT;
+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.OPEN_PARENTHESIS;
@@ -173,12 +172,15 @@
 import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
 import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
 import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
+import static org.onosproject.yangutils.utils.UtilConstants.RPC_CLASS;
 import static org.onosproject.yangutils.utils.UtilConstants.SCHEMA_NAME;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_METHOD_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.TO;
+import static org.onosproject.yangutils.utils.UtilConstants.TYPEDEF_CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.UNION_CLASS;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
@@ -188,115 +190,105 @@
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.validateLineLength;
 
-import static java.util.Collections.sort;
-
 /**
  * Representation of java file generator.
  */
 public final class JavaFileGenerator {
 
+    // No instantiation
     private JavaFileGenerator() {
     }
 
     /**
      * Returns generated interface file for current node.
      *
-     * @param file          file
-     * @param imports       imports for the file
-     * @param curNode       current YANG node
-     * @param isAttrPresent if any attribute is present or not
+     * @param file        file
+     * @param imports     imports for the file
+     * @param curNode     current YANG node
+     * @param attrPresent if any attribute is present or not
      * @return interface file
      * @throws IOException when fails to write in file
      */
     public static File generateInterfaceFile(File file, List<String> imports,
                                              YangNode curNode,
-                                             boolean isAttrPresent)
+                                             boolean attrPresent)
             throws IOException {
 
-        JavaFileInfoTranslator javaFileInfo =
+        JavaFileInfoTranslator fileInfo =
                 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
 
         String path;
         if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
-            path = javaFileInfo.getPluginConfig().getCodeGenDir() +
-                    javaFileInfo.getPackageFilePath();
+            path = fileInfo.getPluginConfig().getCodeGenDir() +
+                    fileInfo.getPackageFilePath();
         } else {
-            path = javaFileInfo.getBaseCodeGenPath() +
-                    javaFileInfo.getPackageFilePath();
+            path = fileInfo.getBaseCodeGenPath() +
+                    fileInfo.getPackageFilePath();
         }
 
-        String className = getCapitalCase(javaFileInfo.getJavaName());
+        String className = getCapitalCase(fileInfo.getJavaName());
 
-        boolean isLeavesPresent;
+        boolean leavesPresent;
         YangLeavesHolder leavesHolder;
         if (curNode instanceof YangLeavesHolder) {
             leavesHolder = (YangLeavesHolder) curNode;
-            isLeavesPresent = leavesHolder.getListOfLeaf() != null &&
-                    !leavesHolder.getListOfLeaf().isEmpty()
-                    || leavesHolder.getListOfLeafList() != null &&
-                    !leavesHolder.getListOfLeafList().isEmpty();
+            leavesPresent = leavesPresent(leavesHolder);
         } else {
-            isLeavesPresent = false;
+            leavesPresent = false;
         }
 
         initiateJavaFileGeneration(file, INTERFACE_MASK, imports, curNode,
                                    className);
+
+        // Generate ENUM interface
+        insertDataIntoJavaFile(file, getOperationTypeEnum());
+
         List<String> methods = new ArrayList<>();
-        if (isAttrPresent) {
+        if (attrPresent) {
             // Add getter methods to interface file.
             try {
                 //Leaf identifier enum.
-                if (isLeavesPresent) {
+                if (leavesPresent) {
                     insertDataIntoJavaFile(file, NEW_LINE +
                             getInterfaceLeafIdEnumSignature(className) +
                             NEW_LINE +
-                            trimAtLast(replaceLast(getDataFromTempFileHandle(
-                                    LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK,
-                                    ((TempJavaCodeFragmentFilesContainer)
-                                            curNode)
-                                            .getTempJavaCodeFragmentFiles()
-                                            .getBeanTempFiles(), path),
-                                                   COMMA, SEMI_COLAN),
-                                       NEW_LINE) +
+                            trimAtLast(replaceLast(
+                                    getDataFromTempFileHandle(
+                                            LEAF_IDENTIFIER_ENUM_ATTRIBUTES_MASK,
+                                            getBeanFiles(curNode), path),
+                                    COMMA, SEMI_COLAN), NEW_LINE) +
                             NEW_LINE + NEW_LINE +
                             getInterfaceLeafIdEnumMethods());
                 }
 
                 //Getter methods.
-                insertDataIntoJavaFile(file, getDataFromTempFileHandle(
-                        GETTER_FOR_INTERFACE_MASK,
-                        ((TempJavaCodeFragmentFilesContainer) curNode)
-                                .getTempJavaCodeFragmentFiles()
-                                .getBeanTempFiles(), path));
+                insertDataIntoJavaFile(
+                        file, getDataFromTempFileHandle(
+                                GETTER_FOR_INTERFACE_MASK,
+                                getBeanFiles(curNode), path));
             } catch (IOException e) {
-                throw new IOException(
-                        "No data found in temporary java code fragment files " +
-                                "for " +
-                                className
-                                + " while interface file generation");
+                throw new IOException(getErrorMsg(className, INTERFACE));
             }
         }
 
         if (curNode instanceof YangAugmentableNode &&
                 !(curNode instanceof YangChoice)) {
             methods.add(getYangAugmentInfoInterface());
-            methods.add(getYangAugmentInfoMapInterface(
-                    javaFileInfo.getPluginConfig()));
+            methods.add(getYangAugmentInfoMapInterface(fileInfo.getPluginConfig()));
         }
 
         if (curNode instanceof YangCase) {
             YangNode caseParent = curNode.getParent();
             JavaQualifiedTypeInfo qualifiedTypeInfo =
                     getQualifierInfoForCasesParent(caseParent,
-                                                   javaFileInfo
-                                                           .getPluginConfig());
-            methods.add(NEW_LINE + processSubtreeFilteringInterface
-                    (qualifiedTypeInfo.getClassInfo()));
+                                                   fileInfo.getPluginConfig());
+            methods.add(NEW_LINE + processSubtreeFilteringInterface(
+                    qualifiedTypeInfo.getClassInfo()));
         } else {
             methods.add(NEW_LINE + processSubtreeFilteringInterface(className));
         }
 
-        if (isLeavesPresent) {
+        if (leavesPresent) {
             methods.add(NEW_LINE + isLeafValueSetInterface());
             methods.add(NEW_LINE + isSelectLeafSetInterface());
         }
@@ -304,85 +296,72 @@
             insertDataIntoJavaFile(file, method);
         }
         return file;
-
     }
 
     /**
      * Returns generated builder interface file for current node.
      *
-     * @param file          file
-     * @param curNode       current YANG node
-     * @param isAttrPresent if any attribute is present or not
+     * @param file        file
+     * @param curNode     current YANG node
+     * @param attrPresent if any attribute is present or not
      * @return builder interface file
      * @throws IOException when fails to write in file
      */
     public static File generateBuilderInterfaceFile(File file, YangNode curNode,
-                                                    boolean isAttrPresent)
+                                                    boolean attrPresent)
             throws IOException {
 
-        JavaFileInfoTranslator javaFileInfo =
+        JavaFileInfoTranslator fileInfo =
                 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
-        YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
+        YangPluginConfig pluginConfig = fileInfo.getPluginConfig();
 
-        boolean isLeavesPresent;
+        boolean leavesPresent;
         YangLeavesHolder leavesHolder;
         if (curNode instanceof YangLeavesHolder) {
             leavesHolder = (YangLeavesHolder) curNode;
-            isLeavesPresent = leavesHolder.getListOfLeaf() != null &&
-                    !leavesHolder.getListOfLeaf().isEmpty()
-                    || leavesHolder.getListOfLeafList() != null &&
-                    !leavesHolder.getListOfLeafList().isEmpty();
+            leavesPresent = leavesPresent(leavesHolder);
         } else {
-            isLeavesPresent = false;
+            leavesPresent = false;
         }
 
-        String className = getCapitalCase(javaFileInfo.getJavaName());
+        String className = getCapitalCase(fileInfo.getJavaName());
         String path;
         if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
-            path = javaFileInfo.getPluginConfig().getCodeGenDir() +
-                    javaFileInfo.getPackageFilePath();
+            path = fileInfo.getPluginConfig().getCodeGenDir() +
+                    fileInfo.getPackageFilePath();
         } else {
-            path = javaFileInfo.getBaseCodeGenPath() +
-                    javaFileInfo.getPackageFilePath();
+            path = fileInfo.getBaseCodeGenPath() +
+                    fileInfo.getPackageFilePath();
         }
 
         initiateJavaFileGeneration(file, BUILDER_INTERFACE_MASK, null, curNode,
                                    className);
         List<String> methods = new ArrayList<>();
-        if (isAttrPresent) {
+        if (attrPresent) {
             try {
 
                 //Getter methods.
-                methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(
-                        GETTER_FOR_INTERFACE_MASK,
-                        ((TempJavaCodeFragmentFilesContainer)
-                                curNode)
-                                .getTempJavaCodeFragmentFiles()
-                                .getBeanTempFiles(), path));
+                methods.add(FOUR_SPACE_INDENTATION +
+                                    getDataFromTempFileHandle(
+                                            GETTER_FOR_INTERFACE_MASK,
+                                            getBeanFiles(curNode), path));
 
                 //Setter methods.
                 methods.add(NEW_LINE);
-                methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(
-                        SETTER_FOR_INTERFACE_MASK,
-                        ((TempJavaCodeFragmentFilesContainer)
-                                curNode)
-                                .getTempJavaCodeFragmentFiles()
-                                .getBeanTempFiles(), path));
+                methods.add(FOUR_SPACE_INDENTATION +
+                                    getDataFromTempFileHandle(
+                                            SETTER_FOR_INTERFACE_MASK,
+                                            getBeanFiles(curNode), path));
 
                 //Add to list method.
                 methods.add(NEW_LINE);
-                insertDataIntoJavaFile(file, getDataFromTempFileHandle(
-                        ADD_TO_LIST_INTERFACE_MASK,
-                        ((TempJavaCodeFragmentFilesContainer) curNode)
-                                .getTempJavaCodeFragmentFiles()
-                                .getBeanTempFiles(), path));
-
+                insertDataIntoJavaFile(file,
+                                       getDataFromTempFileHandle(
+                                               ADD_TO_LIST_INTERFACE_MASK,
+                                               getBeanFiles(curNode), path));
             } catch (IOException e) {
-                throw new IOException(
-                        "No data found in temporary java code fragment files " +
-                                "for " +
-                                className
-                                + " while builder interface file generation");
+                throw new IOException(getErrorMsg(className,
+                                                  BUILDER_INTERFACE));
             }
         }
 
@@ -390,19 +369,16 @@
                 !(curNode instanceof YangChoice)) {
             methods.add(getAddAugmentInfoMethodInterface());
             methods.add(getYangAugmentInfoInterface());
-            methods.add(getYangAugmentInfoMapInterface(
-                    javaFileInfo.getPluginConfig()));
+            methods.add(getYangAugmentInfoMapInterface(fileInfo.getPluginConfig()));
         }
 
-        if (isLeavesPresent) {
+        if (leavesPresent) {
             methods.add(NEW_LINE + setSelectLeafSetInterface(className));
         }
         //Add build method to builder interface file.
-        methods.add(
-                ((TempJavaCodeFragmentFilesContainer) curNode)
-                        .getTempJavaCodeFragmentFiles()
-                        .addBuildMethodForInterface(pluginConfig));
-
+        methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
+                            .getTempJavaCodeFragmentFiles()
+                            .addBuildMethodForInterface(pluginConfig));
 
         //Add getters and setters in builder interface.
         for (String method : methods) {
@@ -416,43 +392,39 @@
     /**
      * Returns generated builder class file for current node.
      *
-     * @param file          file
-     * @param curNode       current YANG node
-     * @param isAttrPresent if any attribute is present or not
+     * @param file        file
+     * @param curNode     current YANG node
+     * @param attrPresent if any attribute is present or not
      * @return builder class file
      * @throws IOException when fails to write in file
      */
-
     public static File generateBuilderClassFile(File file, YangNode curNode,
-                                                boolean isAttrPresent)
+                                                boolean attrPresent)
             throws IOException {
 
-        JavaFileInfoTranslator javaFileInfo =
+        JavaFileInfoTranslator fileInfo =
                 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
-        YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
+        YangPluginConfig config = fileInfo.getPluginConfig();
 
-        boolean isLeavesPresent;
+        boolean leavesPresent;
         YangLeavesHolder leavesHolder;
         if (curNode instanceof YangLeavesHolder) {
             leavesHolder = (YangLeavesHolder) curNode;
-            isLeavesPresent = leavesHolder.getListOfLeaf() != null &&
-                    !leavesHolder.getListOfLeaf().isEmpty()
-                    || leavesHolder.getListOfLeafList() != null &&
-                    !leavesHolder.getListOfLeafList().isEmpty();
+            leavesPresent = leavesPresent(leavesHolder);
         } else {
-            isLeavesPresent = false;
+            leavesPresent = false;
         }
 
-        String className = getCapitalCase(javaFileInfo.getJavaName());
+        String className = getCapitalCase(fileInfo.getJavaName());
         boolean isRootNode = false;
         String path;
         if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
             isRootNode = true;
-            path = javaFileInfo.getPluginConfig().getCodeGenDir() +
-                    javaFileInfo.getPackageFilePath();
+            path = fileInfo.getPluginConfig().getCodeGenDir() +
+                    fileInfo.getPackageFilePath();
         } else {
-            path = javaFileInfo.getBaseCodeGenPath() +
-                    javaFileInfo.getPackageFilePath();
+            path = fileInfo.getBaseCodeGenPath() +
+                    fileInfo.getPackageFilePath();
         }
 
         initiateJavaFileGeneration(file, BUILDER_CLASS_MASK, null, curNode,
@@ -462,64 +434,42 @@
         if (curNode instanceof YangAugmentableNode) {
             insertDataIntoJavaFile(file, addAugmentationAttribute());
         }
-        if (isAttrPresent) {
+        if (attrPresent) {
 
             //Add attribute strings.
             try {
-                insertDataIntoJavaFile(file,
-                                       NEW_LINE + FOUR_SPACE_INDENTATION +
-                                               getDataFromTempFileHandle(
-                                                       ATTRIBUTES_MASK,
-                                                       ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                               .getTempJavaCodeFragmentFiles()
-                                                               .getBeanTempFiles(),
-                                                       path));
+                insertDataIntoJavaFile(file, NEW_LINE + FOUR_SPACE_INDENTATION +
+                        getDataFromTempFileHandle(
+                                ATTRIBUTES_MASK,
+                                getBeanFiles(curNode), path));
             } catch (IOException e) {
-                throw new IOException(
-                        "No data found in temporary java code fragment files " +
-                                "for " + className +
-                                " while builder class file generation");
+                throw new IOException(getErrorMsg(className, BUILDER_CLASS));
             }
 
-            insertDataIntoJavaFile(file, getOperationTypeAttr());
-            if (isLeavesPresent) {
+            if (leavesPresent) {
                 insertDataIntoJavaFile(file, getOperationAttributes());
             }
             try {
                 //Getter methods.
-                methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
-                                                      ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                              .getTempJavaCodeFragmentFiles()
-                                                              .getBeanTempFiles(),
-                                                      path));
+                methods.add(getDataFromTempFileHandle(
+                        GETTER_FOR_CLASS_MASK, getBeanFiles(curNode), path));
                 // Setter methods.
-                methods.add(getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK,
-                                                      ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                              .getTempJavaCodeFragmentFiles()
-                                                              .getBeanTempFiles(),
-                                                      path));
+                methods.add(getDataFromTempFileHandle(
+                        SETTER_FOR_CLASS_MASK, getBeanFiles(curNode), path));
 
                 //Add to list impl method.
-                methods.add(getDataFromTempFileHandle(ADD_TO_LIST_IMPL_MASK,
-                                                      ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                              .getTempJavaCodeFragmentFiles()
-                                                              .getBeanTempFiles(),
-                                                      path));
+                methods.add(getDataFromTempFileHandle(
+                        ADD_TO_LIST_IMPL_MASK, getBeanFiles(curNode), path));
 
                 insertDataIntoJavaFile(file, NEW_LINE);
 
-                methods.add(getGetterForOperationType());
-                methods.add(getSetterForOperationType(className));
                 //Add operation attribute methods.
-                if (isLeavesPresent) {
+                if (leavesPresent) {
                     methods.add(getOperationAttributesGetters() + NEW_LINE);
                     methods.add(getSetterForSelectLeaf(className, isRootNode));
                 }
             } catch (IOException e) {
-                throw new IOException(
-                        "No data found in temporary java code fragment files " +
-                                "for " + className +
-                                " while builder class file generation");
+                throw new IOException(getErrorMsg(className, BUILDER_CLASS));
             }
         } else {
             insertDataIntoJavaFile(file, NEW_LINE);
@@ -535,11 +485,8 @@
         methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
                             .getTempJavaCodeFragmentFiles()
                             .addBuildMethodImpl(curNode));
-        methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
-                            .getTempJavaCodeFragmentFiles()
-                            .addDefaultConstructor(PUBLIC, BUILDER,
-                                                   pluginConfig, curNode));
-
+        methods.add(addDefaultConstructor(curNode, PUBLIC, BUILDER,
+                                          config, curNode));
 
         //Add methods in builder class.
         for (String method : methods) {
@@ -553,47 +500,44 @@
     /**
      * Returns generated default class file for current node.
      *
-     * @param file          file
-     * @param curNode       current YANG node
-     * @param isAttrPresent if any attribute is present or not
-     * @param imports       list of imports
+     * @param file        file
+     * @param curNode     current YANG node
+     * @param attrPresent if any attribute is present or not
+     * @param imports     list of imports
      * @return impl class file
      * @throws IOException when fails to write in file
      */
     public static File generateDefaultClassFile(File file, YangNode curNode,
-                                                boolean isAttrPresent,
+                                                boolean attrPresent,
                                                 List<String> imports)
             throws IOException {
 
-        JavaFileInfoTranslator javaFileInfo =
+        JavaFileInfoTranslator fileInfo =
                 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
-        YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
+        YangPluginConfig config = fileInfo.getPluginConfig();
 
-        boolean isLeavesPresent;
+        boolean leavesPresent;
         YangLeavesHolder leavesHolder;
         if (curNode instanceof YangLeavesHolder) {
             leavesHolder = (YangLeavesHolder) curNode;
-            isLeavesPresent = leavesHolder.getListOfLeaf() != null &&
-                    !leavesHolder.getListOfLeaf().isEmpty() ||
-                    leavesHolder.getListOfLeafList() != null &&
-                            !leavesHolder.getListOfLeafList().isEmpty();
+            leavesPresent = leavesPresent(leavesHolder);
         } else {
-            isLeavesPresent = false;
+            leavesPresent = false;
         }
 
-        boolean isRootNode = false;
+        boolean rootNode = false;
 
-        String className = getCapitalCase(javaFileInfo.getJavaName());
+        String className = getCapitalCase(fileInfo.getJavaName());
         String opParamClassName = className;
         String path;
         if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
             opParamClassName = className + OP_PARAM;
-            isRootNode = true;
-            path = javaFileInfo.getPluginConfig().getCodeGenDir() +
-                    javaFileInfo.getPackageFilePath();
+            rootNode = true;
+            path = fileInfo.getPluginConfig().getCodeGenDir() +
+                    fileInfo.getPackageFilePath();
         } else {
-            path = javaFileInfo.getBaseCodeGenPath() +
-                    javaFileInfo.getPackageFilePath();
+            path = fileInfo.getBaseCodeGenPath() +
+                    fileInfo.getPackageFilePath();
         }
 
         initiateJavaFileGeneration(file, DEFAULT_CLASS_MASK, imports, curNode,
@@ -603,89 +547,10 @@
         if (curNode instanceof YangAugmentableNode) {
             insertDataIntoJavaFile(file, addAugmentationAttribute());
         }
-        if (isAttrPresent) {
-
-            //Add attribute strings.
-            try {
-                insertDataIntoJavaFile(file,
-                                       NEW_LINE + FOUR_SPACE_INDENTATION +
-                                               getDataFromTempFileHandle(
-                                                       ATTRIBUTES_MASK,
-                                                       ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                               .getTempJavaCodeFragmentFiles()
-                                                               .getBeanTempFiles(),
-                                                       path));
-            } catch (IOException e) {
-                throw new IOException(
-                        "No data found in temporary java code fragment files " +
-                                "for " + className +
-                                " while impl class file generation");
-            }
-
-            //Add operation attributes
-            insertDataIntoJavaFile(file, getOperationTypeEnum());
-            insertDataIntoJavaFile(file, getOperationTypeAttr());
-            if (isLeavesPresent) {
-                insertDataIntoJavaFile(file, getOperationAttributes());
-            }
-
-            try {
-                //Getter methods.
-                methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
-                                                      ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                              .getTempJavaCodeFragmentFiles()
-                                                              .getBeanTempFiles(),
-                                                      path));
-
-                methods.add(getGetterForOperationType());
-
-                // Hash code method.
-                methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
-                                                           getDataFromTempFileHandle(
-                                                                   HASH_CODE_IMPL_MASK,
-                                                                   ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                                           .getTempJavaCodeFragmentFiles()
-                                                                           .getBeanTempFiles(),
-                                                                   path)
-                                                                   .replace(
-                                                                           NEW_LINE,
-                                                                           EMPTY_STRING)));
-
-                //Equals method.
-                if (isRootNode) {
-                    methods.add(getEqualsMethodClose(
-                            getEqualsMethodOpen(opParamClassName) +
-                                    getDataFromTempFileHandle(EQUALS_IMPL_MASK,
-                                                              ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                                      .getTempJavaCodeFragmentFiles()
-                                                                      .getBeanTempFiles(),
-                                                              path)));
-                } else {
-                    methods.add(getEqualsMethodClose(getEqualsMethodOpen(
-                            getCapitalCase(DEFAULT) + className) +
-                                                             getDataFromTempFileHandle(
-                                                                     EQUALS_IMPL_MASK,
-                                                                     ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                                             .getTempJavaCodeFragmentFiles()
-                                                                             .getBeanTempFiles(),
-                                                                     path)));
-                }
-                // To string method.
-                methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(
-                        TO_STRING_IMPL_MASK,
-                        ((TempJavaCodeFragmentFilesContainer)
-                                curNode)
-                                .getTempJavaCodeFragmentFiles()
-                                .getBeanTempFiles(), path) +
-                                    getToStringMethodClose());
-
-
-            } catch (IOException e) {
-                throw new IOException(
-                        "No data found in temporary java code fragment files " +
-                                "for " + className +
-                                " while impl class file generation");
-            }
+        if (attrPresent) {
+            addDefaultClassAttributeInfo(file, curNode, className,
+                                         opParamClassName, path, methods,
+                                         leavesPresent, rootNode);
         } else {
             insertDataIntoJavaFile(file, NEW_LINE);
         }
@@ -697,80 +562,63 @@
         try {
             //Constructor.
             String constructor =
-                    getConstructorStart(className, pluginConfig, isRootNode);
+                    getConstructorStart(className, config, rootNode);
             constructor = constructor +
-                    getDataFromTempFileHandle(CONSTRUCTOR_IMPL_MASK,
-                                              ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                      .getTempJavaCodeFragmentFiles()
-                                                      .getBeanTempFiles(),
-                                              path);
+                    getDataFromTempFileHandle(
+                            CONSTRUCTOR_IMPL_MASK, getBeanFiles(curNode), path);
 
-            if (isAttrPresent) {
-                constructor = constructor + getOperationTypeForConstructor();
-            }
-            if (isLeavesPresent) {
-                constructor =
-                        constructor + getOperationAttributeForConstructor();
+            if (leavesPresent) {
+                constructor = constructor +
+                        getOperationAttributeForConstructor();
             }
             if (curNode instanceof YangAugmentableNode) {
-                constructor = constructor + getYangAugmentedMapObjectForConstruct();
+                constructor = constructor +
+                        getYangAugmentedMapObjectForConstruct();
             }
-            methods.add(
-                    constructor + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
-                            NEW_LINE);
+            methods.add(constructor + FOUR_SPACE_INDENTATION +
+                                CLOSE_CURLY_BRACKET + NEW_LINE);
 
             // add is filter content match.
-            String augmentableSubTreeFiltering = "";
+            String augmentableSubTreeFiltering = EMPTY_STRING;
             if (curNode instanceof YangAugmentableNode) {
                 augmentableSubTreeFiltering = getAugmentableSubTreeFiltering();
             }
 
-            methods.add(getProcessSubtreeFilteringStart(curNode, pluginConfig)
-                                + getProcessSubtreeFunctionBody(curNode)
-                                + augmentableSubTreeFiltering
-                                + getProcessSubTreeFilteringEnd());
+            methods.add(getProcessSubtreeFilteringStart(curNode, config) +
+                                getProcessSubtreeFunctionBody(curNode) +
+                                augmentableSubTreeFiltering +
+                                getProcessSubTreeFilteringEnd());
 
             if (curNode instanceof YangLeavesHolder) {
-                if (((YangLeavesHolder) curNode).getListOfLeaf() != null
-                        && !((YangLeavesHolder) curNode).getListOfLeaf()
-                        .isEmpty()) {
-                    methods.add(getProcessLeafSubtreeFiltering(curNode,
-                                                               pluginConfig,
+                if (((YangLeavesHolder) curNode).getListOfLeaf() != null &&
+                        !((YangLeavesHolder) curNode).getListOfLeaf().isEmpty()) {
+                    methods.add(getProcessLeafSubtreeFiltering(curNode, config,
                                                                path));
                 }
             }
 
-
             if (curNode instanceof YangLeavesHolder) {
-                if (((YangLeavesHolder) curNode).getListOfLeafList() != null
-                        && !((YangLeavesHolder) curNode).getListOfLeafList()
-                        .isEmpty()) {
+                if (((YangLeavesHolder) curNode).getListOfLeafList() != null &&
+                        !((YangLeavesHolder) curNode).getListOfLeafList().isEmpty()) {
                     methods.add(getProcessLeafListSubtreeFiltering(curNode,
-                                                                   pluginConfig,
+                                                                   config,
                                                                    path));
                 }
             }
 
             if (curNode.getChild() != null) {
                 methods.add(getProcessChildNodeSubtreeFiltering(curNode,
-                                                                pluginConfig,
-                                                                path));
+                                                                config, path));
             }
-
-
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            className + " while impl class file generation");
+            throw new IOException(getErrorMsg(className, IMPL_CLASS));
         }
 
-        methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
-                            .getTempJavaCodeFragmentFiles()
-                            .addDefaultConstructor(PROTECTED, DEFAULT,
-                                                   pluginConfig, curNode));
+        methods.add(addDefaultConstructor(curNode, PROTECTED, DEFAULT,
+                                          config, curNode));
 
         methods.add(builderMethod(className) + NEW_LINE);
-        if (isLeavesPresent) {
+        if (leavesPresent) {
             methods.add(getOperationAttributesGetters());
             methods.add(getGettersForValueAndSelectLeaf());
         }
@@ -783,6 +631,80 @@
     }
 
     /**
+     * Add methods related to attributes.
+     *
+     * @param file             file
+     * @param curNode          current YANG node
+     * @param className        name of the class
+     * @param opParamClassName op param class name
+     * @param path             file path
+     * @param methods          list of methods string
+     * @param leavesPresent    flag indicating presence of leaves
+     * @param rootNode         flag indicating whether node is root node
+     * @throws IOException a violation in IO rule
+     */
+    private static void addDefaultClassAttributeInfo(File file, YangNode curNode,
+                                                     String className,
+                                                     String opParamClassName,
+                                                     String path, List<String> methods,
+                                                     boolean leavesPresent,
+                                                     boolean rootNode)
+            throws IOException {
+
+        //Add attribute strings.
+        try {
+            insertDataIntoJavaFile(file, NEW_LINE + FOUR_SPACE_INDENTATION +
+                    getDataFromTempFileHandle(
+                            ATTRIBUTES_MASK, getBeanFiles(curNode), path));
+        } catch (IOException e) {
+            throw new IOException(getErrorMsg(className, IMPL_CLASS));
+        }
+
+        //Add operation attributes
+        if (leavesPresent) {
+            insertDataIntoJavaFile(file, getOperationAttributes());
+        }
+
+        try {
+            //Getter methods.
+            methods.add(getDataFromTempFileHandle(
+                    GETTER_FOR_CLASS_MASK, getBeanFiles(curNode), path));
+
+            // Hash code method.
+            methods.add(getHashCodeMethodClose(
+                    getHashCodeMethodOpen() +
+                            getDataFromTempFileHandle(
+                                    HASH_CODE_IMPL_MASK,
+                                    getBeanFiles(curNode), path)
+                                    .replace(NEW_LINE, EMPTY_STRING)));
+
+            //Equals method.
+            if (rootNode) {
+                methods.add(getEqualsMethodClose(
+                        getEqualsMethodOpen(opParamClassName) +
+                                getDataFromTempFileHandle(
+                                        EQUALS_IMPL_MASK,
+                                        getBeanFiles(curNode), path)));
+            } else {
+                methods.add(getEqualsMethodClose(
+                        getEqualsMethodOpen(
+                                getCapitalCase(DEFAULT) + className) +
+                                getDataFromTempFileHandle(
+                                        EQUALS_IMPL_MASK,
+                                        getBeanFiles(curNode), path)));
+            }
+            // To string method.
+            methods.add(getToStringMethodOpen() +
+                                getDataFromTempFileHandle(
+                                        TO_STRING_IMPL_MASK,
+                                        getBeanFiles(curNode), path) +
+                                getToStringMethodClose());
+        } catch (IOException e) {
+            throw new IOException(getErrorMsg(className, IMPL_CLASS));
+        }
+    }
+
+    /**
      * Generates class file for type def.
      *
      * @param file    generated file
@@ -795,159 +717,73 @@
                                                 List<String> imports)
             throws IOException {
 
-        JavaFileInfoTranslator javaFileInfo =
+        JavaFileInfoTranslator fileInfo =
                 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
-        YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
+        YangPluginConfig config = fileInfo.getPluginConfig();
 
         // import
-        String className = getCapitalCase(javaFileInfo.getJavaName());
-        String path = javaFileInfo.getBaseCodeGenPath() +
-                javaFileInfo.getPackageFilePath();
+        String className = getCapitalCase(fileInfo.getJavaName());
+        String path = fileInfo.getBaseCodeGenPath() +
+                fileInfo.getPackageFilePath();
         YangTypeDef typeDef = (YangTypeDef) curNode;
         List<YangType<?>> types = typeDef.getTypeList();
         YangType type = types.get(0);
         YangDataTypes yangDataTypes = type.getDataType();
 
         initiateJavaFileGeneration(file, className, GENERATE_TYPEDEF_CLASS,
-                                   imports, path, pluginConfig);
+                                   imports, path, config);
 
         List<String> methods = new ArrayList<>();
 
-
         //Add attribute strings.
         try {
             insertDataIntoJavaFile(file, NEW_LINE + FOUR_SPACE_INDENTATION +
-                    getDataFromTempFileHandle(ATTRIBUTES_MASK,
-                                              ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                      .getTempJavaCodeFragmentFiles()
-                                                      .getTypeTempFiles(),
-                                              path));
+                    getDataFromTempFileHandle(
+                            ATTRIBUTES_MASK, getTypeFiles(curNode), path));
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            className + " while type def class file " +
-                            "generation");
+            throw new IOException(getErrorMsg(className, TYPEDEF_CLASS));
         }
 
-
         //Default constructor.
-        methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
-                            .getTempJavaCodeFragmentFiles()
-                            .addDefaultConstructor(PRIVATE, EMPTY_STRING,
-                                                   pluginConfig, curNode));
+        methods.add(addDefaultConstructor(curNode, PRIVATE, EMPTY_STRING,
+                                          config, curNode));
 
         try {
 
             //Type constructor.
-            methods.add(getDataFromTempFileHandle(CONSTRUCTOR_FOR_TYPE_MASK,
-                                                  ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                          .getTempJavaCodeFragmentFiles()
-                                                          .getTypeTempFiles(),
-                                                  path));
-
+            methods.add(getDataFromTempFileHandle(
+                    CONSTRUCTOR_FOR_TYPE_MASK, getTypeFiles(curNode), path));
 
             //Of method.
-            methods.add(getDataFromTempFileHandle(OF_STRING_IMPL_MASK,
-                                                  ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                          .getTempJavaCodeFragmentFiles()
-                                                          .getTypeTempFiles(),
-                                                  path));
+            methods.add(getDataFromTempFileHandle(
+                    OF_STRING_IMPL_MASK, getTypeFiles(curNode), path));
 
             //Getter methods.
-            methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
-                                                  ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                          .getTempJavaCodeFragmentFiles()
-                                                          .getTypeTempFiles(),
-                                                  path));
+            methods.add(getDataFromTempFileHandle(
+                    GETTER_FOR_CLASS_MASK, getTypeFiles(curNode), path));
 
             // Hash code method.
-            methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
-                                                       getDataFromTempFileHandle(
-                                                               HASH_CODE_IMPL_MASK,
-                                                               ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                                       .getTempJavaCodeFragmentFiles()
-                                                                       .getTypeTempFiles(),
-                                                               path)
-                                                               .replace(
-                                                                       NEW_LINE,
-                                                                       EMPTY_STRING)));
-
+            methods.add(getHashCodeMethodClose(
+                    getHashCodeMethodOpen() + getDataFromTempFileHandle(
+                            HASH_CODE_IMPL_MASK, getTypeFiles(curNode), path)
+                            .replace(NEW_LINE, EMPTY_STRING)));
 
             //Equals method.
             methods.add(getEqualsMethodClose(
-                    getEqualsMethodOpen(className + EMPTY_STRING)
-                            + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
-                                                        ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                                .getTempJavaCodeFragmentFiles()
-                                                                .getTypeTempFiles(),
-                                                        path)));
+                    getEqualsMethodOpen(className + EMPTY_STRING) +
+                            getDataFromTempFileHandle(EQUALS_IMPL_MASK,
+                                                      getTypeFiles(curNode), path)));
 
-
-            //To string method.
-            if (type.getDataType().equals(BINARY)) {
-                JavaQualifiedTypeInfoTranslator qualifiedTypeInfo =
-                        getQualifiedTypeInfoOfCurNode(curNode, getCapitalCase(
-                                "binary"));
-
-                JavaAttributeInfo attr =
-                        getAttributeInfoForTheData(qualifiedTypeInfo, "binary",
-                                                   null, false, false);
-                String attributeName = attr.getAttributeName();
-                String bitsToStringMethod =
-                        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 + SPACE +
-                                BASE64 + PERIOD + GET_ENCODER +
-                                OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
-                                PERIOD + ENCODE_TO_STRING + OPEN_PARENTHESIS +
-                                attributeName + CLOSE_PARENTHESIS +
-                                SEMI_COLAN + NEW_LINE +
-                                FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
-                                NEW_LINE;
-                methods.add(bitsToStringMethod);
-            } else if (type.getDataType().equals(BITS)) {
-                JavaQualifiedTypeInfoTranslator qualifiedTypeInfo =
-                        getQualifiedTypeInfoOfCurNode(curNode,
-                                                      getCapitalCase(
-                                                              "bits"));
-
-                JavaAttributeInfo attr =
-                        getAttributeInfoForTheData(qualifiedTypeInfo, "bits",
-                                                   null, false, false);
-                String attributeName = attr.getAttributeName();
-                String bitsToStringMethod =
-                        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 + SPACE +
-                                attributeName + PERIOD + TO +
-                                STRING_DATA_TYPE + OPEN_PARENTHESIS +
-                                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
-                                FOUR_SPACE_INDENTATION +
-                                CLOSE_CURLY_BRACKET + NEW_LINE;
-                methods.add(bitsToStringMethod);
-            } else {
-                methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(
-                        TO_STRING_IMPL_MASK,
-                        ((TempJavaCodeFragmentFilesContainer)
-                                curNode)
-                                .getTempJavaCodeFragmentFiles()
-                                .getTypeTempFiles(), path) +
-                                    getToStringMethodClose());
-            }
+            // To string method.
+            addTypedefToString(curNode, methods, path, type);
 
             JavaCodeGeneratorInfo javaGenInfo = (JavaCodeGeneratorInfo) curNode;
 
             //From string method.
-            if ((type.getDataType().equals(YangDataTypes.DERIVED))
-                    && (((YangDerivedInfo) type.getDataTypeExtendedInfo())
-                    .getEffectiveBuiltInType()
-                    .equals(YangDataTypes.IDENTITYREF))) {
+            if ((type.getDataType().equals(YangDataTypes.DERIVED)) &&
+                    (((YangDerivedInfo) type.getDataTypeExtendedInfo())
+                            .getEffectiveBuiltInType()
+                            .equals(YangDataTypes.IDENTITYREF))) {
                 yangDataTypes = YangDataTypes.IDENTITYREF;
             }
 
@@ -956,21 +792,15 @@
             }
 
             if (!yangDataTypes.equals(YangDataTypes.IDENTITYREF)) {
-                methods.add(
-                        getFromStringMethodSignature(className, pluginConfig) +
-                                getDataFromTempFileHandle(FROM_STRING_IMPL_MASK,
-                                                          javaGenInfo
-                                                                  .getTempJavaCodeFragmentFiles()
-                                                                  .getTypeTempFiles(),
-                                                          path) +
-                                getFromStringMethodClose());
+                methods.add(getFromStringMethodSignature(className, config) +
+                                    getDataFromTempFileHandle(
+                                            FROM_STRING_IMPL_MASK,
+                                            javaGenInfo.getTempJavaCodeFragmentFiles()
+                                                    .getTypeTempFiles(), path) +
+                                    getFromStringMethodClose());
             }
-
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            className + " while type def class file " +
-                            "generation");
+            throw new IOException(getErrorMsg(className, TYPEDEF_CLASS));
         }
 
         for (String method : methods) {
@@ -982,6 +812,79 @@
     }
 
     /**
+     * Adds typedef to string method.
+     *
+     * @param curNode current node
+     * @param methods list of methods string
+     * @param path    file path
+     * @param type    YANG type
+     * @throws IOException a violation in IO rule
+     */
+    private static void addTypedefToString(YangNode curNode,
+                                           List<String> methods, String path,
+                                           YangType type) throws IOException {
+        //To string method.
+        if (type.getDataType().equals(BINARY)) {
+            JavaQualifiedTypeInfoTranslator typeInfo =
+                    getQualifiedTypeInfoOfCurNode(curNode, getCapitalCase
+                            (UtilConstants.BINARY));
+
+            JavaAttributeInfo attr =
+                    getAttributeInfoForTheData(typeInfo,
+                                               UtilConstants.BINARY,
+                                               null, false, false);
+            String attributeName = attr.getAttributeName();
+            String bitsToStringMethod =
+                    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 + SPACE +
+                            BASE64 + PERIOD + GET_ENCODER +
+                            OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+                            PERIOD + ENCODE_TO_STRING + OPEN_PARENTHESIS +
+                            attributeName + CLOSE_PARENTHESIS +
+                            SEMI_COLAN + NEW_LINE +
+                            FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                            NEW_LINE;
+            methods.add(bitsToStringMethod);
+        } else if (type.getDataType().equals(BITS)) {
+            JavaQualifiedTypeInfoTranslator typeInfo =
+                    getQualifiedTypeInfoOfCurNode(curNode,
+                                                  getCapitalCase(UtilConstants.BITS));
+
+            JavaAttributeInfo attr =
+                    getAttributeInfoForTheData(typeInfo,
+                                               UtilConstants.BITS,
+                                               null, false, false);
+            String attributeName = attr.getAttributeName();
+            String bitsToStringMethod =
+                    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 + SPACE +
+                            attributeName + PERIOD + TO +
+                            STRING_DATA_TYPE + OPEN_PARENTHESIS +
+                            CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
+                            FOUR_SPACE_INDENTATION +
+                            CLOSE_CURLY_BRACKET + NEW_LINE;
+            methods.add(bitsToStringMethod);
+        } else {
+            methods.add(getToStringMethodOpen() +
+                                getDataFromTempFileHandle(
+                                        TO_STRING_IMPL_MASK,
+                                        ((TempJavaCodeFragmentFilesContainer)
+                                                curNode)
+                                                .getTempJavaCodeFragmentFiles()
+                                                .getTypeTempFiles(), path) +
+                                getToStringMethodClose());
+        }
+    }
+
+    /**
      * Generates class file for union type.
      *
      * @param file    generated file
@@ -994,189 +897,124 @@
                                               List<String> imports)
             throws IOException {
 
-        JavaFileInfoTranslator javaFileInfo =
+        JavaFileInfoTranslator fileInfo =
                 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
-        YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
+        YangPluginConfig config = fileInfo.getPluginConfig();
 
-        String className = getCapitalCase(javaFileInfo.getJavaName());
-        String path = javaFileInfo.getBaseCodeGenPath() +
-                javaFileInfo.getPackageFilePath();
+        String className = getCapitalCase(fileInfo.getJavaName());
+        String path = fileInfo.getBaseCodeGenPath() +
+                fileInfo.getPackageFilePath();
 
-        TempJavaTypeFragmentFiles tempJavaTypeFragmentFiles =
-                ((JavaCodeGeneratorInfo) curNode)
-                        .getTempJavaCodeFragmentFiles().getTypeTempFiles();
+        TempJavaTypeFragmentFiles tempFiles =
+                ((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles()
+                        .getTypeTempFiles();
 
-        boolean isIntConflict = false;
-        boolean isLongConflict = false;
-        boolean isShortConflict = false;
-        JavaAttributeInfo intAttr = tempJavaTypeFragmentFiles.getIntAttribute();
+        boolean intConflict = false;
+        boolean longConflict = false;
+        boolean shortConflict = false;
+        JavaAttributeInfo intAttr = tempFiles.getIntAttribute();
         if (intAttr == null) {
-            intAttr = tempJavaTypeFragmentFiles.getUIntAttribute();
+            intAttr = tempFiles.getUIntAttribute();
         }
 
         JavaAttributeInfo longAttr =
-                tempJavaTypeFragmentFiles.getLongAttribute();
+                tempFiles.getLongAttribute();
         if (longAttr == null) {
-            longAttr = tempJavaTypeFragmentFiles.getULongAttribute();
+            longAttr = tempFiles.getULongAttribute();
         }
 
         JavaAttributeInfo shortAttr =
-                tempJavaTypeFragmentFiles.getShortAttribute();
+                tempFiles.getShortAttribute();
         if (shortAttr == null) {
-            shortAttr = tempJavaTypeFragmentFiles.getUInt8Attribute();
+            shortAttr = tempFiles.getUInt8Attribute();
         }
 
         if (intAttr != null) {
-            isIntConflict = intAttr.isIntConflict();
+            intConflict = intAttr.isIntConflict();
         }
         if (longAttr != null) {
-            isLongConflict = longAttr.isLongConflict();
+            longConflict = longAttr.isLongConflict();
         }
         if (shortAttr != null) {
-            isShortConflict = shortAttr.isShortConflict();
+            shortConflict = shortAttr.isShortConflict();
         }
-        if (isLongConflict) {
-            imports.add(tempJavaTypeFragmentFiles.getJavaImportData()
+        if (longConflict) {
+            imports.add(tempFiles.getJavaImportData()
                                 .getBigIntegerImport());
             sort(imports);
         }
 
         initiateJavaFileGeneration(file, className, GENERATE_UNION_CLASS,
-                                   imports, path, pluginConfig);
+                                   imports, path, config);
 
         List<String> methods = new ArrayList<>();
 
-
         // Add attribute strings.
         try {
-            if (isIntConflict) {
-                insertDataIntoJavaFile(file, JavaCodeSnippetGen
-                        .addStaticAttributeIntRange(PRIVATE,
-                                                    tempJavaTypeFragmentFiles
-                                                            .getIntIndex() <
-                                                            tempJavaTypeFragmentFiles
-                                                                    .getUIntIndex()));
-            }
-
-            if (isLongConflict) {
-                insertDataIntoJavaFile(file, JavaCodeSnippetGen
-                        .addStaticAttributeLongRange(PRIVATE,
-                                                     tempJavaTypeFragmentFiles
-                                                             .getLongIndex() <
-                                                             tempJavaTypeFragmentFiles
-                                                                     .getULongIndex()));
-            }
-
-            if (isShortConflict) {
-                insertDataIntoJavaFile(file, JavaCodeSnippetGen
-                        .addStaticAttributeShortRange(PRIVATE,
-                                                      tempJavaTypeFragmentFiles
-                                                              .getShortIndex() <
-                                                              tempJavaTypeFragmentFiles
-                                                                      .getUInt8Index()));
-            }
-
-            insertDataIntoJavaFile(file,
-                                   NEW_LINE + FOUR_SPACE_INDENTATION +
-                                           getDataFromTempFileHandle(
-                                                   ATTRIBUTES_MASK,
-                                                   ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                           .getTempJavaCodeFragmentFiles()
-                                                           .getTypeTempFiles(),
-                                                   path));
+            addUnionClassAttributeInfo(file, curNode, intConflict,
+                                       longConflict, shortConflict, path,
+                                       tempFiles);
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            className + " while union class file generation");
+            throw new IOException(getErrorMsg(className, UNION_CLASS));
         }
 
-
         //Default constructor.
-        methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
-                            .getTempJavaCodeFragmentFiles()
-                            .addDefaultConstructor(PRIVATE, EMPTY_STRING,
-                                                   pluginConfig, curNode));
+        methods.add(addDefaultConstructor(curNode, PRIVATE, EMPTY_STRING,
+                                          config, curNode));
 
         try {
 
-
             //Type constructor.
-            methods.add(getDataFromTempFileHandle(CONSTRUCTOR_FOR_TYPE_MASK,
-                                                  ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                          .getTempJavaCodeFragmentFiles()
-                                                          .getTypeTempFiles(),
-                                                  path));
-
+            methods.add(getDataFromTempFileHandle(
+                    CONSTRUCTOR_FOR_TYPE_MASK, getTypeFiles(curNode), path));
 
             // Of string method.
-            methods.add(getDataFromTempFileHandle(OF_STRING_IMPL_MASK,
-                                                  ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                          .getTempJavaCodeFragmentFiles()
-                                                          .getTypeTempFiles(),
-                                                  path));
+            methods.add(getDataFromTempFileHandle(
+                    OF_STRING_IMPL_MASK, getTypeFiles(curNode), path));
 
             //Getter methods.
-            methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
-                                                  ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                          .getTempJavaCodeFragmentFiles()
-                                                          .getTypeTempFiles(),
-                                                  path));
-
+            methods.add(getDataFromTempFileHandle(
+                    GETTER_FOR_CLASS_MASK, getTypeFiles(curNode), path));
 
             //Hash code method.
-            methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
-                                                       getDataFromTempFileHandle(
-                                                               HASH_CODE_IMPL_MASK,
-                                                               ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                                       .getTempJavaCodeFragmentFiles()
-                                                                       .getTypeTempFiles(),
-                                                               path).replace(
-                                                               NEW_LINE,
-                                                               EMPTY_STRING)));
+            methods.add(getHashCodeMethodClose(
+                    getHashCodeMethodOpen() +
+                            getDataFromTempFileHandle(
+                                    HASH_CODE_IMPL_MASK, getTypeFiles(curNode),
+                                    path).replace(NEW_LINE, EMPTY_STRING)));
 
             //Equals method.
             methods.add(getEqualsMethodClose(
-                    getEqualsMethodOpen(className + EMPTY_STRING)
-                            + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
-                                                        ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                                .getTempJavaCodeFragmentFiles()
-                                                                .getTypeTempFiles(),
-                                                        path)));
-
+                    getEqualsMethodOpen(className + EMPTY_STRING) +
+                            getDataFromTempFileHandle(
+                                    EQUALS_IMPL_MASK, getTypeFiles(curNode),
+                                    path)));
 
             //To string method.
             methods.add(getToStringMethodOpen() + getOmitNullValueString() +
-                                getDataFromTempFileHandle(TO_STRING_IMPL_MASK,
-                                                          ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                                  .getTempJavaCodeFragmentFiles()
-                                                                  .getTypeTempFiles(),
-                                                          path) +
+                                getDataFromTempFileHandle(
+                                        TO_STRING_IMPL_MASK,
+                                        getTypeFiles(curNode), path) +
                                 getToStringMethodClose());
 
-
             //From string method.
-            methods.add(getFromStringMethodSignature(className, pluginConfig) +
-                                getDataFromTempFileHandle(FROM_STRING_IMPL_MASK,
-                                                          ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                                  .getTempJavaCodeFragmentFiles()
-                                                                  .getTypeTempFiles(),
-                                                          path) +
+            methods.add(getFromStringMethodSignature(className, config) +
+                                getDataFromTempFileHandle(
+                                        FROM_STRING_IMPL_MASK,
+                                        getTypeFiles(curNode), path) +
                                 getFromStringMethodClose());
 
-            if (isIntConflict) {
+            if (intConflict) {
                 methods.add(getRangeValidatorMethodForUnion(INT));
             }
-            if (isLongConflict) {
+            if (longConflict) {
                 methods.add(getRangeValidatorMethodForUnion(BIG_INTEGER));
             }
-            if (isShortConflict && !isIntConflict) {
+            if (shortConflict && !intConflict) {
                 methods.add(getRangeValidatorMethodForUnion(INT));
             }
-
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            className + " while union class file generation");
+            throw new IOException(getErrorMsg(className, UNION_CLASS));
         }
 
         for (String method : methods) {
@@ -1188,6 +1026,52 @@
     }
 
     /**
+     * Adds union class attribute information.
+     *
+     * @param file          generated file
+     * @param curNode       current YANG node
+     * @param intConflict   flag to indicate if there is a conflict in int
+     * @param longConflict  flag to indicate if there is a conflict in long
+     * @param shortConflict flag to indicate if there is a conflict in short
+     * @param path          file path
+     * @param tempFiles     temp java type fragment files
+     * @throws IOException a violation in IO rule
+     */
+    private static void addUnionClassAttributeInfo(File file,
+                                                   YangNode curNode,
+                                                   boolean intConflict,
+                                                   boolean longConflict,
+                                                   boolean shortConflict,
+                                                   String path,
+                                                   TempJavaTypeFragmentFiles tempFiles)
+            throws IOException {
+        if (intConflict) {
+            insertDataIntoJavaFile(file, JavaCodeSnippetGen
+                    .addStaticAttributeIntRange(PRIVATE,
+                                                tempFiles.getIntIndex() <
+                                                        tempFiles.getUIntIndex()));
+        }
+
+        if (longConflict) {
+            insertDataIntoJavaFile(file, JavaCodeSnippetGen
+                    .addStaticAttributeLongRange(PRIVATE,
+                                                 tempFiles.getLongIndex() <
+                                                         tempFiles.getULongIndex()));
+        }
+
+        if (shortConflict) {
+            insertDataIntoJavaFile(file, JavaCodeSnippetGen
+                    .addStaticAttributeShortRange(PRIVATE,
+                                                  tempFiles.getShortIndex() <
+                                                          tempFiles.getUInt8Index()));
+        }
+
+        insertDataIntoJavaFile(file, NEW_LINE + FOUR_SPACE_INDENTATION +
+                getDataFromTempFileHandle(
+                        ATTRIBUTES_MASK, getTypeFiles(curNode), path));
+    }
+
+    /**
      * Generates class file for type enum.
      *
      * @param file    generated file
@@ -1198,17 +1082,17 @@
     public static File generateEnumClassFile(File file, YangNode curNode)
             throws IOException {
 
-        JavaFileInfoTranslator javaFileInfo =
+        JavaFileInfoTranslator fileInfo =
                 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
-        YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
+        YangPluginConfig config = fileInfo.getPluginConfig();
 
-        String className = javaFileInfo.getJavaName();
-        String path = javaFileInfo.getBaseCodeGenPath() +
-                javaFileInfo.getPackageFilePath();
+        String className = fileInfo.getJavaName();
+        String path = fileInfo.getBaseCodeGenPath() +
+                fileInfo.getPackageFilePath();
 
         initiateJavaFileGeneration(file, getCapitalCase(className),
                                    GENERATE_ENUM_CLASS, null, path,
-                                   pluginConfig);
+                                   config);
 
         //Add attribute strings.
         try {
@@ -1219,55 +1103,56 @@
                                                    ENUM_IMPL_MASK, javaGenInfo
                                                            .getTempJavaCodeFragmentFiles()
                                                            .getEnumerationTempFiles(),
-                                                   path), COMMA),
-                                              NEW_LINE) + SEMI_COLAN +
-                                           NEW_LINE);
+                                                   path), COMMA), NEW_LINE) +
+                                           SEMI_COLAN + NEW_LINE);
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            getCapitalCase(className) + " while enum class " +
-                            "file generation");
+            throw new IOException(getErrorMsg(getCapitalCase(className),
+                                              ENUM_CLASS));
         }
 
-
         // Add an attribute to get the enum's values.
-        insertDataIntoJavaFile(file, getEnumsValueAttribute(
-                getCapitalCase(className)));
+        insertDataIntoJavaFile(file, getEnumsValueAttribute(getCapitalCase(className)));
 
         // Add a constructor for enum.
         insertDataIntoJavaFile(file,
                                getJavaDoc(TYPE_CONSTRUCTOR, className, false,
-                                          pluginConfig, null)
-                                       + getEnumsConstructor(getCapitalCase(className)) + NEW_LINE);
+                                          config, null) +
+                                       getEnumsConstructor(getCapitalCase(className)) +
+                                       NEW_LINE);
 
         insertDataIntoJavaFile(file,
-                               getEnumsOfValueMethod(className, (YangEnumeration) curNode, pluginConfig) + NEW_LINE);
+                               getEnumsOfValueMethod(className,
+                                                     (YangEnumeration) curNode,
+                                                     config) + NEW_LINE);
         insertDataIntoJavaFile(file,
-                               getEnumValueOfSchemaNameMethod(className, pluginConfig, (YangEnumeration) curNode));
+                               getEnumValueOfSchemaNameMethod(className,
+                                                              config,
+                                                              (YangEnumeration) curNode));
 
         // Add a getter method for enum.
         insertDataIntoJavaFile(file, getJavaDoc(GETTER_METHOD, className, false,
-                                                pluginConfig, null) +
+                                                config, null) +
                 getGetter(INT, className, GENERATE_ENUM_CLASS) + NEW_LINE);
-        insertDataIntoJavaFile(file, getJavaDoc(GETTER_METHOD, SCHEMA_NAME, false,
-                                                pluginConfig, null) +
-                getGetter(STRING_DATA_TYPE, SCHEMA_NAME,
-                          GENERATE_ENUM_CLASS) + NEW_LINE);
+        insertDataIntoJavaFile(file,
+                               getJavaDoc(GETTER_METHOD, SCHEMA_NAME, false,
+                                          config, null) +
+                                       getGetter(STRING_DATA_TYPE, SCHEMA_NAME,
+                                                 GENERATE_ENUM_CLASS) +
+                                       NEW_LINE);
 
         try {
-            insertDataIntoJavaFile(file, getFromStringMethodSignature(
-                    getCapitalCase(className), pluginConfig) +
-                    getDataFromTempFileHandle(FROM_STRING_IMPL_MASK,
-                                              ((TempJavaCodeFragmentFilesContainer) curNode)
-                                                      .getTempJavaCodeFragmentFiles()
-                                                      .getEnumerationTempFiles(),
-                                              path) +
-                    getFromStringMethodClose());
+            insertDataIntoJavaFile(file,
+                                   getFromStringMethodSignature(getCapitalCase(className),
+                                                                config) +
+                                           getDataFromTempFileHandle(
+                                                   FROM_STRING_IMPL_MASK,
+                                                   ((TempJavaCodeFragmentFilesContainer) curNode)
+                                                           .getTempJavaCodeFragmentFiles()
+                                                           .getEnumerationTempFiles(),
+                                                   path) + getFromStringMethodClose());
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            getCapitalCase(className) +
-                            " while enum class file generation");
+            throw new IOException(getErrorMsg(getCapitalCase(className),
+                                              ENUM_CLASS));
         }
 
         insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
@@ -1288,23 +1173,23 @@
                                                     List<String> imports)
             throws IOException {
 
-        JavaFileInfoTranslator javaFileInfo =
+        JavaFileInfoTranslator fileInfo =
                 ((JavaFileInfoContainer) curNode).getJavaFileInfo();
 
-        TempJavaServiceFragmentFiles tempJavaServiceFragmentFiles =
+        TempJavaServiceFragmentFiles tempFiles =
                 ((JavaCodeGeneratorInfo) curNode)
                         .getTempJavaCodeFragmentFiles().getServiceTempFiles();
-        String className = getCapitalCase(javaFileInfo.getJavaName()) +
+        String className = getCapitalCase(fileInfo.getJavaName()) +
                 SERVICE_METHOD_STRING;
-        String path = javaFileInfo.getBaseCodeGenPath() +
-                javaFileInfo.getPackageFilePath();
+        String path = fileInfo.getBaseCodeGenPath() +
+                fileInfo.getPackageFilePath();
         initiateJavaFileGeneration(file, GENERATE_SERVICE_AND_MANAGER, imports,
                                    curNode, className);
 
         List<String> methods = new ArrayList<>();
         JavaAttributeInfo rootAttribute =
                 getCurNodeAsAttributeInTarget(curNode, curNode, false,
-                                              tempJavaServiceFragmentFiles);
+                                              tempFiles);
 
         try {
 
@@ -1312,12 +1197,12 @@
                 //Getter methods.
                 methods.add(getGetterString(rootAttribute,
                                             GENERATE_SERVICE_AND_MANAGER,
-                                            javaFileInfo.getPluginConfig()) +
+                                            fileInfo.getPluginConfig()) +
                                     NEW_LINE);
                 // Setter methods.
                 methods.add(getSetterString(rootAttribute, className,
                                             GENERATE_SERVICE_AND_MANAGER,
-                                            javaFileInfo.getPluginConfig()) +
+                                            fileInfo.getPluginConfig()) +
                                     NEW_LINE);
             }
 
@@ -1329,16 +1214,13 @@
                         (JavaCodeGeneratorInfo) curNode;
 
                 // Rpc methods
-                methods.add(getDataFromTempFileHandle(RPC_INTERFACE_MASK,
-                                                      javaGenInfo
-                                                              .getTempJavaCodeFragmentFiles()
-                                                              .getServiceTempFiles(),
-                                                      path));
+                methods.add(getDataFromTempFileHandle(
+                        RPC_INTERFACE_MASK,
+                        javaGenInfo.getTempJavaCodeFragmentFiles()
+                                .getServiceTempFiles(), path));
             }
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            className + " while rpc class file generation");
+            throw new IOException(getErrorMsg(className, RPC_CLASS));
         }
 
         for (String method : methods) {
@@ -1361,19 +1243,18 @@
                                          List<String> imports)
             throws IOException {
 
-        String className = getCapitalCase(
-                ((JavaFileInfoContainer) curNode).getJavaFileInfo()
-                        .getJavaName())
-                + EVENT_STRING;
+        String className =
+                getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo()
+                                       .getJavaName()) + EVENT_STRING;
 
         TempJavaEventFragmentFiles tempFiles =
                 ((TempJavaCodeFragmentFilesContainer) curNode)
                         .getTempJavaCodeFragmentFiles().getEventFragmentFiles();
 
         String path = ((JavaFileInfoContainer) curNode).getJavaFileInfo()
-                .getBaseCodeGenPath()
-                + ((JavaFileInfoContainer) curNode).getJavaFileInfo()
-                .getPackageFilePath();
+                .getBaseCodeGenPath() +
+                ((JavaFileInfoContainer) curNode).getJavaFileInfo()
+                        .getPackageFilePath();
         initiateJavaFileGeneration(file, GENERATE_EVENT_CLASS, imports, curNode,
                                    className);
         try {
@@ -1386,11 +1267,8 @@
             insertDataIntoJavaFile(file,
                                    getDataFromTempFileHandle(EVENT_METHOD_MASK,
                                                              tempFiles, path));
-
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            className + " while event class file generation");
+            throw new IOException(getErrorMsg(className, EVENT_CLASS));
         }
 
         insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
@@ -1409,9 +1287,9 @@
                                                  List<String> imports)
             throws IOException {
 
-        String className = getCapitalCase(
-                ((JavaFileInfoContainer) curNode).getJavaFileInfo()
-                        .getJavaName()) + EVENT_LISTENER_STRING;
+        String className =
+                getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo()
+                                       .getJavaName()) + EVENT_LISTENER_STRING;
 
         initiateJavaFileGeneration(file, GENERATE_EVENT_LISTENER_INTERFACE,
                                    imports, curNode, className);
@@ -1429,17 +1307,17 @@
     public static void generateEventSubjectFile(File file, YangNode curNode)
             throws IOException {
 
-        String className = getCapitalCase(
-                ((JavaFileInfoContainer) curNode).getJavaFileInfo()
-                        .getJavaName()) + EVENT_SUBJECT_NAME_SUFFIX;
+        String className =
+                getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo()
+                                       .getJavaName()) + EVENT_SUBJECT_NAME_SUFFIX;
 
         initiateJavaFileGeneration(file, GENERATE_EVENT_SUBJECT_CLASS, null,
                                    curNode, className);
 
         String path = ((JavaFileInfoContainer) curNode).getJavaFileInfo()
-                .getBaseCodeGenPath()
-                + ((JavaFileInfoContainer) curNode).getJavaFileInfo()
-                .getPackageFilePath();
+                .getBaseCodeGenPath() +
+                ((JavaFileInfoContainer) curNode).getJavaFileInfo()
+                        .getPackageFilePath();
 
         TempJavaEventFragmentFiles tempFiles =
                 ((TempJavaCodeFragmentFilesContainer) curNode)
@@ -1447,22 +1325,47 @@
 
         insertDataIntoJavaFile(file, NEW_LINE);
         try {
-            insertDataIntoJavaFile(file, getDataFromTempFileHandle(
-                    EVENT_SUBJECT_ATTRIBUTE_MASK, tempFiles, path));
+            insertDataIntoJavaFile(file,
+                                   getDataFromTempFileHandle(EVENT_SUBJECT_ATTRIBUTE_MASK,
+                                                             tempFiles, path));
 
-            insertDataIntoJavaFile(file, getDataFromTempFileHandle(
-                    EVENT_SUBJECT_GETTER_MASK, tempFiles, path));
+            insertDataIntoJavaFile(file,
+                                   getDataFromTempFileHandle(EVENT_SUBJECT_GETTER_MASK,
+                                                             tempFiles, path));
 
-            insertDataIntoJavaFile(file, getDataFromTempFileHandle(
-                    EVENT_SUBJECT_SETTER_MASK, tempFiles, path));
-
+            insertDataIntoJavaFile(file,
+                                   getDataFromTempFileHandle(EVENT_SUBJECT_SETTER_MASK,
+                                                             tempFiles, path));
         } catch (IOException e) {
-            throw new IOException(
-                    "No data found in temporary java code fragment files for " +
-                            className + " while event class file generation");
+            throw new IOException(getErrorMsg(className, EVENT_CLASS));
         }
 
         insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
         validateLineLength(file);
     }
+
+    /**
+     * Returns error message string.
+     *
+     * @param className name of the class
+     * @param fileType  type of file
+     * @return error message string
+     */
+    private static String getErrorMsg(String className, String fileType) {
+        return "No data found in temporary java code fragment files for " +
+                className + " while " + fileType + " file generation.";
+    }
+
+    /**
+     * Checks whether leaf is present in YANG leaves holder.
+     *
+     * @param holder holder of YANG leaves
+     * @return true if leaves are present, false otherwise
+     */
+    private static boolean leavesPresent(YangLeavesHolder holder) {
+        return holder.getListOfLeaf() != null &&
+                !holder.getListOfLeaf().isEmpty() ||
+                holder.getListOfLeafList() != null &&
+                        !holder.getListOfLeafList().isEmpty();
+    }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index 5b38096..583bb0a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -16,8 +16,6 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
-import java.util.List;
-
 import org.onosproject.yangutils.datamodel.YangAtomicPath;
 import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
 import org.onosproject.yangutils.datamodel.YangEnum;
@@ -31,6 +29,8 @@
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
 
+import java.util.List;
+
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
@@ -46,8 +46,7 @@
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils
-        .getAugmentedClassNameForDataMethods;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
@@ -225,8 +224,10 @@
      * @param pluginConfig plugin configurations
      * @return method string for builder interface
      */
-    public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
-        return getJavaDoc(BUILD_METHOD, name, false, pluginConfig, null) + getBuildForInterface(name);
+    public static String parseBuilderInterfaceBuildMethodString(String name,
+                                                                YangPluginConfig pluginConfig) {
+        return getJavaDoc(BUILD_METHOD, name, false, pluginConfig, null) +
+                getBuildForInterface(name);
     }
 
     /**
@@ -237,24 +238,31 @@
      * @param pluginConfig       plugin configurations
      * @return getter string
      */
-    public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
+    public static String getGetterString(JavaAttributeInfo attr,
+                                         int generatedJavaFiles,
                                          YangPluginConfig pluginConfig) {
 
         String returnType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
         String appDataStructure = null;
         if (attr.getCompilerAnnotation() != null) {
-            appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
+            appDataStructure =
+                    attr.getCompilerAnnotation().getYangAppDataStructure()
+                            .getDataStructure().name();
         }
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
-            return generateForGetMethodWithAttribute(returnType)
-                    + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles,
-                                            attr.getCompilerAnnotation());
+            return generateForGetMethodWithAttribute(returnType) +
+                    getGetterForInterface(attributeName, returnType,
+                                          attr.isListAttr(),
+                                          generatedJavaFiles,
+                                          attr.getCompilerAnnotation());
         }
 
-        return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig, appDataStructure)
-                + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles,
-                                        attr.getCompilerAnnotation());
+        return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(),
+                          pluginConfig, appDataStructure) +
+                getGetterForInterface(attributeName, returnType,
+                                      attr.isListAttr(), generatedJavaFiles,
+                                      attr.getCompilerAnnotation());
     }
 
     /**
@@ -266,7 +274,9 @@
      * @param pluginConfig       plugin configurations
      * @return setter string
      */
-    public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
+    public static String getSetterString(JavaAttributeInfo attr,
+                                         String className,
+                                         int generatedJavaFiles,
                                          YangPluginConfig pluginConfig) {
 
         String attrType = getReturnType(attr);
@@ -280,11 +290,15 @@
 
         String appDataStructure = null;
         if (attr.getCompilerAnnotation() != null) {
-            appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
+            appDataStructure =
+                    attr.getCompilerAnnotation().getYangAppDataStructure()
+                            .getDataStructure().name();
         }
-        return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig, appDataStructure)
-                + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles,
-                                        attr.getCompilerAnnotation());
+        return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig,
+                          appDataStructure) +
+                getSetterForInterface(attributeName, attrType, className,
+                                      attr.isListAttr(), generatedJavaFiles,
+                                      attr.getCompilerAnnotation());
     }
 
     /**
@@ -294,7 +308,8 @@
      * @param pluginConfig plugin configurations
      * @return constructor string
      */
-    private static String getConstructorString(String name, YangPluginConfig pluginConfig) {
+    private static String getConstructorString(String name,
+                                               YangPluginConfig pluginConfig) {
         return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig, null);
     }
 
@@ -306,7 +321,8 @@
      * @param pluginConfig plugin configurations
      * @return default constructor string
      */
-    public static String getDefaultConstructorString(String name, String modifierType,
+    public static String getDefaultConstructorString(String name,
+                                                     String modifierType,
                                                      YangPluginConfig pluginConfig) {
         return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig, null)
                 + getDefaultConstructor(name, modifierType) + NEW_LINE;
@@ -319,8 +335,9 @@
      * @return check not null string
      */
     static String getCheckNotNull(String name) {
-        return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING + OPEN_PARENTHESIS + name + COMMA + SPACE + name
-                + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+        return EIGHT_SPACE_INDENTATION + CHECK_NOT_NULL_STRING +
+                OPEN_PARENTHESIS + name + COMMA + SPACE + name +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -334,7 +351,8 @@
         if (isRootNode) {
             return NEW_LINE + getBuild(name, true);
         }
-        return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE + getBuild(name, false);
+        return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE +
+                getBuild(name, false);
     }
 
     /**
@@ -344,15 +362,18 @@
      * @param generatedJavaFiles for the type of java file being generated
      * @return getter method for class
      */
-    public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
+    public static String getGetterForClass(JavaAttributeInfo attr,
+                                           int generatedJavaFiles) {
 
         String attrQualifiedType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
 
         if (!attr.isListAttr()) {
-            return getGetter(attrQualifiedType, attributeName, generatedJavaFiles);
+            return getGetter(attrQualifiedType, attributeName,
+                             generatedJavaFiles);
         }
-        String attrParam = getListAttribute(attrQualifiedType, attr.getCompilerAnnotation());
+        String attrParam = getListAttribute(attrQualifiedType,
+                                            attr.getCompilerAnnotation());
         return getGetter(attrParam, attributeName, generatedJavaFiles);
     }
 
@@ -367,15 +388,19 @@
     static String getGetter(String type, String name, int generatedJavaFiles) {
         String ret = parseTypeForReturnValue(type);
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
-            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCapitalCase(name)
-                    + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
-                    EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
-                    RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE +
+                    GET_METHOD_PREFIX + getCapitalCase(name) +
+                    OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
+                    OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
+                    YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
+                    RETURN + SPACE + ret + SEMI_COLAN + NEW_LINE +
+                    FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
         } else {
-            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + 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;
+            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE +
+                    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;
         }
     }
 
@@ -403,7 +428,9 @@
      * @param generatedJavaFiles generated java files
      * @return setter method for class
      */
-    public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
+    public static String getSetterForClass(JavaAttributeInfo attr,
+                                           String className,
+                                           int generatedJavaFiles) {
         String attrQualifiedType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
         boolean isTypeNull = false;
@@ -411,10 +438,13 @@
             isTypeNull = true;
         }
         if (!attr.isListAttr()) {
-            return getSetter(className, attributeName, attrQualifiedType, generatedJavaFiles, isTypeNull, false);
+            return getSetter(className, attributeName, attrQualifiedType,
+                             generatedJavaFiles, isTypeNull, false);
         }
-        String attrParam = getListAttribute(attrQualifiedType, attr.getCompilerAnnotation());
-        return getSetter(className, attributeName, attrParam, generatedJavaFiles, isTypeNull, true);
+        String attrParam = getListAttribute(attrQualifiedType,
+                                            attr.getCompilerAnnotation());
+        return getSetter(className, attributeName, attrParam,
+                         generatedJavaFiles, isTypeNull, true);
     }
 
     /**
@@ -427,38 +457,46 @@
      * @param isList     true if leaf-list
      * @return setter for attribute
      */
-    private static String getSetter(String className, String name, String type, int generatedJavaFiles,
+    private static String getSetter(String className, String name, String type,
+                                    int generatedJavaFiles,
                                     boolean isTypeNull, boolean isList) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
-            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
-                    + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
-                    OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
-                    NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
+                    SET_METHOD_PREFIX + getCapitalCase(name) +
+                    OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS +
+                    SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                    EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE +
+                    FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
         } else if (generatedJavaFiles == GENERATE_EVENT_SUBJECT_CLASS) {
-            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + 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
-                    + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+            return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
+                    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 +
+                    FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
         } else {
-            String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
-                    name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
-                    + OPEN_CURLY_BRACKET;
+            String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
+                    className + BUILDER + SPACE + name + OPEN_PARENTHESIS +
+                    type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
+                    OPEN_CURLY_BRACKET;
             if (!isTypeNull && !isList) {
                 method = method + getValueLeafSetString(name);
             } else {
                 method = method + EMPTY_STRING;
             }
             return method + 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;
+                    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;
         }
 
     }
 
     //Returns value leaf flag setter.
     private static String getValueLeafSetString(String name) {
-        return "\n        getValueLeafFlags().set(LeafIdentifier." + name.toUpperCase() + ".getLeafIndex());";
+        return "\n        getValueLeafFlags().set(LeafIdentifier." +
+                name.toUpperCase() + ".getLeafIndex());";
     }
 
     /**
@@ -482,10 +520,13 @@
      * @return setter for type def's attribute
      */
     private static String getTypeDefSetter(String type, String name) {
-        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(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;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
+                SET_METHOD_PREFIX + getCapitalCase(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;
     }
 
     /**
@@ -507,10 +548,13 @@
      * @param compilerAnnotation compiler annotation
      * @return getter method for interface
      */
-    static String getGetterForInterface(String yangName, String returnType, boolean isList,
-                                        int generatedJavaFiles, YangCompilerAnnotation compilerAnnotation) {
+    static String getGetterForInterface(String yangName, String returnType,
+                                        boolean isList,
+                                        int generatedJavaFiles,
+                                        YangCompilerAnnotation compilerAnnotation) {
         if (!isList) {
-            return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
+            return getGetterInterfaceString(returnType, yangName,
+                                            generatedJavaFiles);
         }
         String listAttr = getListAttribute(returnType, compilerAnnotation);
         return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
@@ -523,13 +567,15 @@
      * @param yangName   attribute name
      * @return getter for interface
      */
-    private static String getGetterInterfaceString(String returnType, String yangName,
+    private static String getGetterInterfaceString(String returnType,
+                                                   String yangName,
                                                    int generatedJavaFiles) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
             return getGetMethodWithArgument(returnType, yangName);
         } else {
-            return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
-                    + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
+            return FOUR_SPACE_INDENTATION + returnType + SPACE +
+                    yangName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+                    SEMI_COLAN;
         }
     }
 
@@ -544,15 +590,18 @@
      * @param compilerAnnotation compiler annotations
      * @return setter method for interface
      */
-    static String getSetterForInterface(String attrName, String attrType, String className,
+    static String getSetterForInterface(String attrName, String attrType,
+                                        String className,
                                         boolean isList, int generatedJavaFiles,
                                         YangCompilerAnnotation compilerAnnotation) {
         if (!isList) {
-            return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
+            return getSetterInterfaceString(className, attrName, attrType,
+                                            generatedJavaFiles);
         }
 
         String listAttr = getListAttribute(attrType, compilerAnnotation);
-        return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
+        return getSetterInterfaceString(className, attrName, listAttr,
+                                        generatedJavaFiles);
     }
 
     /**
@@ -563,14 +612,19 @@
      * @param attrType  attribute type
      * @return setter string
      */
-    private static String getSetterInterfaceString(String className, String attrName, String attrType,
+    private static String getSetterInterfaceString(String className,
+                                                   String attrName,
+                                                   String attrType,
                                                    int generatedJavaFiles) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
-            return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
-                    + OPEN_PARENTHESIS + attrType + OP_PARAM + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
+            return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX +
+                    getCapitalCase(attrName) + OPEN_PARENTHESIS + attrType +
+                    OP_PARAM + SPACE + attrName + CLOSE_PARENTHESIS +
+                    SEMI_COLAN;
         } else {
-            return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
-                    + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
+            return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE +
+                    attrName + OPEN_PARENTHESIS + attrType + SPACE + attrName +
+                    CLOSE_PARENTHESIS + SEMI_COLAN;
         }
     }
 
@@ -591,7 +645,8 @@
      */
     private static String getReturnType(JavaAttributeInfo attr) {
         String returnType = EMPTY_STRING;
-        if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
+        if (attr.isQualifiedName() &&
+                attr.getImportInfo().getPkgInfo() != null) {
             returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
         }
         returnType = returnType + attr.getImportInfo().getClassInfo();
@@ -605,8 +660,8 @@
      * @return build method for interface
      */
     static String getBuildForInterface(String yangName) {
-        return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
-                + NEW_LINE;
+        return FOUR_SPACE_INDENTATION + yangName + SPACE + BUILD +
+                OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -617,16 +672,20 @@
      * @param isRootNode   if root node
      * @return constructor string
      */
-    static String getConstructorStart(String yangName, YangPluginConfig pluginConfig, boolean isRootNode) {
+    static String getConstructorStart(String yangName,
+                                      YangPluginConfig pluginConfig,
+                                      boolean isRootNode) {
         String javadoc = getConstructorString(yangName, pluginConfig);
 
         String returnType = getCapitalCase(DEFAULT) + yangName;
         if (isRootNode) {
             returnType = yangName + OP_PARAM;
         }
-        String constructor = FOUR_SPACE_INDENTATION + PROTECTED + SPACE + returnType +
-                OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        String constructor =
+                FOUR_SPACE_INDENTATION + PROTECTED + SPACE + returnType +
+                        OPEN_PARENTHESIS + yangName + BUILDER + SPACE +
+                        BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS +
+                        SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
         return javadoc + constructor;
     }
 
@@ -638,24 +697,31 @@
      * @param pluginConfig       plugin configurations
      * @return constructor for class
      */
-    public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
+    public static String getConstructor(JavaAttributeInfo attr,
+                                        int generatedJavaFiles,
                                         YangPluginConfig pluginConfig) {
 
         String attributeName = attr.getAttributeName();
         String constructor;
 
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
-            constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
-                    + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
-                    + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
-                    + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
-                    + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+            constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD +
+                    getCamelCase(attributeName,
+                                 pluginConfig.getConflictResolver()) + SPACE +
+                    EQUAL + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD +
+                    GET_METHOD_PREFIX +
+                    getCapitalCase(getCamelCase(attributeName, pluginConfig
+                            .getConflictResolver())) + OPEN_PARENTHESIS +
+                    CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
         } else {
-            constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
-                    + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
-                    + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
-                    + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
-                    OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+            constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD +
+                    getCamelCase(attributeName,
+                                 pluginConfig.getConflictResolver()) + SPACE +
+                    EQUAL + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD +
+                    getCamelCase(attributeName,
+                                 pluginConfig.getConflictResolver()) +
+                    OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN +
+                    NEW_LINE;
         }
         return constructor;
     }
@@ -669,15 +735,16 @@
      * @param pluginConfig plugin configurations
      * @return rpc method string
      */
-    public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
+    public static String getRpcServiceMethod(String rpcName, String inputName,
+                                             String outputName,
                                              YangPluginConfig pluginConfig) {
 
         rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
         if (!inputName.equals(EMPTY_STRING)) {
             inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
         }
-        return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName
-                + CLOSE_PARENTHESIS + SEMI_COLAN;
+        return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName +
+                OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SEMI_COLAN;
     }
 
     /**
@@ -689,7 +756,8 @@
      * @param pluginConfig plugin configurations
      * @return rpc method string
      */
-    public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
+    public static String getRpcManagerMethod(String rpcName, String inputName,
+                                             String outputName,
                                              YangPluginConfig pluginConfig) {
 
         rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
@@ -697,12 +765,15 @@
             inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
         }
 
-        String method = getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
-                + OPEN_PARENTHESIS + inputName + CLOSE_PARENTHESIS + SPACE
-                + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
+        String method =
+                getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
+                        outputName + SPACE + rpcName + OPEN_PARENTHESIS +
+                        inputName + CLOSE_PARENTHESIS + SPACE +
+                        OPEN_CURLY_BRACKET + NEW_LINE +
+                        EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
         if (!outputName.contentEquals(VOID)) {
-            method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + parseTypeForReturnValue(outputName) + SEMI_COLAN
-                    + NEW_LINE;
+            method += EIGHT_SPACE_INDENTATION + RETURN + SPACE +
+                    parseTypeForReturnValue(outputName) + SEMI_COLAN + NEW_LINE;
         }
         method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
 
@@ -721,11 +792,12 @@
         if (isRootNode) {
             type = yangName + OP_PARAM;
         }
-        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 +
-                type + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
-                + NEW_LINE + FOUR_SPACE_INDENTATION + 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 + type + OPEN_PARENTHESIS + THIS +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
+                FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -735,9 +807,12 @@
      * @param modifierType modifier type for default constructor
      * @return Default constructor for class
      */
-    private static String getDefaultConstructor(String name, String modifierType) {
-        return FOUR_SPACE_INDENTATION + modifierType + SPACE + name + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE
-                + OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+    private static String getDefaultConstructor(String name,
+                                                String modifierType) {
+        return FOUR_SPACE_INDENTATION + modifierType + SPACE + name +
+                OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -746,9 +821,11 @@
      * @return string method's open string
      */
     static String getToStringMethodOpen() {
-        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;
+        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;
     }
 
     /**
@@ -774,21 +851,26 @@
 
 
     static String getIfConditionBegin(String indentation, String condition) {
-        return indentation + IF + SPACE + OPEN_PARENTHESIS + condition + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
-                + NEW_LINE;
+        return indentation + IF + SPACE + OPEN_PARENTHESIS + condition +
+                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
-    static String getElseIfConditionBegin(String indentation, String condition) {
-        return indentation + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE + getIfConditionBegin("", condition);
+    static String getElseIfConditionBegin(String indentation,
+                                          String condition) {
+        return indentation + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE +
+                getIfConditionBegin("", condition);
     }
 
     static String getBlockEnd(String indentation) {
         return indentation + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
-    static String getCollectionIteratorForLoopBegin(String indentation, String loopVar, String collection) {
-        return indentation + FOR + SPACE + OPEN_PARENTHESIS + loopVar + SPACE + COLAN + SPACE + collection
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+    static String getCollectionIteratorForLoopBegin(String indentation,
+                                                    String loopVar,
+                                                    String collection) {
+        return indentation + FOR + SPACE + OPEN_PARENTHESIS + loopVar + SPACE +
+                COLAN + SPACE + collection + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /*
@@ -797,7 +879,8 @@
      * @return omit null value string
      */
     static String getOmitNullValueString() {
-        return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING + NEW_LINE;
+        return TWELVE_SPACE_INDENTATION + PERIOD + OMIT_NULL_VALUE_STRING +
+                NEW_LINE;
     }
 
     /**
@@ -806,8 +889,9 @@
      * @return to string method close string
      */
     static String getToStringMethodClose() {
-        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;
+        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;
     }
 
     /**
@@ -819,8 +903,9 @@
     public static String getToStringMethod(JavaAttributeInfo attr) {
 
         String attributeName = attr.getAttributeName();
-        return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES
-                + COMMA + SPACE + attributeName + CLOSE_PARENTHESIS;
+        return TWELVE_SPACE_INDENTATION + PERIOD + ADD_STRING +
+                OPEN_PARENTHESIS + QUOTES + attributeName + QUOTES + COMMA +
+                SPACE + attributeName + CLOSE_PARENTHESIS;
     }
 
     /**
@@ -830,11 +915,13 @@
      * @param pluginConfig plugin configurations
      * @return from string method's open string
      */
-    static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
-        return getJavaDoc(FROM_METHOD, className, false, pluginConfig, null) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
-                + STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
-                + STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
-                + OPEN_CURLY_BRACKET + NEW_LINE;
+    static String getFromStringMethodSignature(String className,
+                                               YangPluginConfig pluginConfig) {
+        return getJavaDoc(FROM_METHOD, className, false, pluginConfig, null) +
+                FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
+                className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS +
+                STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME +
+                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -843,24 +930,29 @@
      * @return from string method's close string
      */
     static String getFromStringMethodClose() {
-        return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
-                CLOSE_CURLY_BRACKET + NEW_LINE;
+        return EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN +
+                NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+                NEW_LINE;
     }
 
     /**
      * Return from string method's body string.
      *
      * @param attr                    attribute info
-     * @param fromStringAttributeInfo attribute info for the from string wrapper type
+     * @param fromStringAttributeInfo attribute info for the from string wrapper
+     *                                type
      * @return from string method's body string
      */
     public static String getFromStringMethod(JavaAttributeInfo attr,
                                              JavaAttributeInfo fromStringAttributeInfo) {
 
-        return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
-                + getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE + TWELVE_SPACE_INDENTATION
-                + getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
-                + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+        return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE +
+                TWELVE_SPACE_INDENTATION +
+                getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE +
+                TWELVE_SPACE_INDENTATION +
+                getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION +
+                getCatchSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -878,7 +970,8 @@
      * @return sub string with return statement for union's from string method
      */
     private static String getReturnOfSubString() {
-        return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL + CLOSE_PARENTHESIS + SEMI_COLAN;
+        return RETURN + SPACE + OF + OPEN_PARENTHESIS + TMP_VAL +
+                CLOSE_PARENTHESIS + SEMI_COLAN;
     }
 
     /**
@@ -887,8 +980,9 @@
      * @return sub string with catch statement for union's from string method
      */
     private static String getCatchSubString() {
-        return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS + EXCEPTION + SPACE + EXCEPTION_VAR
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET;
+        return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE + OPEN_PARENTHESIS +
+                EXCEPTION + SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET;
     }
 
     /**
@@ -902,38 +996,60 @@
 
         String targetDataType = getReturnType(attr);
         if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
-            String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType
-                    + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-            lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
-                    + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + OPEN_CURLY_BRACKET + SINGLE_QUOTE
-                    + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-            lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
-                    + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + CLOSE_CURLY_BRACKET + SINGLE_QUOTE
-                    + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-            lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME
-                    + PERIOD + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-            lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE + SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR
-                    + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD + SPLIT_STRING + OPEN_PARENTHESIS
-                    + QUOTES + COMMA + QUOTES + COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-            lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
-                    + BIT_TEMP_VAR + SPACE + COLON + SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE
-                    + OPEN_CURLY_BRACKET + NEW_LINE;
-            lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL + SPACE + BIT_TEMP_VAR + PERIOD
-                    + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
-            lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD + SET_METHOD_PREFIX + OPEN_PARENTHESIS
-                    + INTEGER_WRAPPER + PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR + CLOSE_PARENTHESIS
-                    + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+            String lines =
+                    targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE +
+                            NEW + SPACE + targetDataType + OPEN_PARENTHESIS +
+                            CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+            lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE +
+                    EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD +
+                    REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE +
+                    OPEN_CURLY_BRACKET + SINGLE_QUOTE + COMMA + SPACE +
+                    SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS +
+                    SEMI_COLAN + NEW_LINE;
+            lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE +
+                    EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD +
+                    REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE +
+                    CLOSE_CURLY_BRACKET + SINGLE_QUOTE + COMMA + SPACE +
+                    SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS +
+                    SEMI_COLAN + NEW_LINE;
+            lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE +
+                    EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD +
+                    TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+                    SEMI_COLAN + NEW_LINE;
+            lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE +
+                    SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR + SPACE +
+                    EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD +
+                    SPLIT_STRING + OPEN_PARENTHESIS + QUOTES + COMMA + QUOTES +
+                    COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN +
+                    NEW_LINE;
+            lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS +
+                    STRING_DATA_TYPE + SPACE + BIT_TEMP_VAR + SPACE + COLON +
+                    SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE +
+                    OPEN_CURLY_BRACKET + NEW_LINE;
+            lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL +
+                    SPACE + BIT_TEMP_VAR + PERIOD + TRIM_STRING +
+                    OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+                    SEMI_COLAN + NEW_LINE;
+            lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD +
+                    SET_METHOD_PREFIX + OPEN_PARENTHESIS + INTEGER_WRAPPER +
+                    PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR +
+                    CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN +
+                    NEW_LINE;
             lines += TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
             return lines;
         } else if (attr.getAttributeType().getDataType() == BINARY) {
-            return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + BASE64 + PERIOD
-                    + GET_DECODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS
-                    + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
+            return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE +
+                    BASE64 + PERIOD + GET_DECODER + OPEN_PARENTHESIS +
+                    CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS +
+                    FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
         } else {
-            String parseFromStringMethod = getParseFromStringMethod(targetDataType,
-                                                                    fromStringAttributeInfo.getAttributeType());
-            return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod
-                    + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
+            String parseFromStringMethod =
+                    getParseFromStringMethod(targetDataType,
+                                             fromStringAttributeInfo
+                                                     .getAttributeType());
+            return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE +
+                    parseFromStringMethod + OPEN_PARENTHESIS +
+                    FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
         }
     }
 
@@ -943,10 +1059,11 @@
      * @return hash code method open string
      */
     static String getHashCodeMethodOpen() {
-        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;
+        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;
     }
 
     /**
@@ -958,9 +1075,8 @@
     static String getHashCodeMethodClose(String hashcodeString) {
         hashcodeString = trimAtLast(hashcodeString, COMMA);
         hashcodeString = trimAtLast(hashcodeString, SPACE);
-        return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
-                CLOSE_CURLY_BRACKET
-                + NEW_LINE;
+        return hashcodeString + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
+                FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -980,10 +1096,12 @@
      * @return equals method open string
      */
     static String getEqualsMethodOpen(String 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);
+        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);
     }
 
     /**
@@ -992,9 +1110,12 @@
      * @return if condition string
      */
     private static String getEqualsMethodsCommonIfCondition() {
-        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;
+        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;
     }
 
     /**
@@ -1004,10 +1125,13 @@
      * @return if condition string
      */
     private static String getEqualsMethodsSpecificIfCondition(String className) {
-        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;
+        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;
     }
 
     /**
@@ -1020,10 +1144,12 @@
         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;
+        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;
     }
 
     /**
@@ -1035,9 +1161,10 @@
     public static String getEqualsMethod(JavaAttributeInfo attr) {
 
         String attributeName = 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;
+        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;
     }
 
     /**
@@ -1049,10 +1176,13 @@
      */
     static String getOfMethod(String name, JavaAttributeInfo attr) {
         String attrQualifiedType = getReturnType(attr);
-        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
-                + attrQualifiedType + 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;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name +
+                SPACE + OF + OPEN_PARENTHESIS + attrQualifiedType + 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;
     }
 
     /**
@@ -1063,14 +1193,16 @@
      * @param pluginConfig           plugin configurations
      * @return of method's string and java doc for special type
      */
-    public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
+    public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr,
+                                                     String generatedJavaClassName,
                                                      YangPluginConfig pluginConfig) {
 
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
 
-        return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
-                + getOfMethodString(attrType, generatedJavaClassName);
+        return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " +
+                attrName, false, pluginConfig, null) +
+                getOfMethodString(attrType, generatedJavaClassName);
     }
 
     /**
@@ -1081,10 +1213,13 @@
      * @return of method's string
      */
     private static String getOfMethodString(String type, String className) {
-        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
-                + type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
-                + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+        return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
+                className + SPACE + OF + OPEN_PARENTHESIS + type + SPACE +
+                VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
+                NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW +
+                SPACE + className + OPEN_PARENTHESIS + VALUE +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
+                FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -1101,8 +1236,10 @@
 
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
-        return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
-                + getTypeConstructorString(attrType, attrName, generatedJavaClassName);
+        return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName +
+                " for type " + attrName, false, pluginConfig, null) +
+                getTypeConstructorString(attrType, attrName,
+                                         generatedJavaClassName);
     }
 
     /**
@@ -1116,8 +1253,11 @@
      * @param addFirst               whether int came first or uInt came first
      * @return string and java doc for constructor of type class
      */
-    public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
-            attr2, String generatedJavaClassName, YangPluginConfig pluginConfig, ValidatorTypeForUnionTypes type,
+    public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1,
+                                                            JavaAttributeInfo attr2,
+                                                            String generatedJavaClassName,
+                                                            YangPluginConfig pluginConfig,
+                                                            ValidatorTypeForUnionTypes type,
                                                             boolean addFirst) {
 
         String attrType = getReturnType(attr1);
@@ -1132,12 +1272,17 @@
 
         String appDataStructure = null;
         if (attr1 != null && attr1.getCompilerAnnotation() != null) {
-            appDataStructure = attr1.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
+            appDataStructure =
+                    attr1.getCompilerAnnotation().getYangAppDataStructure()
+                            .getDataStructure().name();
         }
-        return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig,
-                          appDataStructure) + getTypeConstructorString(attrType, attrName1,
-                                                                       attrName2, generatedJavaClassName, type,
-                                                                       addFirst);
+        return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName +
+                                  " for type " + attrName1, false,
+                          pluginConfig, appDataStructure) +
+                getTypeConstructorString(attrType, attrName1,
+                                         attrName2, generatedJavaClassName,
+                                         type,
+                                         addFirst);
     }
 
     /**
@@ -1148,11 +1293,14 @@
      * @param className class name
      * @return type constructor string
      */
-    private static String getTypeConstructorString(String type, String name, String className) {
-        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;
+    private static String getTypeConstructorString(String type, String name,
+                                                   String className) {
+        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;
     }
 
     /**
@@ -1163,12 +1311,16 @@
      * @param className class attr1
      * @return type constructor string
      */
-    private static String getTypeConstructorString(String type, String attr1, String attr2, String className,
-                                                   ValidatorTypeForUnionTypes validatorType, boolean addInt) {
+    private static String getTypeConstructorString(String type, String attr1,
+                                                   String attr2,
+                                                   String className,
+                                                   ValidatorTypeForUnionTypes validatorType,
+                                                   boolean addInt) {
 
         String constructor;
-        constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className +
+                OPEN_PARENTHESIS + type + SPACE + VALUE + CLOSE_PARENTHESIS +
+                SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
 
         String name1;
         String name2;
@@ -1179,14 +1331,16 @@
             name1 = attr2;
             name2 = attr1;
         }
-        constructor = constructor + ifConditionForIntInTypeDefConstructor(validatorType, addInt) +
-                TWELVE_SPACE_INDENTATION + THIS + PERIOD
-                + name1 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + CLOSE_CURLY_BRACKET + SPACE + ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION
-                + THIS + PERIOD
-                + name2 + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION
-                + CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION
-                + CLOSE_CURLY_BRACKET;
+        constructor = constructor +
+                ifConditionForIntInTypeDefConstructor(validatorType, addInt) +
+                TWELVE_SPACE_INDENTATION + THIS + PERIOD + name1 + SPACE +
+                EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE +
+                EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + ELSE +
+                SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                TWELVE_SPACE_INDENTATION + THIS + PERIOD + name2 + SPACE +
+                EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE +
+                EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE +
+                FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
 
         return constructor;
     }
@@ -1197,9 +1351,12 @@
      * @return interface of add augmentation
      */
     static String getAddAugmentInfoMethodInterface() {
-        return generateForAddAugmentation() + FOUR_SPACE_INDENTATION + VOID + SPACE +
-                ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
-                SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+        return generateForAddAugmentation() + FOUR_SPACE_INDENTATION + VOID +
+                SPACE +
+                ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS +
+                OBJECT_STRING + SPACE + VALUE + COMMA +
+                SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -1208,12 +1365,18 @@
      * @return implementation of add augmentation
      */
     static String getAddAugmentInfoMethodImpl() {
-        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE +
-                ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS + OBJECT_STRING + SPACE + VALUE + COMMA +
-                SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
-                NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
-                OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE + VALUE +
-                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
+                VOID + SPACE +
+                ADD_STRING + YANG_AUGMENTED_INFO + OPEN_PARENTHESIS +
+                OBJECT_STRING + SPACE + VALUE + COMMA +
+                SPACE + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
+                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
+                NEW_LINE + EIGHT_SPACE_INDENTATION +
+                getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + PUT +
+                OPEN_PARENTHESIS + CLASS + OBJECT_STRING + COMMA + SPACE +
+                VALUE +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
+                FOUR_SPACE_INDENTATION +
                 CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
@@ -1223,8 +1386,10 @@
      * @return interface of get YANG augment info
      */
     static String getYangAugmentInfoInterface() {
-        return generateForGetAugmentation() + FOUR_SPACE_INDENTATION + OBJECT_STRING + SPACE +
-                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
+        return generateForGetAugmentation() + FOUR_SPACE_INDENTATION +
+                OBJECT_STRING + SPACE +
+                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS +
+                CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
                 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
@@ -1236,10 +1401,14 @@
     static String getYangAugmentInfoImpl() {
         return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
                 OBJECT_STRING + SPACE +
-                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS + CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
-                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
-                RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + PERIOD + GET + OPEN_PARENTHESIS + CLASS +
-                OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
+                getSmallCase(YANG_AUGMENTED_INFO) + OPEN_PARENTHESIS +
+                CLASS_STRING + SPACE + CLASS + OBJECT_STRING +
+                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                EIGHT_SPACE_INDENTATION +
+                RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP +
+                PERIOD + GET + OPEN_PARENTHESIS + CLASS +
+                OBJECT_STRING + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
+                FOUR_SPACE_INDENTATION +
                 CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
@@ -1249,10 +1418,15 @@
      * @return implementation of get YANG augment info
      */
     static String getYangAugmentInfoMapInterface(YangPluginConfig pluginConfig) {
-        return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig, null)
-                + FOUR_SPACE_INDENTATION + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
-                QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
-                SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
+        return getJavaDoc(GETTER_METHOD,
+                          getSmallCase(YANG_AUGMENTED_INFO) + MAP, false,
+                          pluginConfig, null) + FOUR_SPACE_INDENTATION + MAP +
+                DIAMOND_OPEN_BRACKET +
+                CLASS_STRING + DIAMOND_OPEN_BRACKET +
+                QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE +
+                OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
+                SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP +
+                OPEN_PARENTHESIS +
                 CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
@@ -1262,14 +1436,17 @@
      * @return implementation of get YANG augment info
      */
     static String getYangAugmentInfoMapImpl() {
-        return getOverRideString()
-                + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
-                MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET + QUESTION_MARK +
-                DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET + SPACE +
+        return getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
+                MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING +
+                DIAMOND_OPEN_BRACKET + QUESTION_MARK +
+                DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING +
+                DIAMOND_CLOSE_BRACKET + SPACE +
                 getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
-                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
-                RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + SEMI_COLAN + NEW_LINE
-                + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
+                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                EIGHT_SPACE_INDENTATION +
+                RETURN + SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP +
+                SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -1279,12 +1456,14 @@
      * @return enum's constructor
      */
     static String getEnumsConstructor(String className) {
-        return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE +
-                COMMA + SPACE + STRING_DATA_TYPE + SPACE + STR_VAL + CLOSE_PARENTHESIS + SPACE
-                + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
-                + SPACE + VALUE + SEMI_COLAN + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + SCHEMA_NAME + SPACE + EQUAL
-                + SPACE + STR_VAL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+        return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT +
+                SPACE + VALUE + COMMA + SPACE + STRING_DATA_TYPE + SPACE +
+                STR_VAL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
+                NEW_LINE + EIGHT_SPACE_INDENTATION +
+                getSmallCase(className) + SPACE + EQUAL + SPACE + VALUE +
+                SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + SCHEMA_NAME +
+                SPACE + EQUAL + SPACE + STR_VAL + SEMI_COLAN + NEW_LINE +
+                FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -1294,29 +1473,36 @@
      * @param pluginConfig plugin configurations
      * @return of method
      */
-    static String getEnumsOfValueMethod(String className, YangEnumeration enumeration,
+    static String getEnumsOfValueMethod(String className,
+                                        YangEnumeration enumeration,
                                         YangPluginConfig pluginConfig) {
 
-        String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(className) + SPACE
-                + OF + OPEN_PARENTHESIS
-                + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        String method =
+                FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
+                        getCapitalCase(className) + SPACE + OF +
+                        OPEN_PARENTHESIS + INT + SPACE + VALUE +
+                        CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
+                        NEW_LINE + EIGHT_SPACE_INDENTATION + SWITCH + SPACE +
+                        OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SPACE +
+                        OPEN_CURLY_BRACKET + NEW_LINE;
         int value;
         String str;
         for (YangEnum yangEnum : enumeration.getEnumSet()) {
             value = yangEnum.getValue();
             str = getEnumJavaAttribute(yangEnum.getNamedValue()).toUpperCase();
-            method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLON + NEW_LINE
-                    + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
-                    + str + SEMI_COLAN + NEW_LINE;
+            method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value +
+                    COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN +
+                    SPACE + getCapitalCase(className) + PERIOD + str +
+                    SEMI_COLAN + NEW_LINE;
         }
-        method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION
-                + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
-                + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+        method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON +
+                NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + NULL +
+                SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET;
 
-        return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for value", false, pluginConfig, null)
-                + method;
+        return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for value",
+                          false, pluginConfig, null) + method;
     }
 
     /**
@@ -1329,26 +1515,33 @@
                                                  YangPluginConfig pluginConfig,
                                                  YangEnumeration enumeration) {
 
-        String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + getCapitalCase(enumName) + SPACE
-                + OF + OPEN_PARENTHESIS
-                + STRING_DATA_TYPE + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
-                + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
-                + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        String method =
+                FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
+                        getCapitalCase(enumName) + SPACE + OF +
+                        OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE + VALUE +
+                        CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
+                        NEW_LINE + EIGHT_SPACE_INDENTATION + SWITCH + SPACE +
+                        OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SPACE +
+                        OPEN_CURLY_BRACKET + NEW_LINE;
         String value;
         for (YangEnum yangEnum : enumeration.getEnumSet()) {
 
-            value = getEnumJavaAttribute(yangEnum.getNamedValue()).toUpperCase();
+            value = getEnumJavaAttribute(yangEnum.getNamedValue())
+                    .toUpperCase();
             method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + QUOTES +
-                    yangEnum.getNamedValue() + QUOTES + COLON + NEW_LINE
-                    + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(enumName) + PERIOD
-                    + value + SEMI_COLAN + NEW_LINE;
+                    yangEnum.getNamedValue() + QUOTES + COLON + NEW_LINE +
+                    SIXTEEN_SPACE_INDENTATION + RETURN + SPACE +
+                    getCapitalCase(enumName) + PERIOD + value + SEMI_COLAN +
+                    NEW_LINE;
         }
-        method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION
-                + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
-                + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+        method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON +
+                NEW_LINE + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + NULL +
+                SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET + NEW_LINE + FOUR_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET;
 
-        return getJavaDoc(OF_METHOD, getCapitalCase(enumName) + " for " + SCHEMA_NAME, false, pluginConfig, null)
-                + method;
+        return getJavaDoc(OF_METHOD, getCapitalCase(enumName) + " for " +
+                SCHEMA_NAME, false, pluginConfig, null) + method;
     }
 
     /**
@@ -1358,7 +1551,8 @@
      * @param yangType       YANG type
      * @return parsed string
      */
-    private static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
+    private static String getParseFromStringMethod(String targetDataType,
+                                                   YangType<?> yangType) {
         YangDataTypes type = yangType.getDataType();
 
         switch (type) {
@@ -1392,11 +1586,15 @@
             case DERIVED:
                 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
             default:
-                throw new TranslatorException("given data type is not supported. " +
-                                                      yangType.getDataTypeName() + " in " +
-                                                      yangType.getLineNumber() + " at " +
-                                                      yangType.getCharPosition()
-                                                      + " in " + yangType.getFileName());
+                throw new TranslatorException("given data type is not " +
+                                                      "supported. " +
+                                                      yangType.getDataTypeName() +
+                                                      " in " +
+                                                      yangType.getLineNumber() +
+                                                      " at " +
+                                                      yangType.getCharPosition() +
+                                                      " in " +
+                                                      yangType.getFileName());
         }
     }
 
@@ -1415,28 +1613,39 @@
         String parentName;
         String returnType;
         YangNode methodNode;
-        YangPluginConfig pluginConfig = ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig();
+        YangPluginConfig pluginConfig =
+                ((JavaFileInfoContainer) parent).getJavaFileInfo()
+                        .getPluginConfig();
         for (YangAtomicPath nodeId : targets) {
             augmentedNode = nodeId.getResolvedNode().getParent();
             methodNode = nodeId.getResolvedNode();
-            if (((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName() != null) {
-                curNodeName = ((JavaFileInfoContainer) methodNode).getJavaFileInfo().getJavaName();
+            if (((JavaFileInfoContainer) methodNode).getJavaFileInfo()
+                    .getJavaName() != null) {
+                curNodeName =
+                        ((JavaFileInfoContainer) methodNode).getJavaFileInfo()
+                                .getJavaName();
             } else {
-                curNodeName = getCapitalCase(getCamelCase(methodNode.getName(), pluginConfig
-                        .getConflictResolver()));
+                curNodeName = getCapitalCase(getCamelCase(methodNode.getName(),
+                                                          pluginConfig.getConflictResolver()));
             }
-            returnType = getAugmentedClassNameForDataMethods(augmentedNode, parent);
-            parentName = getParentNodeNameForDataMethods(augmentedNode, pluginConfig);
-            method = generateForGetMethodWithAttribute(returnType)
-                    + getGetMethodWithArgument(returnType, AUGMENTED + parentName
-                    + getCapitalCase(curNodeName)) + NEW_LINE;
+            returnType =
+                    getAugmentedClassNameForDataMethods(augmentedNode, parent);
+            parentName = getParentNodeNameForDataMethods(augmentedNode,
+                                                         pluginConfig);
+            method = generateForGetMethodWithAttribute(returnType) +
+                    getGetMethodWithArgument(returnType, AUGMENTED +
+                            parentName + getCapitalCase(curNodeName)) + NEW_LINE;
             methods.append(method);
 
-            method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
-                    getCapitalCase(parentName) + getCapitalCase(curNodeName), false, pluginConfig, null) +
+            method = getJavaDoc(MANAGER_SETTER_METHOD,
+                                AUGMENTED + getCapitalCase(parentName) +
+                                        getCapitalCase(curNodeName), false,
+                                pluginConfig, null) +
                     getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
-                                                  getCapitalCase(curNodeName), returnType, parentName, false,
-                                          GENERATE_SERVICE_AND_MANAGER, null) + NEW_LINE;
+                                                  getCapitalCase(curNodeName),
+                                          returnType, parentName, false,
+                                          GENERATE_SERVICE_AND_MANAGER, null) +
+                    NEW_LINE;
             methods.append(method);
         }
         return methods.toString();
@@ -1455,25 +1664,31 @@
         } else {
             newType = INT;
         }
-        String method = generateForValidatorMethod() + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
-                SPACE +
-                VALIDATE_RANGE +
-                OPEN_PARENTHESIS
-                + type + SPACE + MIN_RANGE + COMMA + SPACE + type + SPACE + MAX_RANGE + COMMA + SPACE +
-                newType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        String method = generateForValidatorMethod() + FOUR_SPACE_INDENTATION +
+                PRIVATE + SPACE + BOOLEAN_DATA_TYPE + SPACE + VALIDATE_RANGE +
+                OPEN_PARENTHESIS + type + SPACE + MIN_RANGE + COMMA + SPACE +
+                type + SPACE + MAX_RANGE + COMMA + SPACE + newType + SPACE +
+                VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
+                NEW_LINE;
         if (type.contentEquals(BIG_INTEGER)) {
-            method = method + EIGHT_SPACE_INDENTATION + BIG_INTEGER + SPACE + getSmallCase(BIG_INTEGER)
-                    + SPACE + EQUAL + SPACE + NEW + SPACE + BIG_INTEGER + OPEN_PARENTHESIS + QUOTES + SPACE +
-                    QUOTES + SPACE + ADD + SPACE + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE +
-                    EIGHT_SPACE_INDENTATION + RETURN + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo"
-                    + OPEN_PARENTHESIS + MIN_RANGE + CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SPACE + AND +
-                    AND + SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo" + OPEN_PARENTHESIS + MAX_RANGE +
-                    CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" + SEMI_COLAN + NEW_LINE;
+            method = method + EIGHT_SPACE_INDENTATION + BIG_INTEGER + SPACE +
+                    getSmallCase(BIG_INTEGER) + SPACE + EQUAL + SPACE + NEW +
+                    SPACE + BIG_INTEGER + OPEN_PARENTHESIS + QUOTES + SPACE +
+                    QUOTES + SPACE + ADD + SPACE + VALUE + CLOSE_PARENTHESIS +
+                    SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN +
+                    SPACE + getSmallCase(BIG_INTEGER) + PERIOD + "compareTo" +
+                    OPEN_PARENTHESIS + MIN_RANGE + CLOSE_PARENTHESIS + SPACE +
+                    EQUAL + EQUAL + " 1" + SPACE + AND +
+                    AND + SPACE + getSmallCase(BIG_INTEGER) + PERIOD +
+                    "compareTo" + OPEN_PARENTHESIS + MAX_RANGE +
+                    CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + " 1" +
+                    SEMI_COLAN + NEW_LINE;
         } else {
-            method = method + EIGHT_SPACE_INDENTATION
-                    + RETURN + SPACE + VALUE + SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE + SPACE + AND +
-                    AND + SPACE + VALUE + SPACE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN +
-                    NEW_LINE;
+            method = method + EIGHT_SPACE_INDENTATION + RETURN + SPACE + VALUE +
+                    SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE +
+                    SPACE + AND + AND + SPACE + VALUE + SPACE +
+                    DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE +
+                    SEMI_COLAN + NEW_LINE;
         }
         return method + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
@@ -1485,36 +1700,48 @@
      * @param addFirst true int/long need to be added first
      * @return if condition string for typedef constructor
      */
-    private static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type, boolean addFirst) {
-        String condition = EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + VALIDATE_RANGE + OPEN_PARENTHESIS;
+    private static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type,
+                                                                boolean addFirst) {
+        String condition =
+                EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
+                        VALIDATE_RANGE + OPEN_PARENTHESIS;
 
         if (type == INT_TYPE_CONFLICT) {
             if (addFirst) {
-                condition = condition + INT_MIN_RANGE + COMMA + SPACE + INT_MAX_RANGE + COMMA + SPACE + VALUE;
+                condition = condition + INT_MIN_RANGE + COMMA + SPACE +
+                        INT_MAX_RANGE + COMMA + SPACE + VALUE;
             } else {
-                condition = condition + UINT_MIN_RANGE + COMMA + SPACE + UINT_MAX_RANGE + COMMA + SPACE + VALUE;
+                condition = condition + UINT_MIN_RANGE + COMMA + SPACE +
+                        UINT_MAX_RANGE + COMMA + SPACE + VALUE;
             }
         } else if (type == SHORT_TYPE_CONFLICT) {
             if (addFirst) {
-                condition = condition + SHORT_MIN_RANGE + COMMA + SPACE + SHORT_MAX_RANGE + COMMA + SPACE + VALUE;
+                condition = condition + SHORT_MIN_RANGE + COMMA + SPACE +
+                        SHORT_MAX_RANGE + COMMA + SPACE + VALUE;
             } else {
-                condition = condition + UINT8_MIN_RANGE + COMMA + SPACE + UINT8_MAX_RANGE + COMMA + SPACE + VALUE;
+                condition = condition + UINT8_MIN_RANGE + COMMA + SPACE +
+                        UINT8_MAX_RANGE + COMMA + SPACE + VALUE;
             }
         } else {
             if (addFirst) {
-                condition = condition + LONG_MIN_RANGE + COMMA + SPACE + LONG_MAX_RANGE + COMMA + SPACE + VALUE;
+                condition = condition + LONG_MIN_RANGE + COMMA + SPACE +
+                        LONG_MAX_RANGE + COMMA + SPACE + VALUE;
             } else {
-                condition = condition + ULONG_MIN_RANGE + COMMA + SPACE + ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
+                condition = condition + ULONG_MIN_RANGE + COMMA + SPACE +
+                        ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
             }
         }
-        return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+        return condition + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     //Get method with arguments.
-    private static String getGetMethodWithArgument(String returnType, String yangName) {
-        return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCapitalCase(yangName)
-                + OPEN_PARENTHESIS + returnType + OP_PARAM + SPACE + getSmallCase(returnType) + CLOSE_PARENTHESIS +
-                SEMI_COLAN;
+    private static String getGetMethodWithArgument(String returnType,
+                                                   String yangName) {
+        return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX +
+                getCapitalCase(yangName) + OPEN_PARENTHESIS + returnType +
+                OP_PARAM + SPACE + getSmallCase(returnType) +
+                CLOSE_PARENTHESIS + SEMI_COLAN;
     }
 
     /**
@@ -1524,9 +1751,12 @@
      * @param className name of the class
      * @return add to list method interface
      */
-    public static String getAddToListMethodInterface(JavaAttributeInfo attr, String className) {
-        return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + ADD_STRING + getCapitalCase(TO) +
-                getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS + getReturnType(attr) + SPACE +
+    public static String getAddToListMethodInterface(JavaAttributeInfo attr,
+                                                     String className) {
+        return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE +
+                ADD_STRING + getCapitalCase(TO) +
+                getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS +
+                getReturnType(attr) + SPACE +
                 VALUE + CLOSE_PARENTHESIS + SEMI_COLAN;
     }
 
@@ -1538,19 +1768,24 @@
      * @param isRoot                 is root
      * @return add to list method impl
      */
-    public static String getAddToListMethodImpl(JavaAttributeInfo attr, String generatedJavaClassName, boolean isRoot) {
+    public static String getAddToListMethodImpl(JavaAttributeInfo attr,
+                                                String generatedJavaClassName,
+                                                boolean isRoot) {
         String retString = "";
         if (!isRoot) {
             retString = getOverRideString();
         }
-        return retString + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + generatedJavaClassName + BUILDER + SPACE +
-                ADD_STRING +
-                getCapitalCase(TO) + getCapitalCase(attr.getAttributeName()) + OPEN_PARENTHESIS +
-                getReturnType(attr) + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
-                + NEW_LINE + EIGHT_SPACE_INDENTATION + attr.getAttributeName() + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
-                + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN +
-                NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN +
-                NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+        return retString + FOUR_SPACE_INDENTATION + PUBLIC + SPACE +
+                generatedJavaClassName + BUILDER + SPACE + ADD_STRING +
+                getCapitalCase(TO) + getCapitalCase(attr.getAttributeName()) +
+                OPEN_PARENTHESIS + getReturnType(attr) + SPACE + VALUE +
+                CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+                EIGHT_SPACE_INDENTATION + attr.getAttributeName() +
+                OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING +
+                OPEN_PARENTHESIS + VALUE + CLOSE_PARENTHESIS + SEMI_COLAN +
+                NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS +
+                SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
+                CLOSE_CURLY_BRACKET;
     }
 
     /**
@@ -1560,10 +1795,14 @@
      * @return builder method for class
      */
     static String builderMethod(String name) {
-        return NEW_LINE + generateForBuilderMethod(name) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
-                + name + BUILDER + SPACE + getSmallCase(BUILDER) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
-                OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name +
-                BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION +
+        return NEW_LINE + generateForBuilderMethod(name) +
+                FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE +
+                name + BUILDER + SPACE + getSmallCase(BUILDER) +
+                OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE +
+                OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION +
+                RETURN + SPACE + NEW + SPACE + name +
+                BUILDER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN +
+                NEW_LINE + FOUR_SPACE_INDENTATION +
                 CLOSE_CURLY_BRACKET;
     }
 
@@ -1575,18 +1814,21 @@
      */
     static String processSubtreeFilteringInterface(String name) {
         String method = "    /**\n" +
-                "     * Checks if the passed " + name + " maps the content match query condition.\n" +
+                "     * Checks if the passed " + name +
+                " maps the content match query condition.\n" +
                 "     *\n" +
-                "     * @param " + getSmallCase(name) + SPACE + getSmallCase(name) + SPACE + "being passed to check" +
+                "     * @param " + getSmallCase(name) + SPACE +
+                getSmallCase(name) + SPACE + "being passed to check" +
                 " for" +
                 " content match\n" +
                 "     * @param isSelectAllSchemaChild is select all schema child\n" +
                 "     * @return match result\n" +
                 "     */\n";
-        return method + FOUR_SPACE_INDENTATION + name + SPACE + PROCESS_SUBTREE_FILTERING +
-                OPEN_PARENTHESIS
-                + name + SPACE + getSmallCase(name) + COMMA + SPACE + BOOLEAN_DATA_TYPE + SPACE +
-                "isSelectAllSchemaChild" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+        return method + FOUR_SPACE_INDENTATION + name + SPACE +
+                PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS +
+                name + SPACE + getSmallCase(name) + COMMA + SPACE +
+                BOOLEAN_DATA_TYPE + SPACE + "isSelectAllSchemaChild" +
+                CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -1594,15 +1836,16 @@
      *
      * @return is value set interface
      */
-    static String isLeafValueSetInterface() {
+        static String isLeafValueSetInterface() {
         String method = "    /**\n" +
                 "     * Checks if the leaf value is set.\n" +
                 "     *\n" +
                 "     * @param leaf leaf whose value status needs to checked\n" +
                 "     * @return result of leaf value set in object\n" +
                 "     */\n";
-        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + VALUE_LEAF_SET + OPEN_PARENTHESIS
-                + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
+                VALUE_LEAF_SET + OPEN_PARENTHESIS + LEAF_IDENTIFIER + SPACE +
+                "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -1617,8 +1860,9 @@
                 "     * @param leaf if leaf needs to be selected\n" +
                 "     * @return result of leaf value set in object\n" +
                 "     */\n";
-        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE + IS_SELECT_LEAF + OPEN_PARENTHESIS
-                + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+        return method + FOUR_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
+                IS_SELECT_LEAF + OPEN_PARENTHESIS + LEAF_IDENTIFIER + SPACE +
+                "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -1634,8 +1878,9 @@
                 "     * @param leaf leaf needs to be selected\n" +
                 "     * @return builder object for select leaf\n" +
                 "     */\n";
-        return method + FOUR_SPACE_INDENTATION + name + BUILDER + SPACE + SET_SELECT_LEAF + OPEN_PARENTHESIS
-                + LEAF_IDENTIFIER + SPACE + "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+        return method + FOUR_SPACE_INDENTATION + name + BUILDER + SPACE +
+                SET_SELECT_LEAF + OPEN_PARENTHESIS + LEAF_IDENTIFIER + SPACE +
+                "leaf" + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
     }
 
     /**
@@ -1648,8 +1893,8 @@
         String start = "    /**\n" +
                 "     * Identify the leaf of " + name + PERIOD + NEW_LINE +
                 "     */\n";
-        return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + LEAF_IDENTIFIER + SPACE +
-                OPEN_CURLY_BRACKET + NEW_LINE;
+        return start + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE +
+                LEAF_IDENTIFIER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
     }
 
     /**
@@ -1698,22 +1943,6 @@
     }
 
     /**
-     * Returns getter for operation type.
-     *
-     * @return getter for operation type
-     */
-    static String getGetterForOperationType() {
-        return "    /**\n" +
-                "     * Returns the onosYangNodeOperationType.\n" +
-                "     *\n" +
-                "     * @return value of onosYangNodeOperationType\n" +
-                "     */\n" +
-                "    public OnosYangNodeOperationType onosYangNodeOperationType() {\n" +
-                "        return onosYangNodeOperationType;\n" +
-                "    }\n\n";
-    }
-
-    /**
      * Returns getters for value and select leaf.
      *
      * @return getters for value and select leaf
@@ -1732,26 +1961,6 @@
     }
 
     /**
-     * Returns setter for operation type.
-     *
-     * @param name name of node
-     * @return setter for operation type
-     */
-    static String getSetterForOperationType(String name) {
-        return "    /**\n" +
-                "     * Set node operation type.\n" +
-                "     *\n" +
-                "     * @param onosYangNodeOperationType node operation type\n" +
-                "     * @return builder object for node operation type\n" +
-                "     */\n" +
-                "    public " + name + BUILDER + " onosYangNodeOperationType(OnosYangNodeOperationType " +
-                "onosYangNodeOperationType) {\n" +
-                "       this.onosYangNodeOperationType = onosYangNodeOperationType;\n" +
-                "       return this;\n" +
-                "    }\n\n";
-    }
-
-    /**
      * Returns setter for select leaf.
      *
      * @param name       name of node
@@ -1765,30 +1974,38 @@
         }
         return "\n" +
                 "    " + append + "\n" +
-                "    public " + name + BUILDER + " selectLeaf(LeafIdentifier leaf) {\n" +
+                "    public " + name + BUILDER +
+                " selectLeaf(LeafIdentifier leaf) {\n" +
                 "        getSelectLeafFlags().set(leaf.getLeafIndex());\n" +
                 "        return this;\n" +
                 "    }\n";
     }
 
-    private static String getListAttribute(String attrType, YangCompilerAnnotation compilerAnnotation) {
+    private static String getListAttribute(String attrType,
+                                           YangCompilerAnnotation compilerAnnotation) {
         String listAttr;
-        if (compilerAnnotation != null && compilerAnnotation.getYangAppDataStructure() != null) {
-            switch (compilerAnnotation.getYangAppDataStructure().getDataStructure()) {
+        if (compilerAnnotation != null &&
+                compilerAnnotation.getYangAppDataStructure() != null) {
+            switch (compilerAnnotation.getYangAppDataStructure()
+                    .getDataStructure()) {
                 case QUEUE: {
-                    listAttr = QUEUE + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
+                    listAttr = QUEUE + DIAMOND_OPEN_BRACKET + attrType +
+                            DIAMOND_CLOSE_BRACKET;
                     break;
                 }
                 case SET: {
-                    listAttr = SET + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
+                    listAttr = SET + DIAMOND_OPEN_BRACKET + attrType +
+                            DIAMOND_CLOSE_BRACKET;
                     break;
                 }
                 case LIST: {
-                    listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
+                    listAttr = getListString() + attrType +
+                            DIAMOND_CLOSE_BRACKET;
                     break;
                 }
                 default: {
-                    listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
+                    listAttr = getListString() + attrType +
+                            DIAMOND_CLOSE_BRACKET;
                 }
             }
         } else {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorErrorType.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorErrorType.java
new file mode 100644
index 0000000..a2c80e6
--- /dev/null
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorErrorType.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2016-present 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;
+
+/**
+ * Represents translator error type.
+ */
+public enum TranslatorErrorType {
+    /**
+     * Represents the invalid node for translation.
+     */
+    INVALID_TRANSLATION_NODE("Invalid node for translation"),
+
+    /**
+     * Represents the missing parent node.
+     */
+    MISSING_PARENT_NODE("Missing parent node to get current node's java " +
+                                "information"),
+
+    /**
+     * Represents the invalid parent node.
+     */
+    INVALID_PARENT_NODE("Invalid parent node to get current node's java " +
+                                "information"),
+
+    /**
+     * Represents the invalid holder of leaf.
+     */
+    INVALID_LEAF_HOLDER("Invalid holder of leaf"),
+
+    /**
+     * Represents the invalid leaf list without JAVA information.
+     */
+    INVALID_LEAF_LIST("Leaf-list does not have java information"),
+
+    /**
+     * Represents the invalid leaf without JAVA information.
+     */
+    INVALID_LEAF("Leaf does not have java information"),
+
+    /**
+     * Represents the invalid node without JAVA information.
+     */
+    INVALID_NODE("Missing java file information to get the package details " +
+                         "of attribute corresponding to child node"),
+
+    /**
+     * Represents that code generation failed for a node at exit.
+     */
+    FAIL_AT_EXIT("Failed to generate code for notification node"),
+
+    /**
+     * Represents that code generation preparation failed for a node at entry.
+     */
+    FAIL_AT_ENTRY("Failed to prepare generate code entry for " +
+                          "notification node");
+
+    // Prefix of an error type.
+    private String prefix;
+
+    /**
+     * Creates translator error type.
+     *
+     * @param p prefix string
+     */
+    TranslatorErrorType(String p) {
+        prefix = p;
+    }
+
+    /**
+     * Returns prefix for a given enum type.
+     *
+     * @return prefix
+     */
+    public String prefix() {
+        return prefix;
+    }
+}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorUtils.java
new file mode 100644
index 0000000..2116ab8
--- /dev/null
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorUtils.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2016-present 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 org.onosproject.yangutils.datamodel.LocationInfo;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangSchemaNode;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
+import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
+import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
+
+import java.io.IOException;
+
+/**
+ * Represents common translator utilities.
+ */
+public final class TranslatorUtils {
+
+    private static final String IN = " in ";
+    private static final String AT = " at ";
+
+    // No instantiation
+    private TranslatorUtils() {
+    }
+
+    /**
+     * Returns translator error message string with location information for
+     * YANG schema node with localized message.
+     *
+     * @param errorType    type of translator error
+     * @param node         YANG schema node
+     * @param localizedMsg localized message
+     * @return translator error message
+     */
+    public static String getErrorMsg(TranslatorErrorType errorType,
+                                     YangSchemaNode node,
+                                     String localizedMsg) {
+        return getErrorMsg(errorType, node) + localizedMsg;
+    }
+
+    /**
+     * Returns translator error message string with location information for
+     * YANG schema node.
+     *
+     * @param errorType type of translator error
+     * @param node      YANG schema node
+     * @return translator error message
+     */
+    public static String getErrorMsg(TranslatorErrorType errorType,
+                                     YangSchemaNode node) {
+        return errorType.prefix() + IN + node.getName() + getLocationMsg(node);
+    }
+
+    /**
+     * Returns translator error message string with location information for
+     * JAVA code generator info.
+     *
+     * @param errorType type of translator error
+     * @param location  node with location info
+     * @return translator error message
+     */
+    public static String getErrorMsgForCodeGenerator(TranslatorErrorType errorType,
+                                                     LocationInfo location) {
+        return errorType.prefix() + getLocationMsg(location);
+    }
+
+    /**
+     * Returns location message string.
+     *
+     * @param location location info node
+     * @return location message string
+     */
+    private static String getLocationMsg(LocationInfo location) {
+        return AT + location.getLineNumber() + AT +
+                location.getCharPosition() + IN + location.getFileName();
+    }
+
+    /**
+     * Returns bean temp files for YANG node.
+     *
+     * @param curNode current YANG node
+     * @return bean files
+     */
+    public static TempJavaBeanFragmentFiles getBeanFiles(YangNode curNode) {
+        return ((TempJavaCodeFragmentFilesContainer) curNode)
+                .getTempJavaCodeFragmentFiles().getBeanTempFiles();
+    }
+
+    /**
+     * Returns bean temp files for JAVA code generator info.
+     *
+     * @param info JAVA code generator info
+     * @return bean files
+     */
+    public static TempJavaBeanFragmentFiles getBeanFiles(JavaCodeGeneratorInfo
+                                                                 info) {
+        return info.getTempJavaCodeFragmentFiles().getBeanTempFiles();
+    }
+
+    /**
+     * Returns type temp files for YANG node.
+     *
+     * @param curNode current YANG node
+     * @return type files
+     */
+    public static TempJavaTypeFragmentFiles getTypeFiles(YangNode curNode) {
+        return ((TempJavaCodeFragmentFilesContainer) curNode)
+                .getTempJavaCodeFragmentFiles().getTypeTempFiles();
+    }
+
+    /**
+     * Adds default constructor to a given YANG node.
+     *
+     * @param node     YANG node
+     * @param modifier modifier for constructor.
+     * @param toAppend string which need to be appended with the class name
+     * @param config   plugin configurations
+     * @param curNode  YANG node
+     * @return default constructor for class
+     * @throws IOException when fails to append to file
+     */
+    public static String addDefaultConstructor(YangNode node, String modifier,
+                                               String toAppend,
+                                               YangPluginConfig config,
+                                               YangNode curNode)
+            throws IOException {
+        return ((TempJavaCodeFragmentFilesContainer) node)
+                .getTempJavaCodeFragmentFiles()
+                .addDefaultConstructor(modifier, toAppend, config, curNode);
+        /*
+         * TODO update addDefaultConstructor, it doesn't need YANG node as an
+         * input.
+         */
+    }
+}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index 5de5b1c..b7ddc34 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -28,33 +28,39 @@
     /**
      * JavaDocs for impl class.
      */
-    public static final String IMPL_CLASS_JAVA_DOC = " * Represents the implementation of ";
+    public static final String IMPL_CLASS_JAVA_DOC =
+            " * Represents the implementation of ";
 
     /**
      * JavaDocs for builder class.
      */
-    public static final String BUILDER_CLASS_JAVA_DOC = " * Represents the builder implementation of ";
+    public static final String BUILDER_CLASS_JAVA_DOC =
+            " * Represents the builder implementation of ";
 
     /**
      * JavaDocs for interface class.
      */
-    public static final String INTERFACE_JAVA_DOC = " * Abstraction of an entity which represents the"
-            + " functionality of ";
+    public static final String INTERFACE_JAVA_DOC =
+            " * Abstraction of an entity which represents the functionality " +
+                    "of ";
 
     /**
      * JavaDocs for event.
      */
-    public static final String EVENT_JAVA_DOC = " * Represents event implementation of ";
+    public static final String EVENT_JAVA_DOC =
+            " * Represents event implementation of ";
 
     /**
      * JavaDocs for op param class.
      */
-    public static final String OP_PARAM_JAVA_DOC = " * Represents operation parameter implementation of ";
+    public static final String OP_PARAM_JAVA_DOC =
+            " * Represents operation parameter implementation of ";
 
     /**
      * JavaDocs for event listener.
      */
-    public static final String EVENT_LISTENER_JAVA_DOC = " * Abstraction for event listener of ";
+    public static final String EVENT_LISTENER_JAVA_DOC =
+            " * Abstraction for event listener of ";
 
     /**
      * JavaDocs for builder interface class.
@@ -64,7 +70,8 @@
     /**
      * JavaDocs for enum class.
      */
-    public static final String ENUM_CLASS_JAVADOC = " * Represents ENUM data of ";
+    public static final String ENUM_CLASS_JAVADOC =
+            " * Represents ENUM data of ";
 
     /**
      * JavaDocs for enum attribute.
@@ -74,12 +81,14 @@
     /**
      * JavaDocs for package info class.
      */
-    public static final String PACKAGE_INFO_JAVADOC = " * Implementation of YANG node ";
+    public static final String PACKAGE_INFO_JAVADOC =
+            " * Implementation of YANG node ";
 
     /**
      * JavaDocs for package info class.
      */
-    public static final String PACKAGE_INFO_JAVADOC_OF_CHILD = "'s children nodes";
+    public static final String PACKAGE_INFO_JAVADOC_OF_CHILD =
+            "'s children nodes";
 
     /**
      * JavaDocs's first line.
@@ -104,7 +113,8 @@
     /**
      * JavaDocs's description for setter method.
      */
-    public static final String JAVA_DOC_SETTERS = " * Returns the builder object of ";
+    public static final String JAVA_DOC_SETTERS =
+            " * Returns the builder object of ";
 
     /**
      * JavaDocs's description for add to list method.
@@ -114,7 +124,8 @@
     /**
      * JavaDocs's description for setter method.
      */
-    public static final String JAVA_DOC_MANAGER_SETTERS = " * Sets the value to attribute ";
+    public static final String JAVA_DOC_MANAGER_SETTERS =
+            " * Sets the value to attribute ";
 
     /**
      * JavaDocs's description for OF method.
@@ -124,7 +135,8 @@
     /**
      * JavaDocs's description for typedef' setter method.
      */
-    public static final String JAVA_DOC_SETTERS_COMMON = " * Sets the value of ";
+    public static final String JAVA_DOC_SETTERS_COMMON =
+            " * Sets the value of ";
 
     /**
      * JavaDocs's description for getter method.
@@ -134,17 +146,20 @@
     /**
      * JavaDocs's description for getter method.
      */
-    public static final String JAVA_DOC_FOR_VALIDATOR = " * Validates if value is in given range.";
+    public static final String JAVA_DOC_FOR_VALIDATOR =
+            " * Validates if value is in given range.";
 
     /**
      * JavaDocs's description for getter method.
      */
-    public static final String JAVA_DOC_FOR_VALIDATOR_RETURN = " * @return true if value is in range";
+    public static final String JAVA_DOC_FOR_VALIDATOR_RETURN =
+            " * @return true if value is in range";
 
     /**
      * JavaDocs's description for constructor.
      */
-    public static final String JAVA_DOC_CONSTRUCTOR = " * Creates an instance of ";
+    public static final String JAVA_DOC_CONSTRUCTOR =
+            " * Creates an instance of ";
 
     /**
      * JavaDocs's description for build method.
@@ -174,7 +189,8 @@
     /**
      * JavaDocs's statement for rpc's output string.
      */
-    public static final String RPC_OUTPUT_STRING = "output of service interface ";
+    public static final String RPC_OUTPUT_STRING =
+            "output of service interface ";
 
     /**
      * Static attribute for new line.
@@ -187,11 +203,6 @@
     public static final String DEFAULT = "default";
 
     /**
-     * Static attribute for op param class.
-     */
-    public static final String OPERATION = "OpParam";
-
-    /**
      * Static attribute for java code generation for sbi.
      */
     public static final String SBI = "sbi";
@@ -312,11 +323,6 @@
     public static final String STR_VAL = "stringValue";
 
     /**
-     * Static attribute for value of method.
-     */
-    public static final String VALUE_OF = "valueOf";
-
-    /**
      * Static attribute for validateRange.
      */
     public static final String VALIDATE_RANGE = "validateRange";
@@ -334,7 +340,8 @@
     /**
      * Static attribute for minRange.
      */
-    public static final String SHORT_MIN_RANGE_ATTR = "static final int INT16_MIN_RANGE = -32768;\n";
+    public static final String SHORT_MIN_RANGE_ATTR =
+            "static final int INT16_MIN_RANGE = -32768;\n";
 
     /**
      * Static attribute for minRange.
@@ -349,18 +356,21 @@
     /**
      * Static attribute for maxRange.
      */
-    public static final String SHORT_MAX_RANGE_ATTR = "static final int INT16_MAX_RANGE = 32767;";
+    public static final String SHORT_MAX_RANGE_ATTR =
+            "static final int INT16_MAX_RANGE = 32767;";
 
 
     /**
      * Static attribute for minRange.
      */
-    public static final String UINT8_MIN_RANGE_ATTR = "static final int UINT8_MIN_RANGE = 0;\n";
+    public static final String UINT8_MIN_RANGE_ATTR =
+            "static final int UINT8_MIN_RANGE = 0;\n";
 
     /**
      * Static attribute for maxRange.
      */
-    public static final String UINT8_MAX_RANGE_ATTR = "static final int UINT8_MAX_RANGE = 32767;";
+    public static final String UINT8_MAX_RANGE_ATTR =
+            "static final int UINT8_MAX_RANGE = 32767;";
 
 
     /**
@@ -376,7 +386,8 @@
     /**
      * Static attribute for minRange.
      */
-    public static final String INT_MIN_RANGE_ATTR = "static final int INT32_MIN_RANGE = -2147483648;\n";
+    public static final String INT_MIN_RANGE_ATTR =
+            "static final int INT32_MIN_RANGE = -2147483648;\n";
 
     /**
      * Static attribute for minRange.
@@ -391,18 +402,21 @@
     /**
      * Static attribute for maxRange.
      */
-    public static final String INT_MAX_RANGE_ATTR = "static final int INT32_MAX_RANGE = 2147483647;";
+    public static final String INT_MAX_RANGE_ATTR =
+            "static final int INT32_MAX_RANGE = 2147483647;";
 
 
     /**
      * Static attribute for minRange.
      */
-    public static final String UINT_MIN_RANGE_ATTR = "static final int UINT16_MIN_RANGE = 0;\n";
+    public static final String UINT_MIN_RANGE_ATTR =
+            "static final int UINT16_MIN_RANGE = 0;\n";
 
     /**
      * Static attribute for maxRange.
      */
-    public static final String UINT_MAX_RANGE_ATTR = "static final int UINT16_MAX_RANGE = 2147483647;";
+    public static final String UINT_MAX_RANGE_ATTR =
+            "static final int UINT16_MAX_RANGE = 2147483647;";
 
 
     /**
@@ -418,14 +432,16 @@
     /**
      * Static attribute for minRange.
      */
-    public static final String LONG_MIN_RANGE_ATTR = "static final BigInteger INT64_MIN_RANGE =" +
-            " new BigInteger(\"-9223372036854775808\");\n";
+    public static final String LONG_MIN_RANGE_ATTR =
+            "static final BigInteger INT64_MIN_RANGE =" +
+                    " new BigInteger(\"-9223372036854775808\");\n";
 
     /**
      * Static attribute for maxRange.
      */
-    public static final String LONG_MAX_RANGE_ATTR = "static final BigInteger INT64_MAX_RANGE =" +
-            " new BigInteger(\"9223372036854775807\");";
+    public static final String LONG_MAX_RANGE_ATTR =
+            "static final BigInteger INT64_MAX_RANGE =" +
+                    " new BigInteger(\"9223372036854775807\");";
 
     /**
      * Static attribute for minRange.
@@ -440,14 +456,16 @@
     /**
      * Static attribute for minRange.
      */
-    public static final String ULONG_MIN_RANGE_ATTR = "static final BigInteger UINT32_MIN_RANGE =" +
-            " new BigInteger(\"0\");\n";
+    public static final String ULONG_MIN_RANGE_ATTR =
+            "static final BigInteger UINT32_MIN_RANGE =" +
+                    " new BigInteger(\"0\");\n";
 
     /**
      * Static attribute for maxRange.
      */
-    public static final String ULONG_MAX_RANGE_ATTR = "static final BigInteger UINT32_MAX_RANGE =" +
-            " new BigInteger(\"9223372036854775807\");";
+    public static final String ULONG_MAX_RANGE_ATTR =
+            "static final BigInteger UINT32_MAX_RANGE =" +
+                    " new BigInteger(\"9223372036854775807\");";
 
 
     /**
@@ -845,27 +863,26 @@
     /**
      * Static attribute for is filter content match method prefix.
      */
-    public static final String PROCESS_SUBTREE_FILTERING = "processSubtreeFiltering";
+    public static final String PROCESS_SUBTREE_FILTERING =
+            "processSubtreeFiltering";
 
     /**
      * variable name of the subtree  filtering result builder.
      */
-    public static final String SUBTREE_FILTERING_RESULT_BUILDER = "subTreeFilteringResultBuilder";
+    public static final String SUBTREE_FILTERING_RESULT_BUILDER =
+            "subTreeFilteringResultBuilder";
 
     /**
      * variable name of the subtree  filtering result flag.
      */
-    public static final String IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG = "isAnySelectOrContainmentNode";
+    public static final String IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG =
+            "isAnySelectOrContainmentNode";
 
     /**
      * variable name of the subtree  filtering to select all child.
      */
-    public static final String IS_SELECT_ALL_SCHEMA_CHILD_FLAG = "isSelectAllSchemaChild";
-
-    /**
-     * Static attribute for flag prefix.
-     */
-    public static final String FLAG = "flag";
+    public static final String IS_SELECT_ALL_SCHEMA_CHILD_FLAG =
+            "isSelectAllSchemaChild";
 
     /**
      * Static attribute for break prefix.
@@ -920,37 +937,44 @@
     /**
      * Static attribute for eight space indentation.
      */
-    public static final String EIGHT_SPACE_INDENTATION = FOUR_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
+    public static final String EIGHT_SPACE_INDENTATION =
+            FOUR_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
 
     /**
      * Static attribute for twelve space indentation.
      */
-    public static final String TWELVE_SPACE_INDENTATION = EIGHT_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
+    public static final String TWELVE_SPACE_INDENTATION =
+            EIGHT_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
 
     /**
      * Static attribute for sixteen space indentation.
      */
-    public static final String SIXTEEN_SPACE_INDENTATION = TWELVE_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
+    public static final String SIXTEEN_SPACE_INDENTATION =
+            TWELVE_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
 
     /**
      * Static attribute for twenty space indentation.
      */
-    public static final String TWENTY_SPACE_INDENTATION = SIXTEEN_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
+    public static final String TWENTY_SPACE_INDENTATION =
+            SIXTEEN_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
 
     /**
      * Static attribute for twenty four space indentation.
      */
-    public static final String TWENTY_FOUR_SPACE_INDENTATION = TWENTY_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
+    public static final String TWENTY_FOUR_SPACE_INDENTATION =
+            TWENTY_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
 
     /**
      * Static attribute for twenty eight space indentation.
      */
-    public static final String TWENTY_EIGHT_SPACE_INDENTATION = TWENTY_FOUR_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
+    public static final String TWENTY_EIGHT_SPACE_INDENTATION =
+            TWENTY_FOUR_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
 
     /**
      * Static attribute for thirty two space indentation.
      */
-    public static final String THIRTY_TWO_SPACE_INDENTATION = TWENTY_EIGHT_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
+    public static final String THIRTY_TWO_SPACE_INDENTATION =
+            TWENTY_EIGHT_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
 
     /**
      * continue.
@@ -973,7 +997,8 @@
     public static final String REVISION_PREFIX = "rev";
 
     /**
-     * Static attribute for YANG automatic prefix for identifiers with keywords and beginning with digits.
+     * Static attribute for YANG automatic prefix for identifiers with keywords
+     * and beginning with digits.
      */
     public static final String YANG_AUTO_PREFIX = "yangAutoPrefix";
 
@@ -1098,14 +1123,20 @@
     public static final String QUESTION_MARK = "?";
 
     /**
-     * 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<String> JAVA_KEY_WORDS = Arrays.asList(
-            "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue",
-            "default", "do", "double", "else", "extends", "false", "final", "finally", "float", "for", "goto", "if",
-            "implements", "import", "instanceof", "enum", "int", "interface", "long", "native", "new", "null",
-            "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super", "switch",
-            "synchronized", "this", "throw", "throws", "transient", "true", "try", "void", "volatile", "while");
+    public static final List<String> JAVA_KEY_WORDS =
+            Arrays.asList("abstract", "assert", "boolean", "break", "byte",
+                          "case", "catch", "char", "class", "const", "continue",
+                          "default", "do", "double", "else", "extends", "false",
+                          "final", "finally", "float", "for", "goto", "if",
+                          "implements", "import", "instanceof", "enum", "int",
+                          "interface", "long", "native", "new", "null",
+                          "package", "private", "protected", "public", "return",
+                          "short", "static", "strictfp", "super", "switch",
+                          "synchronized", "this", "throw", "throws", "transient",
+                          "true", "try", "void", "volatile", "while");
 
     /**
      * Static attribute for regex for all the special characters.
@@ -1113,7 +1144,8 @@
     public static final String REGEX_WITH_ALL_SPECIAL_CHAR = "\\p{Punct}+";
 
     /**
-     * Static attribute for regex for three special characters used in identifier.
+     * Static attribute for regex for three special characters used in
+     * identifier.
      */
     public static final String REGEX_FOR_IDENTIFIER_SPECIAL_CHAR = "[. _ -]+";
 
@@ -1150,7 +1182,8 @@
     /**
      * Static attribute for regex for digits with single letter.
      */
-    public static final String REGEX_FOR_DIGITS_WITH_SINGLE_LETTER = "[0-9]+[a-zA-Z]";
+    public static final String REGEX_FOR_DIGITS_WITH_SINGLE_LETTER =
+            "[0-9]+[a-zA-Z]";
 
     /**
      * Static attribute for regex with uppercase.
@@ -1163,14 +1196,18 @@
     public static final String REGEX_WITH_SINGLE_CAPITAL_CASE = "[A-Z]";
 
     /**
-     * Static attribute for regex for capital case letter with any number of digits and small case letters.
+     * Static attribute for regex for capital case letter with any number of
+     * digits and small case letters.
      */
-    public static final String REGEX_WITH_SINGLE_CAPITAL_CASE_AND_DIGITS_SMALL_CASES = "[A-Z][0-9a-z]+";
+    public static final String
+            REGEX_WITH_SINGLE_CAPITAL_CASE_AND_DIGITS_SMALL_CASES =
+            "[A-Z][0-9a-z]+";
 
     /**
      * Static attribute for regex for any string ending with service.
      */
-    public static final String REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE = ".+Service";
+    public static final String REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE =
+            ".+Service";
 
     /**
      * Static attribute for class syntax.
@@ -1321,17 +1358,20 @@
     /**
      * Static attribute for more object import package.
      */
-    public static final String GOOGLE_MORE_OBJECT_IMPORT_PKG = "com.google.common.base";
+    public static final String GOOGLE_MORE_OBJECT_IMPORT_PKG =
+            "com.google.common.base";
 
     /**
      * Static attribute for more object import class.
      */
-    public static final String GOOGLE_MORE_OBJECT_IMPORT_CLASS = "MoreObjects;\n";
+    public static final String GOOGLE_MORE_OBJECT_IMPORT_CLASS =
+            "MoreObjects;\n";
 
     /**
      * Static attribute for to string method.
      */
-    public static final String GOOGLE_MORE_OBJECT_METHOD_STRING = " MoreObjects.toStringHelper(getClass())";
+    public static final String GOOGLE_MORE_OBJECT_METHOD_STRING =
+            " MoreObjects.toStringHelper(getClass())";
 
     /**
      * Static attribute for java utilities import package.
@@ -1349,11 +1389,6 @@
     public static final String JAVA_UTIL_OBJECTS_IMPORT_CLASS = "Objects;\n";
 
     /**
-     * Static attribute for java utilities import base64 class.
-     */
-    public static final String JAVA_UTIL_IMPORT_BASE64_CLASS = "Base64;\n";
-
-    /**
      * Static attribute for AugmentedInfo class.
      */
     public static final String YANG_AUGMENTED_INFO = "YangAugmentedInfo";
@@ -1381,7 +1416,8 @@
     /**
      * Comment to be added for autogenerated impl methods.
      */
-    public static final String YANG_UTILS_TODO = "//TODO: YANG utils generated code";
+    public static final String YANG_UTILS_TODO =
+            "//TODO: YANG utils generated code";
 
     /**
      * Static attribute for AbstractEvent.
@@ -1411,49 +1447,52 @@
     /**
      * Static attribute for unsupported error information.
      */
-    public static final String UNSUPPORTED_YANG_CONSTRUCT = " is not supported.";
+    public static final String UNSUPPORTED_YANG_CONSTRUCT =
+            " is not supported.";
 
     /**
      * Static attribute for currently unsupported error information.
      */
-    public static final String CURRENTLY_UNSUPPORTED = " is not supported in current version, please check wiki" +
-            " for YANG utils road map.";
+    public static final String CURRENTLY_UNSUPPORTED =
+            " is not supported in current version, please check wiki" +
+                    " for YANG utils road map.";
 
     /**
      * Static attribute for typedef linker error information.
      */
-    public static final String TYPEDEF_LINKER_ERROR = "YANG file error: Unable to find base "
-            + "typedef for given type";
+    public static final String TYPEDEF_LINKER_ERROR =
+            "YANG file error: Unable to find base typedef for given type";
 
     /**
      * Static attribute for grouping linker error information.
      */
-    public static final String GROUPING_LINKER_ERROR = "YANG file error: Unable to find base "
-            + "grouping for given uses";
+    public static final String GROUPING_LINKER_ERROR =
+            "YANG file error: Unable to find base grouping for given uses";
 
     /**
      * Static attribute for if-feature linker error information.
      */
-    public static final String FEATURE_LINKER_ERROR = "YANG file error: Unable to find feature "
-            + "for given if-feature";
+    public static final String FEATURE_LINKER_ERROR =
+            "YANG file error: Unable to find feature for given if-feature";
 
     /**
      * Static attribute for leafref linker error information.
      */
-    public static final String LEAFREF_LINKER_ERROR = "YANG file error: Unable to find base "
-            + "leaf/leaf-list for given leafref";
+    public static final String LEAFREF_LINKER_ERROR =
+            "YANG file error: Unable to find base leaf/leaf-list for given " +
+                    "leafref";
 
     /**
      * Static attribute for base linker error information.
      */
-    public static final String BASE_LINKER_ERROR = "YANG file error: Unable to find base "
-            + "identity for given base";
+    public static final String BASE_LINKER_ERROR =
+            "YANG file error: Unable to find base identity for given base";
 
     /**
      * Static attribute for identityref linker error information.
      */
-    public static final String IDENTITYREF_LINKER_ERROR = "YANG file error: Unable to find base "
-            + "identity for given base";
+    public static final String IDENTITYREF_LINKER_ERROR =
+            "YANG file error: Unable to find base identity for given base";
 
     /**
      * Static attribute for jar.
@@ -1468,17 +1507,20 @@
     /**
      * Static attribute for YangAugmentedOpParamInfo.
      */
-    public static final String YANG_AUGMENTED_OP_PARAM_INFO = "YangAugmentedOpParamInfo";
+    public static final String YANG_AUGMENTED_OP_PARAM_INFO =
+            "YangAugmentedOpParamInfo";
 
     /**
      * Static attribute for NoSuchMethodException.
      */
-    public static final String NO_SUCH_METHOD_EXCEPTION = "NoSuchMethodException";
+    public static final String NO_SUCH_METHOD_EXCEPTION =
+            "NoSuchMethodException";
 
     /**
      * Static attribute for InvocationTargetException.
      */
-    public static final String INVOCATION_TARGET_EXCEPTION = "InvocationTargetException";
+    public static final String INVOCATION_TARGET_EXCEPTION =
+            "InvocationTargetException";
 
     /**
      * Static attribute for InvocationTargetException.
@@ -1488,7 +1530,8 @@
     /**
      * Static attribute for IllegalAccessException.
      */
-    public static final String ILLEGAL_ACCESS_EXCEPTION = "IllegalAccessException";
+    public static final String ILLEGAL_ACCESS_EXCEPTION =
+            "IllegalAccessException";
 
     /**
      * Static attribute for arrayList.
@@ -1498,12 +1541,8 @@
     /**
      * Static attribute for arrayList import.
      */
-    public static final String ARRAY_LIST_IMPORT = IMPORT + COLLECTION_IMPORTS + ".ArrayList;\n";
-
-    /**
-     * Static attribute for temp keyword.
-     */
-    public static final String TMP_VAR = "tmp";
+    public static final String ARRAY_LIST_IMPORT =
+            IMPORT + COLLECTION_IMPORTS + ".ArrayList;\n";
 
     /**
      * Static attribute for unused keyword.
@@ -1516,8 +1555,88 @@
     public static final String ONE = "1";
 
     /**
-     * Creates an instance of util constants.
+     * Static attribute for YANG node operation type class.
      */
+    public static final String OPERATION_TYPE_CLASS =
+            "OnosYangNodeOperationType";
+
+    /**
+     * Static attribute for YANG node operation type attribute.
+     */
+    public static final String OPERATION_TYPE_ATTRIBUTE =
+            "NodeOperationType";
+
+    /**
+     * Static attribute for event class.
+     */
+    public static final String EVENT_CLASS = "event class";
+
+    /**
+     * Static attribute for typedef class.
+     */
+    public static final String TYPEDEF_CLASS = "typedef class";
+
+    /**
+     * Static attribute for impl class.
+     */
+    public static final String IMPL_CLASS = "impl class";
+
+    /**
+     * Static attribute for union class.
+     */
+    public static final String UNION_CLASS = "union class";
+
+    /**
+     * Static attribute for enum class.
+     */
+    public static final String ENUM_CLASS = "enum class";
+
+    /**
+     * Static attribute for rpc class.
+     */
+    public static final String RPC_CLASS = "rpc class";
+
+    /**
+     * Static attribute for builder class.
+     */
+    public static final String BUILDER_CLASS = "builder class";
+
+    /**
+     * Static attribute for builder interface.
+     */
+    public static final String BUILDER_INTERFACE = "builder interface";
+
+    /**
+     * Static attribute for binary.
+     */
+    public static final String BINARY = "binary";
+
+    /**
+     * Static attribute for bits.
+     */
+    public static final String BITS = "bits";
+
+    /**
+     * Static attribute for YANG.
+     */
+    public static final String YANG = "yang";
+
+    // No instantiation.
     private UtilConstants() {
     }
+
+    /**
+     * Represents operation type.
+     */
+    public enum Operation {
+        /**
+         * Represents add operation.
+         */
+        ADD,
+
+        /**
+         * Represents remove operation.
+         */
+        REMOVE
+    }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
index 1b58c0f..1f75ab8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
@@ -147,4 +147,23 @@
             }
         }
     }
+
+    /**
+     * Closes the file handle for temporary file with file deletion.
+     *
+     * @param file file to be closed
+     * @throws IOException when failed to close the file handle
+     */
+    public static void closeFile(File file) throws IOException {
+
+        if (file != null) {
+            updateFileHandle(file, null, true);
+            boolean deleted = file.delete();
+            if (!deleted) {
+                throw new IOException("Failed to delete temporary file " +
+                                              file.getName());
+            }
+        }
+    }
+    // TODO follow coding guidelines in remaining of this file.
 }