[ONOS-5178] Defect fix :No get/set for root node in generated service

Change-Id: I9d90068e4cdd3d35a9ee71fd1f00c4a635b191b7
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 e20d788..1d566d8 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
@@ -395,7 +395,7 @@
         setJavaImportData(new JavaImportData());
         setJavaFileInfo(javaFileInfo);
         setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
-                getJavaFileInfo().getPackageFilePath()));
+                                                  getJavaFileInfo().getPackageFilePath()));
 
         /*
          * Initialize getter when generation file type matches to interface
@@ -526,8 +526,9 @@
         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());
+                                                  + parent.getName() + " in " + parent.getLineNumber() + " at " +
+                                                  parent.getCharPosition()
+                                                  + " in " + parent.getFileName());
         }
 
         if (parent instanceof YangJavaGroupingTranslator) {
@@ -542,7 +543,7 @@
                 .getTempJavaCodeFragmentFiles().getBeanTempFiles();
 
         JavaAttributeInfo javaAttributeInfo = getCurNodeAsAttributeInTarget(curNode,
-                parent, isList, tempJavaBeanFragmentFiles);
+                                                                            parent, isList, tempJavaBeanFragmentFiles);
         tempJavaBeanFragmentFiles.addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo, pluginConfig);
     }
 
@@ -569,11 +570,12 @@
          * generated java files or qualified access
          */
         JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
-                getCapitalCase(curNodeName));
+                                                                                          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());
+                                                  + targetNode.getName() + " in " + targetNode.getLineNumber() +
+                                                  " at " + targetNode.getCharPosition()
+                                                  + " in " + targetNode.getFileName());
         }
         JavaImportData parentImportData = tempJavaFragmentFiles.getJavaImportData();
         JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) targetNode).getJavaFileInfo();
@@ -593,7 +595,7 @@
             }
 
             isQualified = parentImportData.addImportInfo(qualifiedTypeInfo,
-                    className, fileInfo.getPackage());
+                                                         className, fileInfo.getPackage());
         }
         boolean collectionSetFlag = false;
         if (curNode instanceof YangList) {
@@ -622,7 +624,7 @@
         }
         if (curNode instanceof YangList) {
             return getAttributeInfoForTheData(qualifiedTypeInfo, curNodeName, null, isQualified, isListNode,
-                    ((YangList) curNode).getCompilerAnnotation());
+                                              ((YangList) curNode).getCompilerAnnotation());
         }
         return getAttributeInfoForTheData(qualifiedTypeInfo, curNodeName, null, isQualified, isListNode);
     }
