[ONOS-4583] Union defect fix.

Change-Id: Ic31866b9a1b7bd5d8209d5d22f4292ab9c79a118
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java
index 446bce1..f225f06 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java
@@ -46,6 +46,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
@@ -63,12 +64,11 @@
     /**
      * File name for generated class file for special type like union, typedef suffix.
      */
-    public static final String EVENT_SUBJECT_NAME_SUFFIX = "EventSubject";
+    private static final String EVENT_SUBJECT_NAME_SUFFIX = "EventSubject";
 
     /**
      * File name for event enum temp file.
      */
-
     private static final String EVENT_ENUM_FILE_NAME = "EventEnum";
 
     /**
@@ -149,7 +149,7 @@
      * @param javaFileInfo generated file information
      * @throws IOException when fails to create new file handle
      */
-    public TempJavaEventFragmentFiles(JavaFileInfo javaFileInfo)
+    TempJavaEventFragmentFiles(JavaFileInfo javaFileInfo)
             throws IOException {
         setJavaExtendsListHolder(new JavaExtendsListHolder());
         setJavaImportData(new JavaImportData());
@@ -255,6 +255,9 @@
         generateEventJavaFile(curNode);
         generateEventListenerJavaFile(curNode);
         generateEventSubjectJavaFile(curNode);
+
+        // Close all the file handles.
+        freeTemporaryResources(false);
     }
 
     /**
@@ -263,7 +266,7 @@
      * @param curNode current YANG node
      * @throws IOException when fails to generate java files
      */
-    public void generateEventJavaFile(YangNode curNode)
+    private void generateEventJavaFile(YangNode curNode)
             throws IOException {
 
         List<String> imports = new ArrayList<>();
@@ -274,43 +277,10 @@
 
         addEnumMethod(nodeName, curNodeInfo + EVENT_SUBJECT_NAME_SUFFIX);
 
-        /**
-         * Creates event interface file.
-         */
+        //Creates event interface file.
         setEventJavaFileHandle(getJavaFileHandle(curNode, curNodeInfo + EVENT_FILE_NAME_SUFFIX));
         generateEventFile(getEventJavaFileHandle(), curNode, imports);
 
-        /**
-         * Close all the file handles.
-         */
-        freeTemporaryResources(false);
-    }
-
-    /**
-     * Constructs java code exit.
-     *
-     * @param curNode  current YANG node
-     * @throws IOException when fails to generate java files
-     */
-    public void generateEventListenerJavaFile(YangNode curNode)
-            throws IOException {
-
-        List<String> imports = new ArrayList<>();
-
-        imports.add(getJavaImportData().getEventListenerImport());
-        String curNodeInfo = getCapitalCase(((JavaFileInfoContainer) curNode)
-                .getJavaFileInfo().getJavaName());
-        /**
-         * Creates event listener interface file.
-         */
-        setEventListenerJavaFileHandle(
-                getJavaFileHandle(curNode, curNodeInfo + EVENT_LISTENER_FILE_NAME_SUFFIX));
-        generateEventListenerFile(getEventListenerJavaFileHandle(), curNode, imports);
-
-        /**
-         * Close all the file handles.
-         */
-        freeTemporaryResources(false);
     }
 
     /**
@@ -319,22 +289,39 @@
      * @param curNode current YANG node
      * @throws IOException when fails to generate java files
      */
-    public void generateEventSubjectJavaFile(YangNode curNode)
+    private void generateEventListenerJavaFile(YangNode curNode)
+            throws IOException {
+
+        List<String> imports = new ArrayList<>();
+
+        imports.add(getJavaImportData().getEventListenerImport());
+        String curNodeInfo = getCapitalCase(((JavaFileInfoContainer) curNode)
+                .getJavaFileInfo().getJavaName());
+
+        // Creates event listener interface file.
+        setEventListenerJavaFileHandle(
+                getJavaFileHandle(curNode, curNodeInfo + EVENT_LISTENER_FILE_NAME_SUFFIX));
+        generateEventListenerFile(getEventListenerJavaFileHandle(), curNode, imports);
+
+    }
+
+    /**
+     * Constructs java code exit.
+     *
+     * @param curNode current YANG node
+     * @throws IOException when fails to generate java files
+     */
+    private void generateEventSubjectJavaFile(YangNode curNode)
             throws IOException {
 
         String curNodeInfo = getCapitalCase(((JavaFileInfoContainer) curNode)
                 .getJavaFileInfo().getJavaName());
-        /**
-         * Creates event interface file.
-         */
+
+        //Creates event interface file.
         setEventSubjectJavaFileHandle(getJavaFileHandle(curNode, curNodeInfo +
                 TempJavaEventFragmentFiles.EVENT_SUBJECT_NAME_SUFFIX));
         generateEventSubjectFile(getEventSubjectJavaFileHandle(), curNode);
 
-        /**
-         * Close all the file handles.
-         */
-        freeTemporaryResources(false);
     }
 
     /**
@@ -351,7 +338,7 @@
      *
      * @param eventEnumTempFileHandle event enum temp file
      */
