[ONOS-4527,ONOS-4524,ONOS-4536,ONOS-4541,ONOS-4549,ONOS-4550,ONOS-4557
,ONOS-4558,ONOS-4545,ONOS-4543,ONOS-4546]
 Checkstyle error in generated code handled and defect fixed.

Change-Id: Ifef5a22f91d4ee21767f1e2c6d0dd5b5b0b8cfcc
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
index f393a56..3722ad3 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
@@ -57,4 +57,19 @@
      * updates the qualified info.
      */
     void updateJavaQualifiedInfo();
+
+    /**
+     * Returns java naming conflict resolver.
+     *
+     * @return  java naming conflict resolver
+     */
+    YangToJavaNamingConflictUtil getConflictResolveConfig();
+
+    /**
+     * Sets  java naming conflict resolver.
+     *
+     * @param conflictResolveConfig  java naming conflict resolver
+     */
+    void setConflictResolveConfig(YangToJavaNamingConflictUtil conflictResolveConfig);
+
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
index 22970a9..5b1e7c5 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
@@ -16,7 +16,7 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoContainer;
-
+import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil;
 
 /**
  * Represent java based identification of the YANG leaves.
@@ -26,6 +26,8 @@
 
     /**
      * updates the qualified access details of the type.
+     *
+     * @param confilictResolver plugin configurations
      */
-    void updateJavaQualifiedInfo();
+    void updateJavaQualifiedInfo(YangToJavaNamingConflictUtil confilictResolver);
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeaf.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeaf.java
index 61e8e9c..10df251 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeaf.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeaf.java
@@ -30,6 +30,7 @@
         implements JavaLeafInfoContainer {
 
     private JavaQualifiedTypeInfo javaQualifiedAccess;
+    private YangToJavaNamingConflictUtil conflictResolveConfig;
 
     /**
      * Returns a new YANG leaf object with java qualified access details.
@@ -50,6 +51,7 @@
 
     }
 
+    @Override
     public String getJavaName(YangToJavaNamingConflictUtil conflictResolveConfig) {
         return getCamelCase(getName(), conflictResolveConfig);
     }
@@ -63,4 +65,23 @@
     public void updateJavaQualifiedInfo() {
         updateLeavesJavaQualifiedInfo(this);
     }
+
+    /**
+     * Returns java naming conflict resolve configurations.
+     *
+     * @return java naming conflict resolve configurations
+     */
+    public YangToJavaNamingConflictUtil getConflictResolveConfig() {
+        return conflictResolveConfig;
+    }
+
+    /**
+     * Sets java naming conflict resolve configurations.
+     *
+     * @param conflictResolveConfig java naming conflict resolve configurations
+     */
+    public void setConflictResolveConfig(YangToJavaNamingConflictUtil conflictResolveConfig) {
+        this.conflictResolveConfig = conflictResolveConfig;
+    }
+
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafList.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafList.java
index 2d7e5bb..463656d 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafList.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafList.java
@@ -29,6 +29,7 @@
         extends YangLeafList
         implements JavaLeafInfoContainer {
     private JavaQualifiedTypeInfo javaQualifiedAccess;
+    private YangToJavaNamingConflictUtil conflictResolveConfig;
 
     /**
      * Returns a new YANG leaf object with java qualified access details.
@@ -62,4 +63,24 @@
     public void setJavaQualifiedInfo(JavaQualifiedTypeInfo typeInfo) {
         javaQualifiedAccess = typeInfo;
     }
+
+    /**
+     * Returns java naming conflict resolve configurations.
+     *
+     * @return java naming conflict resolve configurations
+     */
+    @Override
+    public YangToJavaNamingConflictUtil getConflictResolveConfig() {
+        return conflictResolveConfig;
+    }
+
+    /**
+     * Sets java naming conflict resolve configurations.
+     *
+     * @param conflictResolveConfig java naming conflict resolve configurations
+     */
+    @Override
+    public void setConflictResolveConfig(YangToJavaNamingConflictUtil conflictResolveConfig) {
+        this.conflictResolveConfig = conflictResolveConfig;
+    }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
index fc2d9df..5bbe81b 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
@@ -16,14 +16,21 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.onosproject.yangutils.datamodel.YangModule;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangNotification;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
 
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfRootNode;
@@ -48,12 +55,24 @@
     private TempJavaCodeFragmentFiles tempFileHandle;
 
     /**
+     * List of notifications nodes.
+     */
+    private List<YangNode> notificationNodes;
+
+    /**
      * Creates a YANG node of module type.
      */
     public YangJavaModule() {
         super();
         setJavaFileInfo(new JavaFileInfo());
-        getJavaFileInfo().setGeneratedFileTypes(GENERATE_SERVICE_AND_MANAGER);
+        setNotificationNodes(new ArrayList<>());
+        int gentype = GENERATE_SERVICE_AND_MANAGER;
+        if (isNotificationChildNodePresent(this)) {
+            gentype = GENERATE_SERVICE_AND_MANAGER | GENERATE_EVENT_SUBJECT_CLASS | GENERATE_EVENT_CLASS
+                    | GENERATE_EVENT_LISTENER_INTERFACE;
+        }
+        getJavaFileInfo().setGeneratedFileTypes(gentype);
+
     }
 
     /**
@@ -121,6 +140,15 @@
      */
     @Override
     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.
+         * 2) Event class extending "AbstractEvent" and defining event type enum.
+         * 3) Event listener interface extending "EventListener".
+         * 4) Event subject class.
+         *
+         * The manager class needs to extend the "ListenerRegistry".
+         */
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
             searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
