Adding builder and operation type in generated interfaces

Change-Id: I0c3ed6f01a8f933ad91ce1a46aeebc62029ca47a
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;
     }
 }