@@ -1050,7 +1052,7 @@
     private void addSubTreeFilteringForLeaf(JavaAttributeInfo attr)
             throws IOException {
         appendToFile(getSubtreeFilteringForLeafTempFileHandle(),
-                getSubtreeFilteringForLeaf(attr, attr.getAttributeType()) + NEW_LINE);
+                     getSubtreeFilteringForLeaf(attr, attr.getAttributeType()) + NEW_LINE);
     }
 
     /**
@@ -1062,7 +1064,7 @@
     private void addSubtreeFilteringForLeafList(JavaAttributeInfo attr)
             throws IOException {
         appendToFile(getGetSubtreeFilteringForListTempFileHandle(),
-                getSubtreeFilteringForLeafList(attr) + NEW_LINE);
+                     getSubtreeFilteringForLeafList(attr) + NEW_LINE);
     }
 
     /**
@@ -1074,7 +1076,7 @@
     private void addSubtreeFilteringForChildNode(JavaAttributeInfo attr)
             throws IOException {
         appendToFile(getGetSubtreeFilteringForChildNodeTempFileHandle(),
-                getSubtreeFilteringForNode(attr) + NEW_LINE);
+                     getSubtreeFilteringForNode(attr) + NEW_LINE);
     }
 
     /**
@@ -1100,7 +1102,7 @@
     private void addGetterForInterface(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
             throws IOException {
         appendToFile(getGetterInterfaceTempFileHandle(),
-                getGetterString(attr, getGeneratedJavaFiles(), pluginConfig) + NEW_LINE);
+                     getGetterString(attr, getGeneratedJavaFiles(), pluginConfig) + NEW_LINE);
     }
 
     /**
@@ -1113,8 +1115,8 @@
     private void addSetterForInterface(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
             throws IOException {
         appendToFile(getSetterInterfaceTempFileHandle(),
-                getSetterString(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles(), pluginConfig)
-                        + NEW_LINE);
+                     getSetterString(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles(), pluginConfig)
+                             + NEW_LINE);
     }
 
     /**
@@ -1127,7 +1129,7 @@
             throws IOException {
         if (isRooNode()) {
             appendToFile(getSetterImplTempFileHandle(), getJavaDoc(SETTER_METHOD, attr.getAttributeName(),
-                    attr.isListAttr(), pluginConfig, null) +
+                                                                   attr.isListAttr(), pluginConfig, null) +
                     getSetterForClass(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles())
                     + NEW_LINE);
         } else {
@@ -1150,10 +1152,11 @@
                 || (getGeneratedJavaFiles() & GENERATE_SERVICE_AND_MANAGER) != 0) {
             if (!isRooNode()) {
                 appendToFile(getGetterImplTempFileHandle(), getOverRideString() + getGetterForClass(attr,
-                        getGeneratedJavaFiles()) + NEW_LINE);
+                                                                                                    getGeneratedJavaFiles()) +
+                        NEW_LINE);
             } else {
                 appendToFile(getGetterImplTempFileHandle(), getGetterForClass(attr,
-                        getGeneratedJavaFiles()) + NEW_LINE);
+                                                                              getGeneratedJavaFiles()) + NEW_LINE);
             }
         } else {
             String appDataStructure = null;
@@ -1161,8 +1164,8 @@
                 appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
             }
             appendToFile(getGetterImplTempFileHandle(),
-                    getJavaDoc(GETTER_METHOD, getCapitalCase(attr.getAttributeName()), false, pluginConfig,
-                            appDataStructure) + getGetterForClass(attr, getGeneratedJavaFiles()) + NEW_LINE);
+                         getJavaDoc(GETTER_METHOD, getCapitalCase(attr.getAttributeName()), false, pluginConfig,
+                                    appDataStructure) + getGetterForClass(attr, getGeneratedJavaFiles()) + NEW_LINE);
         }
     }
 
@@ -1176,8 +1179,8 @@
     private void addAddToListInterface(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
             throws IOException {
         appendToFile(getAddToListInterfaceTempFileHandle(),
-                getJavaDoc(ADD_TO_LIST, getCapitalCase(attr.getAttributeName()), false, pluginConfig, null)
-                        + getAddToListMethodInterface(attr, getGeneratedJavaClassName()) + NEW_LINE);
+                     getJavaDoc(ADD_TO_LIST, getCapitalCase(attr.getAttributeName()), false, pluginConfig, null)
+                             + getAddToListMethodInterface(attr, getGeneratedJavaClassName()) + NEW_LINE);
     }
 
     /**
@@ -1189,7 +1192,7 @@
     private void addAddToListImpl(JavaAttributeInfo attr)
             throws IOException {
         appendToFile(getAddToListImplTempFileHandle(),
-                getAddToListMethodImpl(attr, getGeneratedJavaClassName(), isRooNode()) + NEW_LINE);
+                     getAddToListMethodImpl(attr, getGeneratedJavaClassName(), isRooNode()) + NEW_LINE);
     }
 
     /**
@@ -1203,8 +1206,8 @@
     private void addLeafIdAttributes(JavaAttributeInfo attr, int value, YangPluginConfig yangPluginConfig)
             throws IOException {
         appendToFile(getLeafIdAttributeTempFileHandle(),
-                FOUR_SPACE_INDENTATION + generateEnumAttributeString(attr.getAttributeName(),
-                        value, yangPluginConfig));
+                     FOUR_SPACE_INDENTATION + generateEnumAttributeString(attr.getAttributeName(),
+                                                                          value, yangPluginConfig));
     }
 
     /**
@@ -1247,7 +1250,7 @@
             name = name + OP_PARAM;
             return NEW_LINE
                     + getDefaultConstructorString(name, modifier,
-                    pluginConfig);
+                                                  pluginConfig);
         }
         if (isSuffix) {
             return NEW_LINE +
@@ -1261,7 +1264,7 @@
         }
         return NEW_LINE
                 + getDefaultConstructorString(appended + name, modifier,
-                pluginConfig);
+                                              pluginConfig);
     }
 
     /**
@@ -1308,7 +1311,7 @@
                              JavaAttributeInfo fromStringAttributeInfo)
             throws IOException {
         appendToFile(getFromStringImplTempFileHandle(), getFromStringMethod(javaAttributeInfo,
-                fromStringAttributeInfo) + NEW_LINE);
+                                                                            fromStringAttributeInfo) + NEW_LINE);
     }
 
     /**
@@ -1337,7 +1340,7 @@
             }
         } else {
             throw new IOException(fileName + " is reused due to YANG naming. probably your previous build would have " +
-                    "failed");
+                                          "failed");
         }
         return file;
     }
@@ -1369,7 +1372,7 @@
             return readAppendFile(path + file.getName(), EMPTY_STRING);
         } else {
             throw new IOException("Unable to get data from the given "
-                    + file.getName() + " file for " + getGeneratedJavaClassName() + PERIOD);
+                                          + file.getName() + " file for " + getGeneratedJavaClassName() + PERIOD);
         }
     }
 
@@ -1402,11 +1405,12 @@
         }
         if (attr.isQualifiedName()) {
             return getJavaAttributeDefinition(attr.getImportInfo().getPkgInfo(),
-                    attr.getImportInfo().getClassInfo(),
-                    attributeName, attr.isListAttr(), attributeAccessType, attr.getCompilerAnnotation());
+                                              attr.getImportInfo().getClassInfo(),
+                                              attributeName, attr.isListAttr(), attributeAccessType,
+                                              attr.getCompilerAnnotation());
         } else {
             return getJavaAttributeDefinition(null, attr.getImportInfo().getClassInfo(), attributeName,
-                    attr.isListAttr(), attributeAccessType, attr.getCompilerAnnotation());
+                                              attr.isListAttr(), attributeAccessType, attr.getCompilerAnnotation());
         }
     }
 
@@ -1443,19 +1447,21 @@
         }
         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());
+                                                  + "of attribute corresponding to child node " +
+                                                  curNode.getName() + " in " + curNode.getLineNumber() + " at " +
+                                                  curNode.getCharPosition()
+                                                  + " in " + curNode.getFileName());
         }
         caseImportInfo.setClassInfo(getCapitalCase(getCamelCase(parent.getName(),
-                pluginConfig.getConflictResolver())));
+                                                                pluginConfig.getConflictResolver())));
         caseImportInfo.setPkgInfo(((JavaFileInfoContainer) parent).getJavaFileInfo().getPackage());
 
         JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
 
         ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
                 .getBeanTempFiles().getJavaImportData().addImportInfo(caseImportInfo,
-                getCapitalCase(fileInfo.getJavaName()), fileInfo.getPackage());
+                                                                      getCapitalCase(fileInfo.getJavaName()),
+                                                                      fileInfo.getPackage());
     }
 
     /**
@@ -1473,18 +1479,18 @@
             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());
+                                                          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);
+                                                                                   yangPluginConfig), yangPluginConfig);
                 } else {
                     addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeOfLeaf(this, leaf, yangPluginConfig),
-                            yangPluginConfig);
+                                                            yangPluginConfig);
                 }
             }
         }
@@ -1505,17 +1511,20 @@
             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());
+                                                          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);
+                                                                                       leafList, yangPluginConfig),
+                                                            yangPluginConfig);
                 } else {
                     addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeOfLeafList(this,
-                            leafList, yangPluginConfig), yangPluginConfig);
+                                                                                       leafList, yangPluginConfig),
+                                                            yangPluginConfig);
                 }
             }
         }
@@ -1533,8 +1542,9 @@
             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());
+                                                  curNode.getName() + " in " + curNode.getLineNumber() + " at " +
+                                                  curNode.getCharPosition()
+                                                  + " in " + curNode.getFileName());
         }
         YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
         addLeavesInfoToTempFiles(leavesHolder.getListOfLeaf(), yangPluginConfig, curNode);
@@ -1606,15 +1616,18 @@
 
             if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
                 JavaQualifiedTypeInfoTranslator qualifiedInfoOfFromString = getQualifiedInfoOfFromString(newAttrInfo,
-                        pluginConfig.getConflictResolver());
+                                                                                                         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);
+                                                                                       newAttrInfo.getAttributeName(),
+                                                                                       newAttrInfo.getAttributeType(),
+                                                                                       getIsQualifiedAccessOrAddToImportList(
+                                                                                               qualifiedInfoOfFromString),
+                                                                                       false);
 
                 addFromStringMethod(newAttrInfo, fromStringAttributeInfo);
             }
@@ -1685,7 +1698,7 @@
                             getJavaFileHandle(getJavaClassName(BUILDER_INTERFACE_FILE_NAME_SUFFIX)));
                     setBuilderInterfaceJavaFileHandle(
                             generateBuilderInterfaceFile(getBuilderInterfaceJavaFileHandle(), curNode,
-                                    isAttributePresent()));
+                                                         isAttributePresent()));
 
                     //Append builder interface file to interface file and close it.
                     mergeJavaFiles(getBuilderInterfaceJavaFileHandle(), getInterfaceJavaFileHandle());
@@ -1728,7 +1741,7 @@
                 setBuilderClassJavaFileHandle(getJavaFileHandle(getJavaClassName(BUILDER_CLASS_FILE_NAME_SUFFIX)));
                 setBuilderClassJavaFileHandle(
                         generateBuilderClassFile(getBuilderClassJavaFileHandle(), curNode,
-                                isAttributePresent()));
+                                                 isAttributePresent()));
 
                 //Append impl class to builder class and close it.
                 mergeJavaFiles(getBuilderClassJavaFileHandle(), getImplClassJavaFileHandle());
@@ -1880,8 +1893,8 @@
     boolean getIsQualifiedAccessOrAddToImportList(
             JavaQualifiedTypeInfo importInfo) {
         return getJavaImportData().addImportInfo((JavaQualifiedTypeInfoTranslator) importInfo,
-                getGeneratedJavaClassName(),
-                getJavaFileInfo().getPackage());
+                                                 getGeneratedJavaClassName(),
+                                                 getJavaFileInfo().getPackage());
     }
 
     /**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
index 08a6d9b..7891b08 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
@@ -26,10 +26,8 @@
 import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.YangLeavesHolder;
-import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
-import org.onosproject.yangutils.datamodel.YangSubModule;
 import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
 import org.onosproject.yangutils.datamodel.YangTypeHolder;
 import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
@@ -77,9 +75,9 @@
         } else {
             javaCodeGeneratorInfo.getJavaFileInfo()
                     .setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
-                            yangPluginConfig.getConflictResolver()));
+                                              yangPluginConfig.getConflictResolver()));
             javaCodeGeneratorInfo.getJavaFileInfo().setJavaAttributeName(javaCodeGeneratorInfo
-                    .getJavaFileInfo().getJavaName());
+                                                                                 .getJavaFileInfo().getJavaName());
             javaCodeGeneratorInfo.getJavaFileInfo().setPackage(getCurNodePackage((YangNode) javaCodeGeneratorInfo));
         }
         javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
@@ -102,7 +100,7 @@
             throws IOException {
         javaCodeGeneratorInfo.getJavaFileInfo()
                 .setJavaName(getAugmentClassName((YangJavaAugmentTranslator) javaCodeGeneratorInfo,
-                        yangPluginConfig));
+                                                 yangPluginConfig));
         javaCodeGeneratorInfo.getJavaFileInfo().setPackage(
                 getAugmentsNodePackage((YangNode) javaCodeGeneratorInfo, yangPluginConfig));
         javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
@@ -141,10 +139,11 @@
      * @throws IOException IO operations fails
      */
     private static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin,