@@ -129,4 +157,53 @@
             throw new TranslatorException("Failed to generate code for module node " + this.getName());
         }
     }
+
+    /**
+     * Returns notifications node list.
+     *
+     * @return notification nodes
+     */
+    public List<YangNode> getNotificationNodes() {
+        return notificationNodes;
+    }
+
+    /**
+     * Sets notifications list.
+     *
+     * @param notificationNodes notification list
+     */
+    private void setNotificationNodes(List<YangNode> notificationNodes) {
+        this.notificationNodes = notificationNodes;
+    }
+
+    /**
+     * Adds to notification node list.
+     *
+     * @param curNode notification node
+     */
+    private void addToNotificaitonList(YangNode curNode) {
+        getNotificationNodes().add(curNode);
+    }
+
+    /**
+     * Checks if there is any rpc defined in the module or sub-module.
+     *
+     * @param rootNode root node of the data model
+     * @return status of rpc's existence
+     */
+    public boolean isNotificationChildNodePresent(YangNode rootNode) {
+        YangNode childNode = rootNode.getChild();
+
+        while (childNode != null) {
+            if (childNode instanceof YangNotification) {
+                addToNotificaitonList(childNode);
+            }
+            childNode = childNode.getNextSibling();
+        }
+
+        if (!getNotificationNodes().isEmpty()) {
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotification.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotification.java
index 8624a44..d40073a 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotification.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotification.java
@@ -30,8 +30,6 @@
 import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
 import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
 
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
 import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfAugmentableNode;
@@ -62,8 +60,7 @@
     public YangJavaNotification() {
         super();
         setJavaFileInfo(new JavaFileInfo());
-        getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER
-                | GENERATE_EVENT_CLASS | GENERATE_EVENT_LISTENER_INTERFACE);
+        getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER);
     }
 
     /**
@@ -167,17 +164,8 @@
      */
     @Override
     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.
-         * 2) Event class extending "AbstractEvent" and defining event type enum.
-         * 3) Event listener interface extending "EventListener".
-         *
-         * The manager class needs to extend the "ListenerRegistry".
-         */
         try {
-            getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER
-                    | GENERATE_EVENT_CLASS | GENERATE_EVENT_LISTENER_INTERFACE, this);
+            getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
         } catch (IOException e) {
             throw new TranslatorException("Failed to generate code for notification node " + this.getName());
         }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
