[ONOS-4799],[ONOS-4351] Augment inter file linker and Generated Code refactored.

Change-Id: Id1f3ac9c90a632373f51cc75d499c3110216be17
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
index ccb43e3..148dd0e 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
@@ -17,11 +17,9 @@
 package org.onosproject.yangutils.plugin.manager;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
@@ -41,6 +39,7 @@
 import org.slf4j.Logger;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.deSerializeDataModel;
 import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
 import static org.onosproject.yangutils.utils.UtilConstants.JAR;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
@@ -155,32 +154,6 @@
     }
 
     /**
-     * Returns de-serializes YANG data-model nodes.
-     *
-     * @param serailizedfileInfoSet YANG file info set
-     * @return de-serializes YANG data-model nodes
-     * @throws IOException when fails do IO operations
-     */
-    public static List<YangNode> deSerializeDataModel(List<String> serailizedfileInfoSet) throws IOException {
-
-        List<YangNode> nodes = new ArrayList<>();
-        for (String fileInfo : serailizedfileInfoSet) {
-            YangNode node = null;
-            try {
-                FileInputStream fileInputStream = new FileInputStream(fileInfo);
-                ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
-                node = (YangNode) objectInputStream.readObject();
-                nodes.add(node);
-                objectInputStream.close();
-                fileInputStream.close();
-            } catch (IOException | ClassNotFoundException e) {
-                throw new IOException(fileInfo + " not found.");
-            }
-        }
-        return nodes;
-    }
-
-    /**
      * Returns list of jar path.
      *
      * @param project         maven project
@@ -188,8 +161,8 @@
      * @param remoteRepos     remote repository
      * @return list of jar paths
      */
-    private static List<String> resolveDependecyJarPath(MavenProject project, ArtifactRepository localRepository,
-                                                        List<ArtifactRepository> remoteRepos) {
+    private static List<String> resolveDependencyJarPath(MavenProject project, ArtifactRepository localRepository,
+                                                         List<ArtifactRepository> remoteRepos) {
 
         StringBuilder path = new StringBuilder();
         List<String> jarPaths = new ArrayList<>();
@@ -232,7 +205,7 @@
                                                              List<ArtifactRepository> remoteRepos, String directory)
             throws IOException {
 
-        List<String> dependeciesJarPaths = resolveDependecyJarPath(project, localRepository, remoteRepos);
+        List<String> dependeciesJarPaths = resolveDependencyJarPath(project, localRepository, remoteRepos);
         List<YangNode> resolvedDataModelNodes = new ArrayList<>();
         for (String dependecy : dependeciesJarPaths) {
             resolvedDataModelNodes.addAll(deSerializeDataModel(parseJarFile(dependecy, directory)));
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
index 7240725..7a894e6 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
@@ -87,8 +87,14 @@
     /**
      * Source directory for generated files.
      */
-    @Parameter(property = "genFilesDir", defaultValue = "src/main/java")
-    private String genFilesDir;
+    @Parameter(property = "classFileDir", defaultValue = "target/generated-sources")
+    private String classFileDir;
+
+    /**
+     * Source directory for manager's generated files.
+     */
+    @Parameter(property = "managerFileDir", defaultValue = "src/main/java")
+    private String managerFileDir;
 
     /**
      * Base directory for project.
@@ -153,11 +159,12 @@
             /*
              * For deleting the generated code in previous build.
              */
-            deleteDirectory(getDirectory(baseDir, genFilesDir) + DEFAULT_PKG);
+            deleteDirectory(getDirectory(baseDir, classFileDir) + DEFAULT_PKG);
             deleteDirectory(getDirectory(baseDir, outputDirectory));
 
             String searchDir = getDirectory(baseDir, yangFilesDir);
-            String codeGenDir = getDirectory(baseDir, genFilesDir) + SLASH;
+            String codeGenDir = getDirectory(baseDir, classFileDir) + SLASH;
+            String managerCodeGenDir = getDirectory(baseDir, managerFileDir) + SLASH;
 
             // Creates conflict resolver and set values to it.
             YangToJavaNamingConflictUtil conflictResolver = new YangToJavaNamingConflictUtil();
@@ -167,6 +174,7 @@
             conflictResolver.setPrefixForIdentifier(prefixForIdentifier);
             YangPluginConfig yangPlugin = new YangPluginConfig();
             yangPlugin.setCodeGenDir(codeGenDir);
+            yangPlugin.setManagerCodeGenDir(managerCodeGenDir);
             yangPlugin.setConflictResolver(conflictResolver);
 
             /*
@@ -195,18 +203,18 @@
             // Serialize data model.
             serializeDataModel(getDirectory(baseDir, outputDirectory), getYangFileInfoSet(), project, true);
 
-            addToCompilationRoot(getDirectory(baseDir, genFilesDir), project, context);
+            addToCompilationRoot(codeGenDir, project, context);
+            addToCompilationRoot(managerCodeGenDir, project, context);
 
             copyYangFilesToTarget(getYangFileInfoSet(), getDirectory(baseDir, outputDirectory), project);
         } catch (IOException | ParserException e) {
-            getLog().info(e);
             String fileName = "";
             if (getCurYangFileInfo() != null) {
                 fileName = getCurYangFileInfo().getYangFileName();
             }
             try {
                 translatorErrorHandler(getRootNode());
-                deleteDirectory(getDirectory(baseDir, genFilesDir) + DEFAULT_PKG);
+                deleteDirectory(getDirectory(baseDir, classFileDir) + DEFAULT_PKG);
             } catch (IOException ex) {
                 throw new MojoExecutionException(
                         "Error handler failed to delete files for data model node.");
@@ -255,14 +263,12 @@
     public void resolveDependenciesUsingLinker()
             throws MojoExecutionException {
         createYangNodeSet();
-        for (YangFileInfo yangFileInfo : getYangFileInfoSet()) {
-            setCurYangFileInfo(yangFileInfo);
-            try {
-                yangLinker.resolveDependencies(getYangNodeSet());
-            } catch (LinkerException e) {
-                throw new MojoExecutionException(e.getMessage());
-            }
+        try {
+            yangLinker.resolveDependencies(getYangNodeSet());
+        } catch (LinkerException e) {
+            throw new MojoExecutionException(e.getMessage());
         }
+
     }
 
     /**