-                                          String pkg) throws IOException {
+                                          String pkg)
+            throws IOException {
         javaCodeGeneratorInfo.getJavaFileInfo()
                 .setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
-                        yangPlugin.getConflictResolver()));
+                                          yangPlugin.getConflictResolver()));
         javaCodeGeneratorInfo.getJavaFileInfo().setPackage(pkg);
         javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
                 getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
@@ -174,12 +173,8 @@
                                                 YangPluginConfig yangPluginConfig)
             throws IOException {
 
-        if (javaCodeGeneratorInfo instanceof YangModule
-                || javaCodeGeneratorInfo instanceof YangSubModule) {
-            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().setRooNode(true);
-        }
-
         if (javaCodeGeneratorInfo instanceof RpcNotificationContainer) {
+            javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().setRooNode(true);
             /*
              * Module / sub module node code generation.
              */
@@ -228,9 +223,9 @@
             /*Do nothing, only the interface needs to be generated*/
         } else {
             throw new TranslatorException("Unsupported Node Translation "
-                    + javaCodeGeneratorInfo.getLineNumber() + " at " +
-                    javaCodeGeneratorInfo.getCharPosition()
-                    + " in " + javaCodeGeneratorInfo.getFileName());
+                                                  + javaCodeGeneratorInfo.getLineNumber() + " at " +
+                                                  javaCodeGeneratorInfo.getCharPosition()
+                                                  + " in " + javaCodeGeneratorInfo.getFileName());
         }
     }
 