index d63b887..e721fa7 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
@@ -135,6 +135,7 @@
         try {
             ((TempJavaCodeFragmentFilesContainer) parent).getTempJavaCodeFragmentFiles().getServiceTempFiles()
                     .addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfoOfInput, javaAttributeInfoOfOutput,
+                            ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig(),
                             ((YangNode) this).getName());
         } catch (IOException e) {
             throw new TranslatorException("Failed to generate code for RPC node " + this.getName());
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
index 59d4912..8696495 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
@@ -16,8 +16,13 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import java.io.IOException;
+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.YangSubModule;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
@@ -25,6 +30,9 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
 
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
 import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfRootNode;
@@ -49,12 +57,22 @@
     private TempJavaCodeFragmentFiles tempFileHandle;
 
     /**
+     * List of notifications nodes.
+     */
+    private List<YangNode> notificationNodes = new ArrayList<>();
+
+    /**
      * Creates YANG java sub module object.
      */
     public YangJavaSubModule() {
         super();
         setJavaFileInfo(new JavaFileInfo());
-        getJavaFileInfo().setGeneratedFileTypes(GENERATE_SERVICE_AND_MANAGER);
+        int gentype = GENERATE_SERVICE_AND_MANAGER;
+        if (isNotificationChildNodePresent(this)) {
+            gentype = GENERATE_SERVICE_AND_MANAGER | GENERATE_EVENT_SUBJECT_CLASS | GENERATE_EVENT_CLASS
+                    | GENERATE_EVENT_LISTENER_INTERFACE;
+        }
+        getJavaFileInfo().setGeneratedFileTypes(gentype);
     }
 
     /**
@@ -136,6 +154,15 @@
      */
     @Override
     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.
+         * 2) Event class extending "AbstractEvent" and defining event type enum.
+         * 3) Event listener interface extending "EventListener".
+         * 4) Event subject class.
+         *
+         * The manager class needs to extend the "ListenerRegistry".
+         */
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
             searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
@@ -144,4 +171,44 @@
             throw new TranslatorException("Failed to generate code for submodule node " + this.getName());
         }
     }
+
+    /**
+     * Returns notifications node list.
+     *
+     * @return notification nodes
+     */
+    public List<YangNode> getNotificationNodes() {
+        return notificationNodes;
+    }
+
+    /**
+     * Adds to notification node list.
+     *
+     * @param curNode notification node
+     */
+    private void addToNotificaitonList(YangNode curNode) {
+        getNotificationNodes().add(curNode);
+    }
+
+    /**
+     * Checks if there is any rpc defined in the module or sub-module.
+     *
+     * @param rootNode root node of the data model
+     * @return status of rpc's existence
+     */
+    public boolean isNotificationChildNodePresent(YangNode rootNode) {
+        YangNode childNode = rootNode.getChild();
+
+        while (childNode != null) {
+            if (childNode instanceof YangNotification) {
+                addToNotificaitonList(childNode);
+            }
+            childNode = childNode.getNextSibling();
+        }
+
+        if (!getNotificationNodes().isEmpty()) {
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java
index 82771d3..4ba4858 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java
@@ -19,6 +19,7 @@
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType;
+import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil;
 
 /**
  * Represents java information corresponding to the YANG type.
@@ -40,13 +41,13 @@
     }
 
     @Override
-    public void updateJavaQualifiedInfo() {
+    public void updateJavaQualifiedInfo(YangToJavaNamingConflictUtil confilictResolver) {
         JavaQualifiedTypeInfo importInfo = getJavaQualifiedInfo();
 
         /*
          * Type is added as an attribute in the class.
          */
-        String className = AttributesJavaDataType.getJavaImportClass(this, false);
+        String className = AttributesJavaDataType.getJavaImportClass(this, false, confilictResolver);
         if (className != null) {
             /*
              * Corresponding to the attribute type a class needs to be imported,