-    public void setEventEnumTempFileHandle(File eventEnumTempFileHandle) {
+    private void setEventEnumTempFileHandle(File eventEnumTempFileHandle) {
         this.eventEnumTempFileHandle = eventEnumTempFileHandle;
     }
 
@@ -369,7 +356,7 @@
      *
      * @param eventMethodTempFileHandle event method temp file
      */
-    public void setEventMethodTempFileHandle(File eventMethodTempFileHandle) {
+    private void setEventMethodTempFileHandle(File eventMethodTempFileHandle) {
         this.eventMethodTempFileHandle = eventMethodTempFileHandle;
     }
 
@@ -387,7 +374,7 @@
      *
      * @param eventSubjectAttributeTempFileHandle event subject attribute temp file
      */
-    public void setEventSubjectAttributeTempFileHandle(File eventSubjectAttributeTempFileHandle) {
+    private void setEventSubjectAttributeTempFileHandle(File eventSubjectAttributeTempFileHandle) {
         this.eventSubjectAttributeTempFileHandle = eventSubjectAttributeTempFileHandle;
     }
 
@@ -405,7 +392,7 @@
      *
      * @param eventSubjectGetterTempFileHandle event subject getter temp file
      */
-    public void setEventSubjectGetterTempFileHandle(File eventSubjectGetterTempFileHandle) {
+    private void setEventSubjectGetterTempFileHandle(File eventSubjectGetterTempFileHandle) {
         this.eventSubjectGetterTempFileHandle = eventSubjectGetterTempFileHandle;
     }
 
@@ -423,7 +410,7 @@
      *
      * @param eventSubjectSetterTempFileHandle event subject setter temp file
      */
-    public void setEventSubjectSetterTempFileHandle(File eventSubjectSetterTempFileHandle) {
+    private void setEventSubjectSetterTempFileHandle(File eventSubjectSetterTempFileHandle) {
         this.eventSubjectSetterTempFileHandle = eventSubjectSetterTempFileHandle;
     }
 
@@ -434,7 +421,7 @@
      * @param pluginConfig plugin configurations
      * @throws IOException when fails to do IO operations
      */
-    public void addJavaSnippetOfEvent(YangNode curNode, YangPluginConfig pluginConfig)
+    void addJavaSnippetOfEvent(YangNode curNode, YangPluginConfig pluginConfig)
             throws IOException {
 
         String currentInfo = getCapitalCase(getCamelCase(curNode.getName(),
@@ -521,4 +508,28 @@
     private String getDirPath(JavaFileInfo parentInfo) {
         return (parentInfo.getPackageFilePath() + SLASH + parentInfo.getJavaName()).toLowerCase();
     }
+
+    /**
+     * Removes all temporary file handles.
+     *
+     * @param isErrorOccurred flag to tell translator that error has occurred while file generation
+     * @throws IOException when failed to delete the temporary files
+     */
+    @Override
+    public void freeTemporaryResources(boolean isErrorOccurred)
+            throws IOException {
+
+        closeFile(getEventJavaFileHandle(), isErrorOccurred);
+        closeFile(getEventListenerJavaFileHandle(), isErrorOccurred);
+        closeFile(getEventSubjectJavaFileHandle(), isErrorOccurred);
+
+        closeFile(getEventEnumTempFileHandle(), true);
+        closeFile(getEventSubjectAttributeTempFileHandle(), true);
+        closeFile(getEventMethodTempFileHandle(), true);
+        closeFile(getEventSubjectGetterTempFileHandle(), true);
+        closeFile(getEventSubjectSetterTempFileHandle(), true);
+
+        super.freeTemporaryResources(isErrorOccurred);
+
+    }
 }