@@ -246,9 +241,9 @@
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
             throw new TranslatorException("translation is not supported for the node "
-                    + javaCodeGeneratorInfo.getLineNumber() + " at " +
-                    javaCodeGeneratorInfo.getCharPosition()
-                    + " in " + javaCodeGeneratorInfo.getFileName());
+                                                  + javaCodeGeneratorInfo.getLineNumber() + " at " +
+                                                  javaCodeGeneratorInfo.getCharPosition()
+                                                  + " in " + javaCodeGeneratorInfo.getFileName());
         }
         createTempFragmentFile(javaCodeGeneratorInfo);
         updateTempFragmentFiles(javaCodeGeneratorInfo, yangPluginConfig);
@@ -295,9 +290,9 @@
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
             throw new TranslatorException("Invalid node for translation " +
-                    javaCodeGeneratorInfo.getLineNumber() + " at " +
-                    javaCodeGeneratorInfo.getCharPosition()
-                    + " in " + javaCodeGeneratorInfo.getFileName());
+                                                  javaCodeGeneratorInfo.getLineNumber() + " at " +
+                                                  javaCodeGeneratorInfo.getCharPosition()
+                                                  + " in " + javaCodeGeneratorInfo.getFileName());
         }
 
         /*
@@ -323,9 +318,9 @@
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
             throw new TranslatorException("invalid node for translation " +
-                    javaCodeGeneratorInfo.getLineNumber() + " at " +
-                    javaCodeGeneratorInfo.getCharPosition()
-                    + " in " + javaCodeGeneratorInfo.getFileName());
+                                                  javaCodeGeneratorInfo.getLineNumber() + " at " +
+                                                  javaCodeGeneratorInfo.getCharPosition()
+                                                  + " in " + javaCodeGeneratorInfo.getFileName());
         }
 
         generateCodeOfNode(javaCodeGeneratorInfo, yangPlugin);
@@ -336,7 +331,7 @@
             JavaQualifiedTypeInfoTranslator parentsInfo = getQualifierInfoForCasesParent(parent, yangPlugin);
             javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
                     .addToExtendsList(parentsInfo, (YangNode) javaCodeGeneratorInfo,
-                            tempJavaCodeFragmentFiles.getBeanTempFiles());
+                                      tempJavaCodeFragmentFiles.getBeanTempFiles());
 
             javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles()
                     .addParentInfoInCurNodeTempFile((YangNode) javaCodeGeneratorInfo, yangPlugin);
@@ -388,9 +383,9 @@
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
             throw new TranslatorException("invalid node for translation "
-                    + javaCodeGeneratorInfo.getLineNumber() + " at " +
-                    javaCodeGeneratorInfo.getCharPosition()
-                    + " in " + javaCodeGeneratorInfo.getFileName());
+                                                  + javaCodeGeneratorInfo.getLineNumber() + " at " +
+                                                  javaCodeGeneratorInfo.getCharPosition()
+                                                  + " in " + javaCodeGeneratorInfo.getFileName());
         }
         updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig);
         generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
@@ -409,9 +404,9 @@
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
             throw new TranslatorException("invalid node for translation " + javaCodeGeneratorInfo.getLineNumber()
-                    + " at " +
-                    javaCodeGeneratorInfo.getCharPosition()
-                    + " in " + javaCodeGeneratorInfo.getFileName());
+                                                  + " at " +
+                                                  javaCodeGeneratorInfo.getCharPosition()
+                                                  + " in " + javaCodeGeneratorInfo.getFileName());
         }
         updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig, rootPkg);
 
@@ -434,19 +429,19 @@
         if (!(curNode instanceof JavaFileInfoContainer)
                 || curNode.getParent() == null) {
             throw new TranslatorException("missing parent node to get current node's package " +
-                    curNode.getName() + " in " +
-                    curNode.getLineNumber() + " at " +
-                    curNode.getCharPosition()
-                    + " in " + curNode.getFileName());
+                                                  curNode.getName() + " in " +
+                                                  curNode.getLineNumber() + " at " +
+                                                  curNode.getCharPosition()
+                                                  + " in " + curNode.getFileName());
         }
 
         YangNode parentNode = DataModelUtils.getParentNodeInGenCode(curNode);
         if (!(parentNode instanceof JavaFileInfoContainer)) {
             throw new TranslatorException("missing parent java node to get current node's package " +
-                    curNode.getName() + " in " +
-                    curNode.getLineNumber() + " at " +
-                    curNode.getCharPosition()
-                    + " in " + curNode.getFileName());
+                                                  curNode.getName() + " in " +
+                                                  curNode.getLineNumber() + " at " +
+                                                  curNode.getCharPosition()
+                                                  + " in " + curNode.getFileName());
         }
         JavaFileInfoTranslator parentJavaFileHandle = ((JavaFileInfoContainer) parentNode).getJavaFileInfo();
         pkg = parentJavaFileHandle.getPackage() + PERIOD + parentJavaFileHandle.getJavaName();
@@ -460,49 +455,57 @@
      * @return true if root node contains any data node
      */
     public static boolean isRootNodesCodeGenRequired(YangNode node) {
+        YangLeavesHolder holder = (YangLeavesHolder) node;
 
-        List<YangNode> childNodes = new ArrayList<>();
-        YangNode tempNode = node.getChild();
-        while (tempNode != null) {
-            childNodes.add(tempNode);
-            tempNode = tempNode.getNextSibling();
-        }
-
-        if (childNodes.size() == 0) {
-            YangLeavesHolder leavesHolder = (YangLeavesHolder) node;
-            return !leavesHolder.getListOfLeaf().isEmpty() || !leavesHolder.getListOfLeafList().isEmpty();
-        } else if (childNodes.size() == 1) {
-            return !(childNodes.get(0) instanceof YangTranslatorOperatorNode);
-        }
-        List<Boolean> booleanData = new ArrayList<>();
-        for (YangNode child : childNodes) {
-            if (child instanceof YangTranslatorOperatorNode) {
-                booleanData.add(false);
+        if (holder.getListOfLeaf().isEmpty()) {
+            if (holder.getListOfLeafList().isEmpty()) {
+                YangNode tempNode = node.getChild();
+                if (tempNode == null) {
+                    return false;
+                }
+                while (tempNode != null) {
+                    if (!(tempNode instanceof YangTranslatorOperatorNode)) {
+                        return true;
+                    }
+                    tempNode = tempNode.getNextSibling();
+                }
+                return false;
             } else {
-                booleanData.add(true);
+                return true;
             }
+        } else {
+            return true;
         }
-        return booleanData.contains(true);
     }
 
     /**
-     * Returns true if only augment nodes present in module.
+     * Returns true if get/set method of root node are required.
      *
      * @param curNode root node
-     * @return true if only augment nodes present in module
+     * @return true if get/set method of root node are required
      */
-    public static boolean isOnlyAugmentNodeInRoot(YangNode curNode) {
-        List<Boolean> booleanData = new ArrayList<>();
-        curNode = curNode.getChild();
-        while (curNode != null) {
-            if (curNode instanceof YangAugment) {
-                booleanData.add(true);
+    public static boolean isGetSetOfRootNodeRequired(YangNode curNode) {
+        YangLeavesHolder holder = (YangLeavesHolder) curNode;
+
+        if (holder.getListOfLeaf().isEmpty()) {
+            if (holder.getListOfLeafList().isEmpty()) {
+                curNode = curNode.getChild();
+                if (curNode == null) {
+                    return false;
+                }
+                while (curNode != null) {
+                    if (!(curNode instanceof YangAugment)) {
+                        return true;
+                    }
+                    curNode = curNode.getNextSibling();
+                }
+                return false;
             } else {
-                booleanData.add(false);
+                return true;
             }
-            curNode = curNode.getNextSibling();
+        } else {
+            return true;
         }
-        return !booleanData.contains(false);
     }
 
     /**
@@ -528,12 +531,12 @@
         if (node instanceof YangJavaModuleTranslator) {
             YangJavaModuleTranslator module = (YangJavaModuleTranslator) node;
             pkg.append(getRootPackage(module.getVersion(), module.getNameSpace(), module
-                    .getRevision().getRevDate(), yangPluginConfig.getConflictResolver()));
+                    .getRevision(), yangPluginConfig.getConflictResolver()));
         } else if (node instanceof YangJavaSubModuleTranslator) {
             YangJavaSubModuleTranslator subModule = (YangJavaSubModuleTranslator) node;
             pkg.append(getRootPackage(subModule.getVersion(),
-                    subModule.getNameSpaceFromModule(subModule.getBelongsTo()),
-                    subModule.getRevision().getRevDate(), yangPluginConfig.getConflictResolver()));
+                                      subModule.getNameSpaceFromModule(),
+                                      subModule.getRevision(), yangPluginConfig.getConflictResolver()));
         }
         String concat = "";
         for (int i = 1; i <= clsInfo.size(); i++) {
@@ -551,7 +554,7 @@
      * @param yangPluginConfig plugin configurations
      * @return augment class name
      */
-    static String getAugmentClassName(YangAugment augment, YangPluginConfig yangPluginConfig) {
+    private static String getAugmentClassName(YangAugment augment, YangPluginConfig yangPluginConfig) {
         YangNodeIdentifier yangNodeIdentifier = augment.getTargetNode().get(augment.getTargetNode().size() - 1)
                 .getNodeIdentifier();
         String name = getCapitalCase(getCamelCase(yangNodeIdentifier.getName(), yangPluginConfig
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
index 85c190b..d9517a8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
@@ -112,10 +112,10 @@
                 return getJavaDataType(getReferredTypeFromLeafref(yangType));
             default:
                 throw new TranslatorException("given data type is not supported. " +
-                        yangType.getDataTypeName() + " in " +
-                        yangType.getLineNumber() + " at " +
-                        yangType.getCharPosition()
-                        + " in " + yangType.getFileName());
+                                                      yangType.getDataTypeName() + " in " +
+                                                      yangType.getLineNumber() + " at " +
+                                                      yangType.getCharPosition()
+                                                      + " in " + yangType.getFileName());
         }
     }
 
@@ -159,7 +159,7 @@
                 case ENUMERATION:
                     return getCapitalCase(
                             getCamelCase(((YangJavaEnumerationTranslator) yangType.getDataTypeExtendedInfo()).getName(),
-                                    pluginConfig));
+                                         pluginConfig));
                 case BITS:
                     return BIT_SET;
                 case BINARY:
@@ -184,10 +184,10 @@
                             getCamelCase(yangType.getDataTypeName(), pluginConfig));
                 default:
                     throw new TranslatorException("given data type is not supported ." +
-                            yangType.getDataTypeName() + " in " +
-                            yangType.getLineNumber() + " at " +
-                            yangType.getCharPosition()
-                            + " in " + yangType.getFileName());
+                                                          yangType.getDataTypeName() + " in " +
+                                                          yangType.getLineNumber() + " at " +
+                                                          yangType.getCharPosition()
+                                                          + " in " + yangType.getFileName());
             }
         } else {
             switch (type) {
@@ -198,7 +198,7 @@
                 case ENUMERATION:
                     return getCapitalCase(
                             getCamelCase(((YangJavaEnumerationTranslator) yangType.getDataTypeExtendedInfo()).getName(),
-                                    pluginConfig));
+                                         pluginConfig));
                 case BITS:
                     return BIT_SET;
                 case DECIMAL64:
@@ -273,10 +273,10 @@
                     return getTypeDefsPackage(yangType, conflictResolver);
                 default:
                     throw new TranslatorException("given data type is not supported. " +
-                            yangType.getDataTypeName() + " in " +
-                            yangType.getLineNumber() + " at " +
-                            yangType.getCharPosition()
-                            + " in " + yangType.getFileName());
+                                                          yangType.getDataTypeName() + " in " +
+                                                          yangType.getLineNumber() + " at " +
+                                                          yangType.getCharPosition()
+                                                          + " in " + yangType.getFileName());
             }
         } else {
             switch (type) {
@@ -318,18 +318,18 @@
         Object var = type.getDataTypeExtendedInfo();
         if (!(var instanceof YangDerivedInfo)) {
             throw new TranslatorException("type should have been derived. " +
-                    type.getDataTypeName() + " in " +
-                    type.getLineNumber() + " at " +
-                    type.getCharPosition()
-                    + " in " + type.getFileName());
+                                                  type.getDataTypeName() + " in " +
+                                                  type.getLineNumber() + " at " +
+                                                  type.getCharPosition()
+                                                  + " in " + type.getFileName());
         }
 
         if (!(((YangDerivedInfo<?>) var).getReferredTypeDef() != null)) {
             throw new TranslatorException("derived info is not an instance of typedef. " +
-                    type.getDataTypeName() + " in " +
-                    type.getLineNumber() + " at " +
-                    type.getCharPosition()
-                    + " in " + type.getFileName());
+                                                  type.getDataTypeName() + " in " +
+                                                  type.getLineNumber() + " at " +
+                                                  type.getCharPosition()
+                                                  + " in " + type.getFileName());
         }
 
         YangJavaTypeDefTranslator typedef = (YangJavaTypeDefTranslator) ((YangDerivedInfo<?>) var).getReferredTypeDef();
@@ -350,10 +350,10 @@
 
         if (!(type.getDataTypeExtendedInfo() instanceof YangUnion)) {
             throw new TranslatorException("type should have been union. " +
-                    type.getDataTypeName() + " in " +
-                    type.getLineNumber() + " at " +
-                    type.getCharPosition()
-                    + " in " + type.getFileName());
+                                                  type.getDataTypeName() + " in " +
+                                                  type.getLineNumber() + " at " +
+                                                  type.getCharPosition()
+                                                  + " in " + type.getFileName());
         }
 
         YangJavaUnionTranslator union = (YangJavaUnionTranslator) type.getDataTypeExtendedInfo();
@@ -374,10 +374,10 @@
 
         if (!(type.getDataTypeExtendedInfo() instanceof YangEnumeration)) {
             throw new TranslatorException("type should have been enumeration. " +
-                    type.getDataTypeName() + " in " +
-                    type.getLineNumber() + " at " +
-                    type.getCharPosition()
-                    + " in " + type.getFileName());
+                                                  type.getDataTypeName() + " in " +
+                                                  type.getLineNumber() + " at " +
+                                                  type.getCharPosition()
+                                                  + " in " + type.getFileName());
         }
         YangJavaEnumerationTranslator enumeration = (YangJavaEnumerationTranslator) type.getDataTypeExtendedInfo();
         if (enumeration.getJavaFileInfo().getPackage() == null) {
@@ -397,10 +397,10 @@
 
         if (!(type.getDataTypeExtendedInfo() instanceof YangIdentityRef)) {
             throw new TranslatorException("type should have been identityref. " +
-                    type.getDataTypeName() + " in " +
-                    type.getLineNumber() + " at " +
-                    type.getCharPosition()
-                    + " in " + type.getFileName());
+                                                  type.getDataTypeName() + " in " +
+                                                  type.getLineNumber() + " at " +
+                                                  type.getCharPosition()
+                                                  + " in " + type.getFileName());
         }
         YangIdentityRef identityRef = (YangIdentityRef) type.getDataTypeExtendedInfo();
         YangJavaIdentityTranslator identity = (YangJavaIdentityTranslator) (identityRef.getReferredIdentity());
@@ -421,10 +421,10 @@
                                                YangToJavaNamingConflictUtil conflictResolver) {
         if (!(parent instanceof JavaFileInfoContainer)) {
             throw new TranslatorException("invalid child node is being processed. " +
-                    parent.getName() + " in " +
-                    parent.getLineNumber() + " at " +
-                    parent.getCharPosition()
-                    + " in " + parent.getFileName());
+                                                  parent.getName() + " in " +
+                                                  parent.getLineNumber() + " at " +
+                                                  parent.getCharPosition()
+                                                  + " in " + parent.getFileName());
         }
         JavaFileInfoTranslator parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
         if (parentInfo.getPackage() == null) {
@@ -464,18 +464,18 @@
             if (yangNode instanceof YangJavaModuleTranslator) {
                 YangJavaModuleTranslator module = (YangJavaModuleTranslator) yangNode;
                 pkg = getRootPackage(module.getVersion(), module.getNameSpace(), module
-                        .getRevision().getRevDate(), conflictResolver);
+                        .getRevision(), conflictResolver);
             } else if (yangNode instanceof YangJavaSubModuleTranslator) {
                 YangJavaSubModuleTranslator submodule = (YangJavaSubModuleTranslator) yangNode;
                 pkg = getRootPackage(submodule.getVersion(),
-                        submodule.getNameSpaceFromModule(submodule.getBelongsTo()),
-                        submodule.getRevision().getRevDate(), conflictResolver);
+                                     submodule.getNameSpaceFromModule(),
+                                     submodule.getRevision(), conflictResolver);
             } else {
                 throw new TranslatorException("Invalid root node of data model tree " +
-                        yangNode.getName() + " in " +
-                        yangNode.getLineNumber() + " at " +
-                        yangNode.getCharPosition()
-                        + " in " + yangNode.getFileName());
+                                                      yangNode.getName() + " in " +
+                                                      yangNode.getLineNumber() + " at " +
+                                                      yangNode.getCharPosition()
+                                                      + " in " + yangNode.getFileName());
 
             }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
index cf1f455..6a6ac26 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
@@ -36,6 +36,7 @@
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isRootNodesCodeGenRequired;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
 import static org.onosproject.yangutils.utils.UtilConstants.SBI;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.removeEmptyDirectory;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
 
 /**
@@ -77,10 +78,10 @@
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
             throw new TranslatorException("Missing java info in java datamodel node " +
-                    getName() + " in " +
-                    getLineNumber() + " at " +
-                    getCharPosition()
-                    + " in " + getFileName());
+                                                  getName() + " in " +
+                                                  getLineNumber() + " at " +
+                                                  getCharPosition()
+                                                  + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -122,13 +123,14 @@
      * @throws TranslatorException when fails to generate the source files
      */
     @Override
-    public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorException {
-        String modulePkg = getRootPackage(getVersion(), getNameSpace(), getRevision().getRevDate(),
-                yangPlugin.getConflictResolver());
+    public void generateCodeEntry(YangPluginConfig yangPlugin)
+            throws TranslatorException {
+        String modulePkg = getRootPackage(getVersion(), getNameSpace(), getRevision(),
+                                          yangPlugin.getConflictResolver());
 
         if (isNotificationChildNodePresent(this)) {
             getJavaFileInfo().setGeneratedFileTypes(getJavaFileInfo().getGeneratedFileTypes()
-                    | GENERATE_ALL_EVENT_CLASS_MASK);
+                                                            | GENERATE_ALL_EVENT_CLASS_MASK);
         }
         try {
             generateCodeOfRootNode(this, yangPlugin, modulePkg);
@@ -146,7 +148,8 @@
      * Creates a java file using the YANG module info.
      */
     @Override
-    public void generateCodeExit() throws TranslatorException {
+    public void generateCodeExit()
+            throws TranslatorException {
         /*
          * As part of the notification support the following files needs to be generated.
          * 1) Subject of the notification(event), this is simple interface with builder class.
@@ -171,15 +174,15 @@
             }
 
             searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
-                    getJavaFileInfo().getPackageFilePath());
-            searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
-                    getJavaFileInfo().getPackageFilePath());
+                                           getJavaFileInfo().getPackageFilePath());
+            removeEmptyDirectory(getJavaFileInfo().getBaseCodeGenPath() +
+                                         getJavaFileInfo().getPackageFilePath());
         } catch (IOException e) {
             throw new TranslatorException("Failed to generate code for module node " +
-                    getName() + " in " +
-                    getLineNumber() + " at " +
-                    getCharPosition()
-                    + " in " + getFileName() + " " + e.getLocalizedMessage());
+                                                  getName() + " in " +
+                                                  getLineNumber() + " at " +
+                                                  getCharPosition()
+                                                  + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
index 4ab4be8..2604262 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
@@ -19,8 +19,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.onosproject.yangutils.datamodel.YangBelongsTo;
-import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNotification;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaSubModule;
@@ -38,6 +36,7 @@
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isRootNodesCodeGenRequired;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
 import static org.onosproject.yangutils.utils.UtilConstants.SBI;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.removeEmptyDirectory;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
 
 /**
@@ -81,10 +80,10 @@
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
             throw new TranslatorException("Missing java info in java datamodel node " +
-                    getName() + " in " +
-                    getLineNumber() + " at " +
-                    getCharPosition()
-                    + " in " + getFileName());
+                                                  getName() + " in " +
+                                                  getLineNumber() + " at " +
+                                                  getCharPosition()
+                                                  + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -122,11 +121,10 @@
     /**
      * Returns the name space of the module to which the sub module belongs to.
      *
-     * @param belongsToInfo Information of the module to which the sub module belongs
      * @return the name space string of the module.
      */
-    public String getNameSpaceFromModule(YangBelongsTo belongsToInfo) {
-        return ((YangModule) belongsToInfo.getModuleNode()).getNameSpace();
+    public String getNameSpaceFromModule() {
+        return (getBelongsTo().getModuleNode()).getNameSpace();
     }
 
     /**
@@ -136,13 +134,14 @@
      * @throws TranslatorException when fails to translate
      */
     @Override
-    public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorException {
-        String subModulePkg = getRootPackage(getVersion(), getNameSpaceFromModule(getBelongsTo()),
-                getRevision().getRevDate(), yangPlugin.getConflictResolver());
+    public void generateCodeEntry(YangPluginConfig yangPlugin)
+            throws TranslatorException {
+        String subModulePkg = getRootPackage(getVersion(), getNameSpaceFromModule(),
+                                             getRevision(), yangPlugin.getConflictResolver());
 
         if (isNotificationChildNodePresent(this)) {
             getJavaFileInfo().setGeneratedFileTypes(getJavaFileInfo().getGeneratedFileTypes()
-                    | GENERATE_ALL_EVENT_CLASS_MASK);
+                                                            | GENERATE_ALL_EVENT_CLASS_MASK);
         }
         try {
             generateCodeOfRootNode(this, yangPlugin, subModulePkg);
@@ -161,7 +160,8 @@
      * Creates a java file using the YANG submodule info.
      */
     @Override
-    public void generateCodeExit() throws TranslatorException {
+    public void generateCodeExit()
+            throws TranslatorException {
         /**
          * As part of the notification support the following files needs to be generated.
          * 1) Subject of the notification(event), this is simple interface with builder class.
@@ -185,15 +185,15 @@
             }
 
             searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
-                    getJavaFileInfo().getPackageFilePath());
-            searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
-                    getJavaFileInfo().getPackageFilePath());
+                                           getJavaFileInfo().getPackageFilePath());
+            removeEmptyDirectory(getJavaFileInfo().getBaseCodeGenPath() +
+                                         getJavaFileInfo().getPackageFilePath());
         } catch (IOException e) {
             throw new TranslatorException("Failed to generate code for submodule node " +
-                    getName() + " in " +
-                    getLineNumber() + " at " +
-                    getCharPosition()
-                    + " in " + getFileName() + " " + e.getLocalizedMessage());
+                                                  getName() + " in " +
+                                                  getLineNumber() + " at " +
+                                                  getCharPosition()
+                                                  + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index ab37d7c..2a2d97a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -126,6 +126,8 @@
         .TempJavaFragmentFiles.getCurNodeAsAttributeInTarget;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils
         .getQualifierInfoForCasesParent;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils
+        .isGetSetOfRootNodeRequired;
 import static org.onosproject.yangutils.translator.tojava.utils
         .JavaCodeSnippetGen.addAugmentationAttribute;
 import static org.onosproject.yangutils.translator.tojava.utils
@@ -173,6 +175,8 @@
 import static org.onosproject.yangutils.translator.tojava.utils
         .MethodsGenerator.getGetterForOperationType;
 import static org.onosproject.yangutils.translator.tojava.utils
+        .MethodsGenerator.getGetterString;
+import static org.onosproject.yangutils.translator.tojava.utils
         .MethodsGenerator.getGettersForValueAndSelectLeaf;
 import static org.onosproject.yangutils.translator.tojava.utils
         .MethodsGenerator.getHashCodeMethodClose;
@@ -195,6 +199,8 @@
 import static org.onosproject.yangutils.translator.tojava.utils
         .MethodsGenerator.getSetterForSelectLeaf;
 import static org.onosproject.yangutils.translator.tojava.utils
+        .MethodsGenerator.getSetterString;
+import static org.onosproject.yangutils.translator.tojava.utils
         .MethodsGenerator.getToStringMethodClose;
 import static org.onosproject.yangutils.translator.tojava.utils
         .MethodsGenerator.getToStringMethodOpen;
@@ -1413,6 +1419,19 @@
 
         try {
 
+            if (isGetSetOfRootNodeRequired(curNode)) {
+                //Getter methods.
+                methods.add(getGetterString(rootAttribute,
+                                            GENERATE_SERVICE_AND_MANAGER,
+                                            javaFileInfo.getPluginConfig()) +
+                                    NEW_LINE);
+                // Setter methods.
+                methods.add(getSetterString(rootAttribute, className,
+                                            GENERATE_SERVICE_AND_MANAGER,
+                                            javaFileInfo.getPluginConfig()) +
+                                    NEW_LINE);
+            }
+
             methods.add(getAugmentsDataMethodForService(curNode) + NEW_LINE);
 
             if (((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles()
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
index 8c14295..93e26c7 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
@@ -26,6 +26,7 @@
 import java.util.List;
 
 import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangRevision;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
@@ -78,7 +79,7 @@
      * @param conflictResolver object of YANG to java naming conflict util
      * @return the root package string
      */
-    public static String getRootPackage(byte version, String nameSpace, Date revision,
+    public static String getRootPackage(byte version, String nameSpace, YangRevision revision,
                                         YangToJavaNamingConflictUtil conflictResolver) {
 
         String pkg;
@@ -87,9 +88,10 @@
         pkg = pkg + getYangVersion(version);
         pkg = pkg + PERIOD;
         pkg = pkg + getPkgFromNameSpace(nameSpace, conflictResolver);
-        pkg = pkg + PERIOD;
-        pkg = pkg + getYangRevisionStr(revision);
-
+        if (revision != null) {
+            pkg = pkg + PERIOD;
+            pkg = pkg + getYangRevisionStr(revision.getRevDate());
+        }
         return pkg.toLowerCase();
     }
 
@@ -203,13 +205,14 @@
      * @param yangNode YANG node for which code is being generated
      * @throws IOException any IO exception
      */
-    public static void createPackage(YangNode yangNode) throws IOException {
+    public static void createPackage(YangNode yangNode)
+            throws IOException {
         if (!(yangNode instanceof JavaFileInfoContainer)) {
             throw new TranslatorException("current node must have java file info " +
-                    yangNode.getName() + " in " +
-                    yangNode.getLineNumber() + " at " +
-                    yangNode.getCharPosition()
-                    + " in " + yangNode.getFileName());
+                                                  yangNode.getName() + " in " +
+                                                  yangNode.getLineNumber() + " at " +
+                                                  yangNode.getCharPosition()
+                                                  + " in " + yangNode.getFileName());
         }
         String pkgInfo;
         JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo();
@@ -221,11 +224,11 @@
                 if (parent != null) {
                     pkgInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName();
                     addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), true,
-                            ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig());
+                                   ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig());
                 } else {
                     pkgInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getJavaName();
                     addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), false,
-                            ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getPluginConfig());
+                                   ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getPluginConfig());
                 }
             } catch (IOException e) {
                 throw new IOException("failed to create package-info file");