[ONOS-5141],[ONOS-5142],[ONOS-5165],[ONOS-4881],[ONOS-4889],[ONOS-5104],[ONOS-5138] defect fixes

Change-Id: I435dc0cf9afae7230fc98b57f33af104e0e38e67
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java
index c1b6726..daf035e 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java
@@ -100,9 +100,10 @@
                 try {
                     ((YangSubModule) yangNode).linkWithModule(getYangNodeSet());
                 } catch (DataModelException e) {
-                    String errorInfo = "YANG file error: " + yangNode.getName() + " at line: "
-                            + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
-                            + e.getMessage();
+                    String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+                            yangNode.getFileName() + " at " +
+                            "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+                            + e.getLocalizedMessage();
                     throw new LinkerException(errorInfo);
                     // TODO add file path in exception message in util manager.
                 }
@@ -123,9 +124,10 @@
                 try {
                     ((YangReferenceResolver) yangNode).addReferencesToImportList(getYangNodeSet());
                 } catch (DataModelException e) {
-                    String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
-                            + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
-                            + e.getMessage();
+                    String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+                            yangNode.getFileName() + " at " +
+                            "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+                            + e.getLocalizedMessage();
                     throw new LinkerException(errorInfo);
                     // TODO add file path in exception message in util manager.
                 }
@@ -146,9 +148,10 @@
                 try {
                     ((YangReferenceResolver) yangNode).addReferencesToIncludeList(getYangNodeSet());
                 } catch (DataModelException e) {
-                    String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
-                            + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
-                            + e.getMessage();
+                    String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+                            yangNode.getFileName() + " at " +
+                            "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+                            + e.getLocalizedMessage();
                     throw new LinkerException(errorInfo);
                     // TODO add file path in exception message in util manager.
                 }
@@ -186,13 +189,17 @@
                 ((YangReferenceResolver) yangNode)
                         .resolveInterFileLinking(ResolvableType.YANG_COMPILER_ANNOTATION);
             } catch (DataModelException e) {
-                String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
-                        + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE + e.getMessage();
+                String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+                        yangNode.getFileName() + " at " +
+                        "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+                        + e.getLocalizedMessage();
                 throw new LinkerException(errorInfo);
                 // TODO add file path in exception message in util manager.
             } catch (LinkerException e) {
-                String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
-                        + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE + e.getMessage();
+                String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+                        yangNode.getFileName() + " at " +
+                        "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+                        + e.getLocalizedMessage();
                 throw new LinkerException(errorInfo);
                 // TODO add file path in exception message in util manager.
             }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
index 37a04df..23e190c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
@@ -54,6 +54,7 @@
 import static org.onosproject.yangutils.datamodel.TraversalType.SIBILING;
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.addResolutionInfo;
 import static org.onosproject.yangutils.datamodel.utils.GeneratedLanguage.JAVA_GENERATION;
+import static org.onosproject.yangutils.datamodel.utils.YangConstructType.getYangConstructType;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.IDENTITYREF;
 import static org.onosproject.yangutils.translator.tojava.YangDataModelFactory.getYangCaseNode;
@@ -118,7 +119,8 @@
                     if (targetLeaf.getName().equals(leaf.getName())) {
                         throw new LinkerException("target node " + targetNode.getName()
                                 + " contains augmented leaf " + leaf.getName() + " in module "
-                                + parent.getName());
+                                + parent.getName() + " in " + targetNode.getLineNumber()
+                                + " at " + targetNode.getCharPosition() + " in " + targetNode.getFileName());
                     }
                 }
             }
@@ -130,7 +132,8 @@
                     if (targetLeafList.getName().equals(leafList.getName())) {
                         throw new LinkerException("target node " + targetNode.getName()
                                 + " contains augmented leaf-list" + leafList.getName() + " in module "
-                                + parent.getName());
+                                + parent.getName() + " in " + targetNode.getLineNumber()
+                                + " at " + targetNode.getCharPosition() + " in " + targetNode.getFileName());
                     }
                 }
             }
@@ -144,8 +147,9 @@
             while (targetNodesChild != null) {
                 if (targetNodesChild.getName().equals(augmentsChild.getName())) {
                     throw new LinkerException("target node " + targetName
-                            + " contains augmented child node" + augmentsChild.getName() + " in module "
-                            + parentName);
+                            + " contains augmented child node " + augmentsChild.getName() + " in module "
+                            + parentName + " in " + targetNodesChild.getLineNumber()
+                            + " at " + targetNodesChild.getCharPosition() + " in " + targetNodesChild.getFileName());
                 }
                 targetNodesChild = targetNodesChild.getNextSibling();
             }
@@ -198,7 +202,9 @@
             }
 
         } catch (DataModelException e) {
-            throw new TranslatorException("Failed to add child nodes to case node of augment " + augment.getName());
+            throw new TranslatorException("Failed to add child nodes to case node of augment " + augment.getName()
+                    + " in " + augment.getLineNumber() + " at "
+                    + augment.getCharPosition() + " in " + augment.getFileName());
         }
     }
 
@@ -220,7 +226,8 @@
             for (YangNode aChild : augmentChildren) {
                 if (cChild.getName().equals(aChild.getName())) {
                     throw new LinkerException("case node " + aChild.getName() + "already present in choice " +
-                            choice.getName());
+                            choice.getName() + " in " + cChild.getLineNumber() + " at " + cChild.getCharPosition()
+                            + " in " + cChild.getFileName());
                 }
             }
         }
@@ -261,8 +268,6 @@
                 listOfPathName.add(atomicPath.getNodeIdentifier().getName());
             }
         }
-
-
         for (int countOfAncestor = 0; countOfAncestor < remainingAncestors; countOfAncestor++) {
             listOfPathName.remove(listOfPathName.size() - 1);
         }
@@ -282,7 +287,8 @@
         while (currentParent instanceof YangChoice || currentParent instanceof YangCase) {
             if (currentParent.getParent() == null) {
                 throw new LinkerException("YANG file error: The target node, in the leafref path " +
-                        leafref.getPath() + ", is invalid.");
+                        leafref.getPath() + ", is invalid." + " in " + leafref.getLineNumber()
+                        + " at " + leafref.getCharPosition() + " in " + leafref.getFileName());
             }
             currentParent = currentParent.getParent();
         }
@@ -310,7 +316,7 @@
             return nodeIdentifier;
         } else {
             throw new LinkerException("YANG file error : " +
-                    YangConstructType.getYangConstructType(yangConstruct) + " name " + nodeIdentifierString +
+                    getYangConstructType(yangConstruct) + " name " + nodeIdentifierString +
                     " is not valid.");
         }
     }
@@ -326,15 +332,15 @@
 
         if (identifier.length() > IDENTIFIER_LENGTH) {
             throw new LinkerException("YANG file error : " +
-                    YangConstructType.getYangConstructType(yangConstruct) + " name " + identifier + " is " +
+                    getYangConstructType(yangConstruct) + " name " + identifier + " is " +
                     "greater than 64 characters.");
         } else if (!IDENTIFIER_PATTERN.matcher(identifier).matches()) {
             throw new LinkerException("YANG file error : " +
-                    YangConstructType.getYangConstructType(yangConstruct) + " name " + identifier + " is not " +
+                    getYangConstructType(yangConstruct) + " name " + identifier + " is not " +
                     "valid.");
         } else if (identifier.toLowerCase().startsWith(XML)) {
             throw new LinkerException("YANG file error : " +
-                    YangConstructType.getYangConstructType(yangConstruct) + " identifier " + identifier +
+                    getYangConstructType(yangConstruct) + " identifier " + identifier +
                     " must not start with (('X'|'x') ('M'|'m') ('L'|'l')).");
         } else {
             return identifier;
@@ -448,7 +454,13 @@
                                 try {
                                     addResolutionInfo(resolutionInfo);
                                 } catch (DataModelException e) {
-                                    throw new LinkerException("Failed to add type info in grouping to resolution ");
+                                    String errorInfo = "Error in file: " + curNode.getName() + " in " +
+                                            curNode.getFileName() + " at " +
+                                            "line: " + e.getLineNumber() +
+                                            " at position: " + e.getCharPositionInLine()
+                                            + e.getLocalizedMessage();
+                                    throw new LinkerException("Failed to add type info in grouping to resolution "
+                                            + errorInfo);
                                 }
                             }
                         }
@@ -485,7 +497,7 @@
 
                     // Add resolution information to the list
                     YangResolutionInfoImpl resolutionInfo =
-                            new YangResolutionInfoImpl<YangType>(type, (YangNode) leavesHolder,
+                            new YangResolutionInfoImpl<>(type, (YangNode) leavesHolder,
                                     type.getLineNumber(), type.getCharPosition());
                     try {
                         addResolutionInfo(resolutionInfo);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
index 0c21bc9..f40f6ff 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
@@ -22,6 +22,7 @@
 import java.util.List;
 import java.util.Stack;
 
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
 import org.onosproject.yangutils.datamodel.Resolvable;
 import org.onosproject.yangutils.datamodel.ResolvableType;
 import org.onosproject.yangutils.datamodel.TraversalType;
@@ -103,7 +104,7 @@
  *
  * @param <T> type of resolution entity uses / type
  */
-public class YangResolutionInfoImpl<T>
+public class YangResolutionInfoImpl<T> extends DefaultLocationInfo
         implements YangResolutionInfo<T>, Serializable {
 
     private static final long serialVersionUID = 806201658L;
@@ -114,16 +115,6 @@
     private YangEntityToResolveInfoImpl<T> entityToResolveInfo;
 
     /**
-     * Error line number.
-     */
-    private transient int lineNumber;
-
-    /**
-     * Error character position in number.
-     */
-    private transient int charPosition;
-
-    /**
      * Current module/sub-module reference, will be used in inter-file/
      * inter-jar scenario to get the import/include list.
      */
@@ -548,7 +539,11 @@
         int currentParentCount = 1;
         while (currentParentCount < ancestorCount) {
             if (currentParent.getParent() == null) {
-                throw new DataModelException("YANG file error: The target node of leafref is invalid.");
+                throw new DataModelException("YANG file error: The target node of leafref is invalid."
+                        + currentParent.getName() + " in " +
+                        currentParent.getLineNumber() + " at " +
+                        currentParent.getCharPosition()
+                        + " in " + currentParent.getFileName() + "\"");
             }
             currentParent = currentParent.getParent();
             currentParentCount = currentParentCount + 1;
@@ -719,7 +714,11 @@
                     if (potentialReferredNode.getParent() instanceof YangRpc) {
                         potentialReferredNode = potentialReferredNode.getNextSibling();
                     } else {
-                        throw new DataModelException("YANG file error: The target node of leafref is invalid.");
+                        throw new DataModelException("YANG file error: The target node of leafref is invalid. "
+                                + potentialReferredNode.getName() + " in " +
+                                potentialReferredNode.getLineNumber() + " at " +
+                                potentialReferredNode.getCharPosition()
+                                + " in " + potentialReferredNode.getFileName() + "\"");
                     }
                 }
                 return potentialReferredNode;
@@ -770,7 +769,11 @@
              */
             return currentReferredNode.getName().contentEquals(nameOfNodeinPath);
         } else {
-            throw new DataModelException("Data Model Exception: Entity to resolved is other than leafref");
+            throw new DataModelException("Data Model Exception: Entity to resolved is other than leafref "
+                    + currentReferredNode.getName() + " in " +
+                    currentReferredNode.getLineNumber() + " at " +
+                    currentReferredNode.getCharPosition()
+                    + " in " + currentReferredNode.getFileName() + "\"");
         }
     }
 
@@ -791,7 +794,11 @@
             //Check if name of node name matches with the current reference node.
             return currentReferredNode.getName().contentEquals(nameOfIdentityRefBase);
         } else {
-            throw new DataModelException("Data Model Exception: Entity to resolved is other than identityref");
+            throw new DataModelException("Data Model Exception: Entity to resolved is other than identityref"
+                    + currentReferredNode.getName() + " in " +
+                    currentReferredNode.getLineNumber() + " at " +
+                    currentReferredNode.getCharPosition()
+                    + " in " + currentReferredNode.getFileName() + "\"");
         }
     }
 
@@ -875,7 +882,11 @@
             }
         } else {
             throw new DataModelException("Data Model Exception: Entity to resolved is other than type/" +
-                    "uses/base/identityref");
+                    "uses/base/identityref"
+                    + potentialReferredNode.getName() + " in " +
+                    potentialReferredNode.getLineNumber() + " at " +
+                    potentialReferredNode.getCharPosition()
+                    + " in " + potentialReferredNode.getFileName() + "\"");
         }
         return false;
     }
@@ -916,7 +927,11 @@
                 return true;
             }
         } else {
-            throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses");
+            throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses "
+                    + node.getName() + " in " +
+                    node.getLineNumber() + " at " +
+                    node.getCharPosition()
+                    + " in " + node.getFileName() + "\"");
         }
         return false;
     }
@@ -965,7 +980,11 @@
             ((YangIdentityRef) getCurrentEntityToResolveFromStack()).setReferredIdentity((YangIdentity) referredNode);
         } else {
             throw new DataModelException("Data Model Exception: Entity to resolved is other than type" +
-                    "/uses/base/identityref");
+                    "/uses/base/identityref"
+                    + referredNode.getName() + " in " +
+                    referredNode.getLineNumber() + " at " +
+                    referredNode.getCharPosition()
+                    + " in " + referredNode.getFileName() + "\"");
         }
 
         // Sets the resolution status in inside the type/uses.
@@ -1004,7 +1023,11 @@
             addUnResolvedIfFeatureToStack(referredNode);
         } else if (getCurrentEntityToResolveFromStack() instanceof YangLeafRef) {
             // do nothing , referred node is already set
-            throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses");
+            throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses "
+                    + referredNode.getName() + " in " +
+                    referredNode.getLineNumber() + " at " +
+                    referredNode.getCharPosition()
+                    + " in " + referredNode.getFileName() + "\"");
         } else if ((getCurrentEntityToResolveFromStack() instanceof YangBase) ||
                 (getCurrentEntityToResolveFromStack() instanceof YangIdentityRef)) {
 
@@ -1012,7 +1035,11 @@
             addUnResolvedBaseToStack(referredNode);
         } else {
             throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses/" +
-                    "base/identityref");
+                    "base/identityref " + referredNode.getName() + " in " +
+                    referredNode.getLineNumber() + " at " +
+                    referredNode.getCharPosition()
+                    + " in " + referredNode.getFileName() + "\"");
+
         }
     }
 
@@ -1147,26 +1174,6 @@
         this.entityToResolveInfo = entityToResolveInfo;
     }
 
-    @Override
-    public int getLineNumber() {
-        return lineNumber;
-    }
-
-    @Override
-    public int getCharPosition() {
-        return charPosition;
-    }
-
-    @Override
-    public void setLineNumber(int lineNumber) {
-        this.lineNumber = lineNumber;
-    }
-
-    @Override
-    public void setCharPosition(int charPositionInLine) {
-        this.charPosition = charPositionInLine;
-    }
-
     /**
      * Returns current module/sub-module reference, will be used in inter-file/
      * inter-jar scenario to get the import/include list.
@@ -1248,10 +1255,16 @@
                     resolvable.setResolvableStatus(RESOLVED);
                 } else {
                     throw new LinkerException("Invalid target node type " + targetNode.getNodeType() + " for "
-                            + augment.getName());
+                            + augment.getName() + " for " + targetNode.getName() +
+                            "in " + targetNode.getLineNumber()
+                            + " at " + targetNode.getCharPosition() +
+                            " in " + targetNode.getFileName());
                 }
             } else {
-                throw new LinkerException("Failed to link " + augment.getName());
+                throw new LinkerException("Failed to link " + augment.getName() +
+                        "in " + augment.getLineNumber()
+                        + " at " + augment.getCharPosition() +
+                        " in " + augment.getFileName());
             }
         } else if (entityToResolve instanceof YangCompilerAnnotation) {
             YangNode targetNode;
@@ -1267,18 +1280,21 @@
                     resolvable.setResolvableStatus(RESOLVED);
                 } else {
                     throw new LinkerException("Invalid target node type " + targetNode.getNodeType() + " for compiler" +
-                            " annotation " + ca.getPath());
+                            " annotation " + ca.getPath() + " in " + ca.getLineNumber() + " at "
+                            + ca.getCharPosition() + " in " + ca.getFileName());
                 }
             } else {
-                throw new LinkerException("Failed to link compiler annotation " + ca.getPath());
+                throw new LinkerException("Failed to link compiler annotation " + ca.getPath()
+                        + " in " + ca.getLineNumber() + " at "
+                        + ca.getCharPosition() + " in " + ca.getFileName());
             }
         } else if (entityToResolve instanceof YangLeafRef) {
             YangLeafRef leafRef = (YangLeafRef) entityToResolve;
             Object target = xPathLinker.processLeafRefXpathLinking(leafRef.getAtomicPath(),
                     (YangNode) root, leafRef);
             if (target != null) {
-                YangLeaf leaf = null;
-                YangLeafList leafList = null;
+                YangLeaf leaf;
+                YangLeafList leafList;
                 leafRef.setReferredLeafOrLeafList(target);
                 if (target instanceof YangLeaf) {
                     leaf = (YangLeaf) target;
@@ -1297,6 +1313,7 @@
                         + leafRef.getPath());
                 linkerException.setCharPosition(leafRef.getCharPosition());
                 linkerException.setLine(leafRef.getLineNumber());
+                linkerException.setFileName(leafRef.getFileName());
                 throw linkerException;
             }
         }
@@ -1554,6 +1571,7 @@
                     "leafref path " + leafref.getPath() + ", is invalid.");
             dataModelException.setCharPosition(leafref.getCharPosition());
             dataModelException.setLine(leafref.getLineNumber());
+            dataModelException.setFileName(leafref.getFileName());
             throw dataModelException;
         }
     }
@@ -1582,7 +1600,11 @@
                 if (currentSkippedParent == currentParent) {
                     if (currentParent.getParent() == null) {
                         throw new DataModelException("YANG file error: The target node, in the leafref path "
-                                + leafref.getPath() + ", is invalid.");
+                                + leafref.getPath() + ", is invalid."
+                                + " in " +
+                                leafref.getLineNumber() + " at " +
+                                leafref.getCharPosition()
+                                + " in " + leafref.getFileName() + "\"");
                     }
                     currentParent = currentParent.getParent();
                 } else {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java
index d77fe7d..a53e727 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java
@@ -63,6 +63,7 @@
     private YangNode rootNode;
     private Map<YangAtomicPath, PrefixResolverType> prefixResolverTypes;
     private String curPrefix;
+    private String constructsParentsPrefix;
 
     /**
      * Creates an instance of x-path linker.
@@ -163,6 +164,24 @@
     }
 
     /**
+     * Returns unresolved construct's parent's prefix.
+     *
+     * @return unresolved construct's parent's prefix
+     */
+    private String getConstructsParentsPrefix() {
+        return constructsParentsPrefix;
+    }
+
+    /**
+     * Sets unresolved construct's parent's prefix.
+     *
+     * @param constructsParentsPrefix unresolved construct's parent's prefix
+     */
+    private void setConstructsParentsPrefix(String constructsParentsPrefix) {
+        this.constructsParentsPrefix = constructsParentsPrefix;
+    }
+
+    /**
      * Adds node to resolved nodes.
      *
      * @param path absolute path
@@ -237,6 +256,7 @@
                             + leafref.getPath());
                     linkerException.setCharPosition(leafref.getCharPosition());
                     linkerException.setLine(leafref.getLineNumber());
+                    linkerException.setFileName(leafref.getFileName());
                     throw linkerException;
                 }
             }
@@ -261,6 +281,7 @@
                         "leafref path " + leafref.getPath() + ", is invalid.");
                 linkerException.setCharPosition(leafref.getCharPosition());
                 linkerException.setLine(leafref.getLineNumber());
+                linkerException.setFileName(leafref.getFileName());
                 throw linkerException;
             }
         }
@@ -314,7 +335,8 @@
     private YangLeaf searchReferredLeaf(YangNode targetNode, String leafName) {
         if (!(targetNode instanceof YangLeavesHolder)) {
             throw new LinkerException("Referred node " + targetNode.getName() +
-                    "should be of type leaves holder ");
+                    "should be of type leaves holder in " + targetNode.getLineNumber() +
+                    " at " + targetNode.getCharPosition() + " in " + targetNode.getFileName());
         }
         YangLeavesHolder holder = (YangLeavesHolder) targetNode;
         List<YangLeaf> leaves = holder.getListOfLeaf();
@@ -338,7 +360,8 @@
     private YangLeafList searchReferredLeafList(YangNode targetNode, String leafListName) {
         if (!(targetNode instanceof YangLeavesHolder)) {
             throw new LinkerException("Referred node " + targetNode.getName() +
-                    "should be of type leaves holder ");
+                    "should be of type leaves holder in " + targetNode.getLineNumber() +
+                    " at " + targetNode.getCharPosition() + " in " + targetNode.getFileName());
         }
         YangLeavesHolder holder = (YangLeavesHolder) targetNode;
         List<YangLeafList> leavesList = holder.getListOfLeafList();
@@ -360,6 +383,7 @@
      */
     private YangNode parseData(YangNode root) {
         String rootPrefix = getRootsPrefix(root);
+        setConstructsParentsPrefix(rootPrefix);
         Iterator<YangAtomicPath> pathIterator = getAbsPaths().iterator();
         YangAtomicPath path = pathIterator.next();
         if (path.getNodeIdentifier().getPrefix() != null
@@ -382,27 +406,28 @@
         Stack<YangNode> linkerStack = new Stack<>();
         Iterator<YangAtomicPath> pathIterator = getAbsPaths().iterator();
         YangAtomicPath tempPath = pathIterator.next();
+        YangNodeIdentifier nodeId;
         setCurPrefix(tempPath.getNodeIdentifier().getPrefix());
         int index = 0;
         YangNode tempAugment;
         do {
-
+            nodeId = tempPath.getNodeIdentifier();
             if (tempPath.getNodeIdentifier().getPrefix() == null) {
                 tempAugment = resolveIntraFileAugment(tempPath, root);
             } else {
                 tempAugment = resolveInterFileAugment(tempPath, root);
             }
-
             if (tempAugment != null) {
                 linkerStack.push(tempNode);
                 tempNode = tempAugment;
             }
 
-            tempNode = searchTargetNode(tempNode, tempPath.getNodeIdentifier());
+            tempNode = searchTargetNode(tempNode, nodeId);
+
             if (tempNode == null && linkerStack.size() != 0) {
                 tempNode = linkerStack.peek();
                 linkerStack.pop();
-                tempNode = searchTargetNode(tempNode, tempPath.getNodeIdentifier());
+                tempNode = searchTargetNode(tempNode, nodeId);
             }
 
             if (tempNode != null) {
@@ -558,6 +583,9 @@
             }
         }
 
+        if (nodeId.getName() != null && nodeId.getPrefix().equals(getConstructsParentsPrefix())) {
+            return getRootNode();
+        }
         return root;
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
index c8b7804..c2b29ed 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
@@ -47,7 +47,7 @@
         try {
             input = new ANTLRFileStream(yangFile);
         } catch (IOException e) {
-            throw new ParserException("YANG file error : YANG file does not exist.");
+            throw new ParserException("YANG file error : YANG file does not exist. " + yangFile);
         }
 
         // Create a lexer that feeds off of input char stream.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppDataStructureListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppDataStructureListener.java
index c541bda..e9ff96c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppDataStructureListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppDataStructureListener.java
@@ -80,6 +80,9 @@
         YangAppDataStructure appDataStructure = new YangAppDataStructure();
         appDataStructure.setPrefix(prefix);
         appDataStructure.setDataStructure(dataStructure);
+        appDataStructure.setLineNumber(ctx.getStart().getLine());
+        appDataStructure.setCharPosition(ctx.getStart().getCharPositionInLine());
+        appDataStructure.setFileName(listener.getFileName());
 
         Parsable curData = listener.getParsedDataStack().peek();
         if (curData instanceof YangCompilerAnnotation) {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppExtendedNameListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppExtendedNameListener.java
index b72b95c..7ff8bbe 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppExtendedNameListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppExtendedNameListener.java
@@ -71,6 +71,9 @@
         extendedName.setPrefix(prefix);
         extendedName.setYangAppExtendedName(removeQuotesAndHandleConcat(ctx.extendedName().getText()));
 
+        extendedName.setLineNumber(ctx.getStart().getLine());
+        extendedName.setCharPosition(ctx.getStart().getCharPositionInLine());
+        extendedName.setFileName(listener.getFileName());
         Parsable curData = listener.getParsedDataStack().peek();
         if (curData instanceof YangCompilerAnnotation) {
             YangCompilerAnnotation compilerAnnotation = ((YangCompilerAnnotation) curData);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ArgumentListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ArgumentListener.java
index 2d06fa4..797da12 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ArgumentListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ArgumentListener.java
@@ -75,6 +75,10 @@
         Parsable curData = listener.getParsedDataStack().peek();
         if (curData instanceof YangExtension) {
             YangExtension extension = ((YangExtension) curData);
+
+            extension.setLineNumber(ctx.getStart().getLine());
+            extension.setCharPosition(ctx.getStart().getCharPositionInLine());
+            extension.setFileName(listener.getFileName());
             extension.setArgumentName(identifier);
         } else {
             throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, ARGUMENT_DATA,
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java
index 375a9b8..2717e74 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java
@@ -118,7 +118,9 @@
         if (curData instanceof YangModule || curData instanceof YangSubModule || curData instanceof YangUses) {
             YangNode curNode = (YangNode) curData;
             YangAugment yangAugment = getYangAugmentNode(JAVA_GENERATION);
-
+            yangAugment.setLineNumber(line);
+            yangAugment.setCharPosition(charPositionInLine);
+            yangAugment.setFileName(listener.getFileName());
             //validateTargetNodePath(targetNodes, curNode, ctx);
             // TODO: handle in linker.
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BaseListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BaseListener.java
index 25bb595..ebf85a7 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BaseListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BaseListener.java
@@ -90,6 +90,10 @@
         int errorLine = ctx.getStart().getLine();
         int errorPosition = ctx.getStart().getCharPositionInLine();
 
+        yangBase.setLineNumber(errorLine);
+        yangBase.setCharPosition(errorPosition);
+        yangBase.setFileName(listener.getFileName());
+
         // Add resolution information to the list
         YangResolutionInfoImpl resolutionInfo =
                 new YangResolutionInfoImpl<YangBase>(yangBase, (YangNode) tmpData, errorLine, errorPosition);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BelongsToListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BelongsToListener.java
index ab12d46..4f7ecf8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BelongsToListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BelongsToListener.java
@@ -93,6 +93,7 @@
         int errorPosition = ctx.getStart().getCharPositionInLine();
         belongstoNode.setLineNumber(errorLine);
         belongstoNode.setCharPosition(errorPosition);
+        belongstoNode.setFileName(listener.getFileName());
 
         // Push belongsto into the stack.
         listener.getParsedDataStack().push(belongstoNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitListener.java
index e011fca..bd60910 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitListener.java
@@ -112,6 +112,10 @@
 
         YangBit bitNode = new YangBit();
         bitNode.setBitName(identifier);
+
+        bitNode.setLineNumber(ctx.getStart().getLine());
+        bitNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+        bitNode.setFileName(listener.getFileName());
         listener.getParsedDataStack().push(bitNode);
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java
index f2c326d..a476902 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java
@@ -89,6 +89,10 @@
 
         if (listener.getParsedDataStack().peek() instanceof YangType) {
             YangBits bitsNode = new YangBits();
+
+            bitsNode.setLineNumber(ctx.getStart().getLine());
+            bitsNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+            bitsNode.setFileName(listener.getFileName());
             Parsable typeData = listener.getParsedDataStack().pop();
 
             // Check for stack to be non empty.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CaseListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CaseListener.java
index 2440521..f3803da 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CaseListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CaseListener.java
@@ -108,6 +108,9 @@
         if (curData instanceof YangChoice || curData instanceof YangAugment) {
             YangCase caseNode = getYangCaseNode(JAVA_GENERATION);
             caseNode.setName(identifier);
+            caseNode.setLineNumber(line);
+            caseNode.setCharPosition(charPositionInLine);
+            caseNode.setFileName(listener.getFileName());
             YangNode curNode = (YangNode) curData;
             try {
                 curNode.addChild(caseNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ChoiceListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ChoiceListener.java
index ff476c7..00b9973 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ChoiceListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ChoiceListener.java
@@ -129,7 +129,9 @@
 
             YangChoice choiceNode = getYangChoiceNode(JAVA_GENERATION);
             choiceNode.setName(identifier);
-
+            choiceNode.setLineNumber(line);
+            choiceNode.setCharPosition(charPositionInLine);
+            choiceNode.setFileName(listener.getFileName());
             /*
              * If "config" is not specified, the default is the same as the parent
              * schema node's "config" value.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CompilerAnnotationListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CompilerAnnotationListener.java
index d8abb31..ed892b3 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CompilerAnnotationListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CompilerAnnotationListener.java
@@ -91,6 +91,9 @@
         compilerAnnotation.setPrefix(prefix);
         compilerAnnotation.setPath(removeQuotesAndHandleConcat(ctx.string().getText()));
 
+        compilerAnnotation.setLineNumber(ctx.getStart().getLine());
+        compilerAnnotation.setCharPosition(ctx.getStart().getCharPositionInLine());
+        compilerAnnotation.setFileName(listener.getFileName());
         // Validate augment argument string
         List<YangAtomicPath> targetNodes = getValidAbsoluteSchemaNodeId(ctx.string().getText(),
                                                                         COMPILER_ANNOTATION_DATA, ctx);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ContainerListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ContainerListener.java
index 5ff73e2..7ea261b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ContainerListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ContainerListener.java
@@ -124,6 +124,9 @@
         YangContainer container = getYangContainerNode(JAVA_GENERATION);
         container.setName(identifier);
 
+        container.setLineNumber(line);
+        container.setCharPosition(charPositionInLine);
+        container.setFileName(listener.getFileName());
         /*
          * If "config" is not specified, the default is the same as the parent
          * schema node's "config" value.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DataStructureKeyListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DataStructureKeyListener.java
index 65fc50b..9cee91f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DataStructureKeyListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DataStructureKeyListener.java
@@ -69,6 +69,10 @@
         Parsable tmpData = listener.getParsedDataStack().peek();
         if (listener.getParsedDataStack().peek() instanceof YangAppDataStructure) {
             YangAppDataStructure dataStructure = (YangAppDataStructure) tmpData;
+
+            dataStructure.setLineNumber(ctx.getStart().getLine());
+            dataStructure.setCharPosition(ctx.getStart().getCharPositionInLine());
+            dataStructure.setFileName(listener.getFileName());
             String tmpKeyValue = removeQuotesAndHandleConcat(ctx.string().getText());
             if (tmpKeyValue.contains(SPACE)) {
                 String[] keyValues = tmpKeyValue.split(SPACE);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/Decimal64Listener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/Decimal64Listener.java
index 1806c4c..14ae935 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/Decimal64Listener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/Decimal64Listener.java
@@ -112,6 +112,10 @@
                     (YangType<YangDecimal64<YangRangeRestriction>>) tmpNode;
             YangDecimal64 decimal64Node = new YangDecimal64();
             typeNode.setDataTypeExtendedInfo(decimal64Node);
+
+            decimal64Node.setLineNumber(ctx.getStart().getLine());
+            decimal64Node.setCharPosition(ctx.getStart().getCharPositionInLine());
+            decimal64Node.setFileName(listener.getFileName());
         } else {
             throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, DECIMAL64_DATA, "", ENTRY));
         }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java
index bc7c060..b93fe52 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java
@@ -46,13 +46,13 @@
 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
-import org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil;
 
 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.DEFAULT_DATA;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.removeQuotesAndHandleConcat;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
 
 /**
@@ -83,17 +83,17 @@
         switch (tmpNode.getYangConstructType()) {
             case TYPEDEF_DATA: {
                 YangTypeDef typeDef = (YangTypeDef) tmpNode;
-                typeDef.setDefaultValueInString(ListenerUtil.removeQuotesAndHandleConcat(ctx.string().getText()));
+                typeDef.setDefaultValueInString(removeQuotesAndHandleConcat(ctx.string().getText()));
                 break;
             }
             case LEAF_DATA: {
                 YangLeaf leaf = (YangLeaf) tmpNode;
-                leaf.setDefaultValueInString(ListenerUtil.removeQuotesAndHandleConcat(ctx.string().getText()));
+                leaf.setDefaultValueInString(removeQuotesAndHandleConcat(ctx.string().getText()));
                 break;
             }
             case CHOICE_DATA: {
                 YangChoice choice = (YangChoice) tmpNode;
-                choice.setDefaultValueInString(ListenerUtil.removeQuotesAndHandleConcat(ctx.string().getText()));
+                choice.setDefaultValueInString(removeQuotesAndHandleConcat(ctx.string().getText()));
                 break;
             }
             default:
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java
index 3440e2e..b0beef5 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java
@@ -107,6 +107,10 @@
 
         YangEnum enumNode = new YangEnum();
         enumNode.setNamedValue(getValidNamedValue(ctx.string().getText()));
+
+        enumNode.setLineNumber(ctx.getStart().getLine());
+        enumNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+        enumNode.setFileName(listener.getFileName());
         listener.getParsedDataStack().push(enumNode);
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java
index bc6dd45..5eff217 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java
@@ -102,6 +102,9 @@
 
         if (listener.getParsedDataStack().peek() instanceof YangType) {
             YangEnumeration enumerationNode = getYangEnumerationNode(JAVA_GENERATION);
+            enumerationNode.setLineNumber(ctx.getStart().getLine());
+            enumerationNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+            enumerationNode.setFileName(listener.getFileName());
             Parsable typeData = listener.getParsedDataStack().pop();
 
             // Check for stack to be non empty.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorAppTagListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorAppTagListener.java
index befc70a..64f718b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorAppTagListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorAppTagListener.java
@@ -73,6 +73,10 @@
         if (tmpNode instanceof YangAppErrorHolder) {
             YangAppErrorInfo yangAppErrorInfo = ((YangAppErrorHolder) tmpNode).getAppErrorInfo();
             yangAppErrorInfo.setErrorAppTag(errorMessage);
+
+            yangAppErrorInfo.setLineNumber(ctx.getStart().getLine());
+            yangAppErrorInfo.setCharPosition(ctx.getStart().getCharPositionInLine());
+            yangAppErrorInfo.setFileName(listener.getFileName());
         } else {
             throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, ERROR_APP_TAG_DATA,
                     ctx.string().getText(), ENTRY));
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorMessageListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorMessageListener.java
index e36fe74..ead1746 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorMessageListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorMessageListener.java
@@ -74,6 +74,10 @@
         if (tmpNode instanceof YangAppErrorHolder) {
             YangAppErrorInfo yangAppErrorInfo = ((YangAppErrorHolder) tmpNode).getAppErrorInfo();
             yangAppErrorInfo.setErrorMessage(errorMessage);
+
+            yangAppErrorInfo.setLineNumber(ctx.getStart().getLine());
+            yangAppErrorInfo.setCharPosition(ctx.getStart().getCharPositionInLine());
+            yangAppErrorInfo.setFileName(listener.getFileName());
         } else {
             throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, ERROR_MESSAGE_DATA,
                     ctx.string().getText(), ENTRY));
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ExtensionListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ExtensionListener.java
index 2169640..9a1180f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ExtensionListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ExtensionListener.java
@@ -80,6 +80,10 @@
         String identifier = getValidIdentifier(ctx.identifier().getText(), EXTENSION_DATA, ctx);
 
         YangExtension extension = new YangExtension();
+
+        extension.setLineNumber(ctx.getStart().getLine());
+        extension.setCharPosition(ctx.getStart().getCharPositionInLine());
+        extension.setFileName(listener.getFileName());
         extension.setName(identifier);
 
         Parsable curData = listener.getParsedDataStack().peek();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/FeatureListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/FeatureListener.java
index 6a70f31..12e83b1 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/FeatureListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/FeatureListener.java
@@ -88,6 +88,9 @@
             YangFeature feature = new YangFeature();
             feature.setName(identifier);
 
+            feature.setLineNumber(ctx.getStart().getLine());
+            feature.setCharPosition(ctx.getStart().getCharPositionInLine());
+            feature.setFileName(listener.getFileName());
             featureHolder.addFeatureList(feature);
             listener.getParsedDataStack().push(feature);
         } else {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/GroupingListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/GroupingListener.java
index 4dc224f..46ca2e0 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/GroupingListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/GroupingListener.java
@@ -122,6 +122,10 @@
             YangGrouping groupingNode = getYangGroupingNode(JAVA_GENERATION);
             groupingNode.setName(identifier);
             groupingNode.setGroupingDepth(listener.getGroupingDepth());
+
+            groupingNode.setLineNumber(line);
+            groupingNode.setCharPosition(charPositionInLine);
+            groupingNode.setFileName(listener.getFileName());
             YangNode curNode = (YangNode) curData;
             try {
                 curNode.addChild(groupingNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityListener.java
index 29443ef..332ae4f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityListener.java
@@ -82,6 +82,9 @@
         YangIdentity identity = getYangIdentityNode(JAVA_GENERATION);
         identity.setName(identifier);
 
+        identity.setLineNumber(ctx.getStart().getLine());
+        identity.setCharPosition(ctx.getStart().getCharPositionInLine());
+        identity.setFileName(listener.getFileName());
         Parsable curData = listener.getParsedDataStack().peek();
         if (curData instanceof YangModule || curData instanceof YangSubModule) {
             YangNode curNode = (YangNode) curData;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityrefListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityrefListener.java
index c61eb3e..ad197a6 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityrefListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityrefListener.java
@@ -94,6 +94,9 @@
             int errorLine = ctx.getStart().getLine();
             int errorPosition = ctx.getStart().getCharPositionInLine();
 
+            identityRef.setLineNumber(errorLine);
+            identityRef.setCharPosition(errorPosition);
+            identityRef.setFileName(listener.getFileName());
             Parsable tmpData = listener.getParsedDataStack().peek();
             switch (tmpData.getYangConstructType()) {
                 case LEAF_DATA:
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IfFeatureListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IfFeatureListener.java
index 29899de..ab11780 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IfFeatureListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IfFeatureListener.java
@@ -87,6 +87,10 @@
         YangIfFeature ifFeature = new YangIfFeature();
         ifFeature.setName(nodeIdentifier);
         ifFeature.setResolvableStatus(UNRESOLVED);
+
+        ifFeature.setLineNumber(ctx.getStart().getLine());
+        ifFeature.setCharPosition(ctx.getStart().getCharPositionInLine());
+        ifFeature.setFileName(listener.getFileName());
         YangIfFeatureHolder ifFeatureHolder;
 
         // Obtain the node of the stack.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ImportListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ImportListener.java
index 76a2e30..1f7a7d7 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ImportListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ImportListener.java
@@ -90,6 +90,7 @@
         int errorPosition = ctx.getStart().getCharPositionInLine();
         importNode.setLineNumber(errorLine);
         importNode.setCharPosition(errorPosition);
+        importNode.setFileName(listener.getFileName());
 
         // Push import node to the stack.
         listener.getParsedDataStack().push(importNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListener.java
index 847712f..5842a7e 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListener.java
@@ -90,6 +90,7 @@
         int errorPosition = ctx.getStart().getCharPositionInLine();
         includeNode.setLineNumber(errorLine);
         includeNode.setCharPosition(errorPosition);
+        includeNode.setFileName(listener.getFileName());
 
         listener.getParsedDataStack().push(includeNode);
     }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java
index 83e47d4..3003d56 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java
@@ -93,6 +93,10 @@
 
             YangInput yangInput = getYangInputNode(JAVA_GENERATION);
             yangInput.setName(((YangRpc) curData).getName() + INPUT_KEYWORD);
+
+            yangInput.setLineNumber(ctx.getStart().getLine());
+            yangInput.setCharPosition(ctx.getStart().getCharPositionInLine());
+            yangInput.setFileName(listener.getFileName());
             YangNode curNode = (YangNode) curData;
             try {
                 curNode.addChild(yangInput);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java
index 99e8cae..8dd33b8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java
@@ -111,7 +111,9 @@
 
         YangLeafList leafList = getYangLeafList(JAVA_GENERATION);
         leafList.setName(identifier);
-
+        leafList.setLineNumber(line);
+        leafList.setCharPosition(charPositionInLine);
+        leafList.setFileName(listener.getFileName());
         /*
          * If "config" is not specified, the default is the same as the parent
          * schema node's "config" value.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java
index edf0ed4..d6f06ff 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java
@@ -115,6 +115,9 @@
 
         YangLeaf leaf = getYangLeaf(JAVA_GENERATION);
         leaf.setName(identifier);
+        leaf.setLineNumber(line);
+        leaf.setCharPosition(charPositionInLine);
+        leaf.setFileName(listener.getFileName());
 
         /*
          * If "config" is not specified, the default is the same as the parent
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafrefListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafrefListener.java
index fea7f38..a90b87b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafrefListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafrefListener.java
@@ -102,6 +102,7 @@
 
         leafRef.setLineNumber(errorLine);
         leafRef.setCharPosition(errorPosition);
+        leafRef.setFileName(listener.getFileName());
         Parsable typeData = listener.getParsedDataStack().pop();
 
         if (!(typeData instanceof YangType)) {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java
index 5154171..ab91675 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java
@@ -129,7 +129,9 @@
 
         YangList yangList = getYangListNode(JAVA_GENERATION);
         yangList.setName(identifier);
-
+        yangList.setLineNumber(line);
+        yangList.setCharPosition(charPositionInLine);
+        yangList.setFileName(listener.getFileName());
         /*
          * If "config" is not specified, the default is the same as the parent
          * schema node's "config" value.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java
index 90acba6..93cd621 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java
@@ -78,19 +78,21 @@
 
         int maxElementsValue = getValidMaxElementValue(ctx);
 
+        YangMaxElement maxElement = new YangMaxElement();
+        maxElement.setMaxElement(maxElementsValue);
+
+        maxElement.setLineNumber(ctx.getStart().getLine());
+        maxElement.setCharPosition(ctx.getStart().getCharPositionInLine());
+        maxElement.setFileName(listener.getFileName());
         Parsable tmpData = listener.getParsedDataStack().peek();
         switch (tmpData.getYangConstructType()) {
             case LEAF_LIST_DATA:
                 YangLeafList leafList = (YangLeafList) tmpData;
-                YangMaxElement maxLeafListElement = new YangMaxElement();
-                maxLeafListElement.setMaxElement(maxElementsValue);
-                leafList.setMaxElements(maxLeafListElement);
+                leafList.setMaxElements(maxElement);
                 break;
             case LIST_DATA:
                 YangList yangList = (YangList) tmpData;
-                YangMaxElement maxListElement = new YangMaxElement();
-                maxListElement.setMaxElement(maxElementsValue);
-                yangList.setMaxElements(maxListElement);
+                yangList.setMaxElements(maxElement);
                 break;
             default:
                 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, MAX_ELEMENT_DATA, "", ENTRY));
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListener.java
index 64069ae..3fae538 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListener.java
@@ -75,18 +75,20 @@
 
         int minElementValue = getValidNonNegativeIntegerValue(ctx.minValue().getText(), MIN_ELEMENT_DATA, ctx);
 
+        YangMinElement minElement = new YangMinElement();
+
+        minElement.setMinElement(minElementValue);
+        minElement.setLineNumber(ctx.getStart().getLine());
+        minElement.setCharPosition(ctx.getStart().getCharPositionInLine());
+        minElement.setFileName(listener.getFileName());
         Parsable tmpData = listener.getParsedDataStack().peek();
         switch (tmpData.getYangConstructType()) {
             case LEAF_LIST_DATA:
                 YangLeafList leafList = (YangLeafList) tmpData;
-                YangMinElement minLeafListElement = new YangMinElement();
-                minLeafListElement.setMinElement(minElementValue);
-                leafList.setMinElements(minLeafListElement);
+                leafList.setMinElements(minElement);
                 break;
             case LIST_DATA:
                 YangList yangList = (YangList) tmpData;
-                YangMinElement minElement = new YangMinElement();
-                minElement.setMinElement(minElementValue);
                 yangList.setMinElements(minElement);
                 break;
             default:
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java
index c77ffea..5598561 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java
@@ -91,6 +91,9 @@
 
         YangModule yangModule = getYangModuleNode(JAVA_GENERATION);
         yangModule.setName(identifier);
+        yangModule.setLineNumber(ctx.getStart().getLine());
+        yangModule.setCharPosition(ctx.getStart().getCharPositionInLine());
+        yangModule.setFileName(listener.getFileName());
 
         if (ctx.moduleBody().moduleHeaderStatement().yangVersionStatement() == null) {
             yangModule.setVersion((byte) 1);
@@ -149,6 +152,7 @@
             LinkerException linkerException = new LinkerException(e.getMessage());
             linkerException.setLine(e.getLineNumber());
             linkerException.setCharPosition(e.getCharPositionInLine());
+            linkerException.setFileName(listener.getFileName());
             throw linkerException;
         }
     }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MustListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MustListener.java
index b6cbf20..421ede1 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MustListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MustListener.java
@@ -86,6 +86,9 @@
             YangMust must = new YangMust();
             must.setConstraint(constraint);
 
+            must.setLineNumber(ctx.getStart().getLine());
+            must.setCharPosition(ctx.getStart().getCharPositionInLine());
+            must.setFileName(listener.getFileName());
             YangMustHolder mustHolder = (YangMustHolder) tmpNode;
             mustHolder.addMust(must);
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NotificationListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NotificationListener.java
index 94369d7..6109518 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NotificationListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NotificationListener.java
@@ -113,6 +113,10 @@
 
             YangNotification notification = getYangNotificationNode(JAVA_GENERATION);
             notification.setName(identifier);
+
+            notification.setLineNumber(ctx.getStart().getLine());
+            notification.setCharPosition(ctx.getStart().getCharPositionInLine());
+            notification.setFileName(listener.getFileName());
             ((RpcNotificationContainer) curData).setNotificationPresenceFlag(true);
             YangNode curNode = (YangNode) curData;
             try {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java
index aee77b0..70c135f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java
@@ -93,6 +93,10 @@
 
             YangOutput yangOutput = getYangOutputNode(JAVA_GENERATION);
             yangOutput.setName(((YangRpc) curData).getName() + OUTPUT_KEYWORD);
+
+            yangOutput.setLineNumber(ctx.getStart().getLine());
+            yangOutput.setCharPosition(ctx.getStart().getCharPositionInLine());
+            yangOutput.setFileName(listener.getFileName());
             YangNode curNode = (YangNode) curData;
             try {
                 curNode.addChild(yangOutput);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RpcListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RpcListener.java
index 89f7eb7..e037e52 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RpcListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RpcListener.java
@@ -111,6 +111,10 @@
 
             YangNode curNode = (YangNode) curData;
             YangRpc yangRpc = getYangRpcNode(JAVA_GENERATION);
+
+            yangRpc.setLineNumber(ctx.getStart().getLine());
+            yangRpc.setCharPosition(ctx.getStart().getCharPositionInLine());
+            yangRpc.setFileName(listener.getFileName());
             yangRpc.setName(identifier);
             try {
                 curNode.addChild(yangRpc);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java
index 90b5269..6963a98 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java
@@ -86,6 +86,9 @@
 
         YangCase caseNode = getYangCaseNode(JAVA_GENERATION);
 
+        caseNode.setLineNumber(ctx.getStart().getLine());
+        caseNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+        caseNode.setFileName(listener.getFileName());
         if (ctx.containerStatement() != null) {
             caseNode.setName(getValidIdentifier(ctx.containerStatement().identifier().getText(), CASE_DATA, ctx));
             errorConstructContext = ctx.containerStatement();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
index a19431d..b429e6d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
@@ -96,6 +96,9 @@
         YangSubModule yangSubModule = getYangSubModuleNode(JAVA_GENERATION);
         yangSubModule.setName(identifier);
 
+        yangSubModule.setLineNumber(ctx.getStart().getLine());
+        yangSubModule.setCharPosition(ctx.getStart().getCharPositionInLine());
+        yangSubModule.setFileName(listener.getFileName());
         if (ctx.submoduleBody().submoduleHeaderStatement().yangVersionStatement() == null) {
             yangSubModule.setVersion((byte) 1);
         }
@@ -155,7 +158,7 @@
             LinkerException linkerException = new LinkerException(e.getMessage());
             linkerException.setLine(e.getLineNumber());
             linkerException.setCharPosition(e.getCharPositionInLine());
-
+            linkerException.setFileName(listener.getFileName());
             throw linkerException;
         }
     }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java
index 4a629ba..4821cfa 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java
@@ -130,6 +130,9 @@
         YangTypeDef typeDefNode = getYangTypeDefNode(JAVA_GENERATION);
         typeDefNode.setName(identifier);
 
+        typeDefNode.setLineNumber(ctx.getStart().getLine());
+        typeDefNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+        typeDefNode.setFileName(listener.getFileName());
         Parsable curData = listener.getParsedDataStack().peek();
 
         if (curData instanceof YangModule || curData instanceof YangSubModule || curData instanceof YangContainer
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
index 9d92018..ab0ad3c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
@@ -104,6 +104,9 @@
         type.setNodeIdentifier(nodeIdentifier);
         type.setDataType(yangDataTypes);
 
+        type.setLineNumber(ctx.getStart().getLine());
+        type.setCharPosition(ctx.getStart().getCharPositionInLine());
+        type.setFileName(listener.getFileName());
         // Set default require instance value as true for instance identifier.
         setDefaultRequireInstanceForInstanceIdentifier(type);
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UnionListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UnionListener.java
index 63a09c5..9653e40 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UnionListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UnionListener.java
@@ -100,6 +100,9 @@
             YangUnion unionNode = getYangUnionNode(JAVA_GENERATION);
             Parsable typeData = listener.getParsedDataStack().pop();
 
+            unionNode.setLineNumber(ctx.getStart().getLine());
+            unionNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+            unionNode.setFileName(listener.getFileName());
             // Check for stack to be non empty.
             checkStackIsNotEmpty(listener, MISSING_HOLDER, UNION_DATA, "", ENTRY);
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UsesListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UsesListener.java
index 6e27a1b..2609d44 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UsesListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UsesListener.java
@@ -135,6 +135,10 @@
                 || curData instanceof YangNotification) {
 
             YangUses usesNode = getYangUsesNode(JAVA_GENERATION);
+
+            usesNode.setLineNumber(ctx.getStart().getLine());
+            usesNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+            usesNode.setFileName(listener.getFileName());
             YangNodeIdentifier nodeIdentifier = getValidNodeIdentifier(ctx.string().getText(), USES_DATA, ctx);
             usesNode.setNodeIdentifier(nodeIdentifier);
             usesNode.setCurrentGroupingDepth(listener.getGroupingDepth());
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/WhenListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/WhenListener.java
index 15092a1..218440f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/WhenListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/WhenListener.java
@@ -88,6 +88,10 @@
             YangWhen when = new YangWhen();
             when.setCondition(condition);
 
+            when.setLineNumber(ctx.getStart().getLine());
+            when.setCharPosition(ctx.getStart().getCharPositionInLine());
+            when.setFileName(listener.getFileName());
+
             whenHolder.setWhen(when);
             listener.getParsedDataStack().push(when);
         } else {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
index ab3c6e1..d89eee4 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
@@ -16,13 +16,6 @@
 
 package org.onosproject.yangutils.plugin.manager;
 
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -45,7 +38,14 @@
 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
-import static org.apache.maven.plugins.annotations.LifecyclePhase.GENERATE_SOURCES;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import static org.apache.maven.plugins.annotations.LifecyclePhase.PROCESS_SOURCES;
 import static org.apache.maven.plugins.annotations.ResolutionScope.COMPILE;
 import static org.onosproject.yangutils.datamodel.ResolvableType.YANG_DERIVED_DATA_TYPE;
 import static org.onosproject.yangutils.datamodel.ResolvableType.YANG_IDENTITYREF;
@@ -59,6 +59,8 @@
 import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_BASE_PKG;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_RESOURCES;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getDirectory;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
@@ -69,8 +71,7 @@
  * Execution phase is generate-sources.
  * requiresDependencyResolution at compile time.
  */
-@Mojo(name = "yang2java", defaultPhase = GENERATE_SOURCES, requiresDependencyResolution = COMPILE,
-        requiresProject = true)
+@Mojo(name = "yang2java", defaultPhase = PROCESS_SOURCES, requiresDependencyResolution = COMPILE)
 public class YangUtilManager
         extends AbstractMojo {
 
@@ -83,6 +84,7 @@
     private YangLinker yangLinker = new YangLinkerManager();
     private YangFileInfo curYangFileInfo = new YangFileInfo();
     private Set<YangNode> yangNodeSet = new HashSet<>();
+
     /**
      * Source directory for YANG files.
      */
@@ -170,8 +172,8 @@
             /*
              * For deleting the generated code in previous build.
              */
-            deleteDirectory(getDirectory(baseDir, outputDirectory));
-
+            deleteDirectory(getDirectory(baseDir, outputDirectory + SLASH + TEMP));
+            deleteDirectory(getDirectory(baseDir, outputDirectory + SLASH + YANG_RESOURCES));
             String searchDir = getDirectory(baseDir, yangFilesDir);
             String codeGenDir = getDirectory(baseDir, classFileDir) + SLASH;
 
@@ -227,7 +229,7 @@
                 throw new MojoExecutionException(
                         "Error handler failed to delete files for data model node.");
             }
-            e.printStackTrace();
+            getLog().info(e);
             throw new MojoExecutionException(
                     "Exception occurred due to " + e.getLocalizedMessage() + " in " + fileName
                             + " YANG file.");
@@ -320,7 +322,7 @@
 
                     }
                     if (e.getMessage() != null) {
-                        logInfo = logInfo + NEW_LINE + e.getMessage();
+                        logInfo = logInfo + NEW_LINE + e.getLocalizedMessage();
                     }
                     getLog().info(logInfo);
                     throw e;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java b/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java
index c737175..935f6b6 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java
@@ -23,6 +23,8 @@
 
     private static final long serialVersionUID = 20160311L;
     private transient String fileName;
+    private transient int lineNumber;
+    private transient int charPosition;
 
     /**
      * Creates a new exception.
@@ -69,9 +71,45 @@
     }
 
     /**
-     * Sets file name in translator exception.
+     * Returns line number of the exception.
      *
-     * @param fileName generated file name
+     * @return line number of the exception
+     */
+    public int getLineNumber() {
+        return this.lineNumber;
+    }
+
+    /**
+     * Returns position of the exception.
+     *
+     * @return position of the exception
+     */
+    public int getCharPositionInLine() {
+        return this.charPosition;
+    }
+
+    /**
+     * Sets line number of YANG file.
+     *
+     * @param line line number of YANG file
+     */
+    public void setLine(int line) {
+        this.lineNumber = line;
+    }
+
+    /**
+     * Sets position of exception.
+     *
+     * @param charPosition position of exception
+     */
+    public void setCharPosition(int charPosition) {
+        this.charPosition = charPosition;
+    }
+
+    /**
+     * Sets file name in exception.
+     *
+     * @param fileName YANG file name
      */
     public void setFileName(String fileName) {
         this.fileName = fileName;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/exception/TranslatorException.java b/plugin/src/main/java/org/onosproject/yangutils/translator/exception/TranslatorException.java
index a033a00..0f68e97 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/exception/TranslatorException.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/exception/TranslatorException.java
@@ -23,6 +23,8 @@
 
     private static final long serialVersionUID = 20160311L;
     private transient String fileName;
+    private transient int lineNumber;
+    private transient int charPosition;
 
     /**
      * Create a new translator exception.
@@ -60,18 +62,54 @@
     }
 
     /**
-     * Returns generated file name for the exception.
+     * Returns line number of the exception.
      *
-     * @return generated file name for the exception
+     * @return line number of the exception
+     */
+    public int getLineNumber() {
+        return this.lineNumber;
+    }
+
+    /**
+     * Returns YANG file name of the exception.
+     *
+     * @return YANG file name of the exception
      */
     public String getFileName() {
         return this.fileName;
     }
 
     /**
+     * Returns position of the exception.
+     *
+     * @return position of the exception
+     */
+    public int getCharPositionInLine() {
+        return this.charPosition;
+    }
+
+    /**
+     * Sets line number of YANG file.
+     *
+     * @param line line number of YANG file
+     */
+    public void setLine(int line) {
+        this.lineNumber = line;
+    }
+
+    /**
+     * Sets position of exception.
+     *
+     * @param charPosition position of exception
+     */
+    public void setCharPosition(int charPosition) {
+        this.charPosition = charPosition;
+    }
+
+    /**
      * Sets file name in translator exception.
      *
-     * @param fileName generated file name
+     * @param fileName YANG file name
      */
     public void setFileName(String fileName) {
         this.fileName = fileName;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java
index 6edd208..4ddde17 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java
@@ -16,6 +16,8 @@
 
 package org.onosproject.yangutils.translator.tojava;
 
+import org.onosproject.yangutils.datamodel.LocationInfo;
+
 /**
  * Represents YANG java info containing interface for java code generator, java
  * file information, java import data and temp java code fragment files. This
@@ -23,5 +25,5 @@
  * entry function.
  */
 public interface JavaCodeGeneratorInfo
-        extends JavaFileInfoContainer, TempJavaCodeFragmentFilesContainer {
+        extends JavaFileInfoContainer, TempJavaCodeFragmentFilesContainer, LocationInfo {
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
index 089a1b3..724c9cf 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
@@ -90,7 +90,9 @@
         while (codeGenNode != null) {
             if (curTraversal != PARENT) {
                 if (!(codeGenNode instanceof JavaCodeGenerator)) {
-                    throw new TranslatorException("Unsupported node to generate code");
+                    throw new TranslatorException("Unsupported node to generate code " +
+                            codeGenNode.getName() + " in " + codeGenNode.getLineNumber() + " at "
+                            + codeGenNode.getCharPosition() + " in " + codeGenNode.getFileName());
                 }
                 setCurNode(codeGenNode);
                 try {
@@ -155,7 +157,9 @@
         } else {
             close(codeGenNode, yangPlugin);
             throw new TranslatorException(
-                    "Generated data model node cannot be translated to target language code");
+                    "Generated data model node cannot be translated to target language code for " +
+                            codeGenNode.getName() + " in " + codeGenNode.getLineNumber()
+                            + " at " + codeGenNode.getCharPosition() + " in " + codeGenNode.getFileName());
         }
     }
 
@@ -175,7 +179,9 @@
         } else {
             close(codeGenNode, pluginConfig);
             throw new TranslatorException(
-                    "Generated data model node cannot be translated to target language code");
+                    "Generated data model node cannot be translated to target language code for " +
+                            codeGenNode.getName() + " in " + codeGenNode.getLineNumber()
+                            + " at " + codeGenNode.getCharPosition() + " in " + codeGenNode.getFileName());
         }
     }
 
@@ -281,18 +287,17 @@
         if (node instanceof JavaCodeGenerator && ((TempJavaCodeFragmentFilesContainer) node)
                 .getTempJavaCodeFragmentFiles() != null) {
             ((TempJavaCodeFragmentFilesContainer) node).getTempJavaCodeFragmentFiles().freeTemporaryResources(true);
-        } else {
-
-            if (getRootNode() != null) {
-                JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) getRootNode()).getJavaFileInfo();
-                if (javaFileInfo != null) {
-                    searchAndDeleteTempDir(javaFileInfo.getBaseCodeGenPath() +
-                            javaFileInfo.getPackageFilePath());
-                } else {
-                    searchAndDeleteTempDir(yangPlugin.getCodeGenDir());
-                }
+        }
+        if (getRootNode() != null) {
+            JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) getRootNode()).getJavaFileInfo();
+            if (javaFileInfo.getPackage() != null) {
+                searchAndDeleteTempDir(javaFileInfo.getBaseCodeGenPath() +
+                        javaFileInfo.getPackageFilePath());
+            } else {
+                searchAndDeleteTempDir(yangPlugin.getCodeGenDir());
             }
         }
+
     }
 
     /**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
index a0e7b93..27cba78 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
@@ -91,7 +91,8 @@
         JavaQualifiedTypeInfoTranslator importInfo = (JavaQualifiedTypeInfoTranslator) leaf.getJavaQualifiedInfo();
 
         if (leaf.getDataType() == null) {
-            throw new TranslatorException("missing data type of leaf " + leaf.getName());
+            throw new TranslatorException("missing data type of leaf " + leaf.getName()
+                    + " in " + leaf.getLineNumber() + " at" + leaf.getCharPosition() + " in " + leaf.getFileName());
         }
 
         /*
@@ -109,7 +110,9 @@
             String classPkg = getJavaImportPackage(leaf.getDataType(),
                     leaf.isLeafList(), leaf.getConflictResolveConfig());
             if (classPkg == null) {
-                throw new TranslatorException("import package cannot be null when the class is used");
+                throw new TranslatorException("import package cannot be null when the class is used for "
+                        + leaf.getName()
+                        + " in " + leaf.getLineNumber() + " at" + leaf.getCharPosition() + " in " + leaf.getFileName());
             }
             importInfo.setPkgInfo(classPkg);
         } else {
@@ -119,7 +122,9 @@
              */
             String dataTypeName = AttributesJavaDataType.getJavaDataType(leaf.getDataType());
             if (dataTypeName == null) {
-                throw new TranslatorException("not supported data type");
+                throw new TranslatorException("not supported data type for "
+                        + leaf.getName()
+                        + " in " + leaf.getLineNumber() + " at" + leaf.getCharPosition() + " in " + leaf.getFileName());
             }
             importInfo.setClassInfo(dataTypeName);
         }
@@ -144,7 +149,9 @@
 
         if (!(curNode instanceof JavaFileInfoContainer)) {
             throw new TranslatorException("missing java file information to get the package details "
-                    + "of attribute corresponding to child node");
+                    + "of attribute corresponding to child node " + curNode.getName() +
+                    " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition() + " in " +
+                    curNode.getFileName());
         }
 
         importInfo.setClassInfo(attributeName);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
index 5068458..7bf3f2a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
@@ -218,7 +218,9 @@
                 addJavaSnippetInfoToApplicableTempFiles(curEnum.getNamedValue(), pluginConfig);
             }
         } else {
-            throw new TranslatorException("current node should be of enumeration type.");
+            throw new TranslatorException("current node should be of enumeration type. " +
+                    curNode.getName() + " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition()
+                    + " in " + curNode.getFileName());
         }
     }
 
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 14fcdc1..e20d788 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
@@ -525,7 +525,9 @@
             throws IOException {
         YangNode parent = getParentNodeInGenCode(curNode);
         if (!(parent instanceof JavaCodeGenerator)) {
-            throw new TranslatorException("missing parent node to contain current node info in generated file");
+            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());
         }
 
         if (parent instanceof YangJavaGroupingTranslator) {
@@ -569,7 +571,9 @@
         JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
                 getCapitalCase(curNodeName));
         if (!(targetNode instanceof TempJavaCodeFragmentFilesContainer)) {
-            throw new TranslatorException("Parent node does not have file info");
+            throw new TranslatorException("Parent node does not have file info "
+                    + targetNode.getName() + " in " + targetNode.getLineNumber() + " at " + targetNode.getCharPosition()
+                    + " in " + targetNode.getFileName());
         }
         JavaImportData parentImportData = tempJavaFragmentFiles.getJavaImportData();
         JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) targetNode).getJavaFileInfo();
@@ -1332,7 +1336,8 @@
                 throw new IOException("failed to create temporary file for " + fileName);
             }
         } else {
-            throw new IOException(fileName + " is reused due to YANG naming");
+            throw new IOException(fileName + " is reused due to YANG naming. probably your previous build would have " +
+                    "failed");
         }
         return file;
     }
@@ -1438,7 +1443,9 @@
         }
         if (!(curNode instanceof JavaFileInfoContainer)) {
             throw new TranslatorException("missing java file information to get the package details "
-                    + "of attribute corresponding to child node");
+                    + "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())));
@@ -1465,7 +1472,10 @@
         if (listOfLeaves != null) {
             for (YangLeaf leaf : listOfLeaves) {
                 if (!(leaf instanceof JavaLeafInfoContainer)) {
-                    throw new TranslatorException("Leaf does not have java information");
+                    throw new TranslatorException("Leaf does not have java information " +
+                            leaf.getName() + " in " + leaf.getLineNumber() + " at " +
+                            leaf.getCharPosition()
+                            + " in " + leaf.getFileName());
                 }
                 if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
                     TempJavaBeanFragmentFiles tempJavaBeanFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
@@ -1494,7 +1504,9 @@
         if (listOfLeafList != null) {
             for (YangLeafList leafList : listOfLeafList) {
                 if (!(leafList instanceof JavaLeafInfoContainer)) {
-                    throw new TranslatorException("Leaf-list does not have java information");
+                    throw new TranslatorException("Leaf-list does not have java information " +
+                            curNode.getName() + " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition()
+                            + " in " + curNode.getFileName());
                 }
                 if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
                     TempJavaBeanFragmentFiles tempJavaBeanFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
@@ -1520,7 +1532,9 @@
                                          YangPluginConfig yangPluginConfig)
             throws IOException {
         if (!(curNode instanceof YangLeavesHolder)) {
-            throw new TranslatorException("Data model node does not have any leaves");
+            throw new TranslatorException("Data model node does not have any leaves " +
+                    curNode.getName() + " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition()
+                    + " in " + curNode.getFileName());
         }
         YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
         addLeavesInfoToTempFiles(leavesHolder.getListOfLeaf(), yangPluginConfig, curNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
index 62c6390..32f6c17 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
@@ -274,7 +274,10 @@
         if (typeList != null) {
             for (YangType<?> yangType : typeList) {
                 if (!(yangType instanceof YangJavaTypeTranslator)) {
-                    throw new TranslatorException("Type does not have Java info");
+                    throw new TranslatorException("Type does not have Java info " +
+                            yangType.getDataTypeName() + " in " + yangType.getLineNumber() + " at " + yangType
+                            .getCharPosition()
+                            + " in " + yangType.getFileName());
                 }
                 JavaAttributeInfo javaAttributeInfo = getAttributeForType(yangType, pluginConfig);
                 addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo,
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 f89ad3d..08a6d9b 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
@@ -227,7 +227,10 @@
         } else if (javaCodeGeneratorInfo instanceof YangChoice) {
             /*Do nothing, only the interface needs to be generated*/
         } else {
-            throw new TranslatorException("Unsupported Node Translation");
+            throw new TranslatorException("Unsupported Node Translation "
+                    + javaCodeGeneratorInfo.getLineNumber() + " at " +
+                    javaCodeGeneratorInfo.getCharPosition()
+                    + " in " + javaCodeGeneratorInfo.getFileName());
         }
     }
 
@@ -242,7 +245,10 @@
                                           YangPluginConfig yangPluginConfig)
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("translation is not supported for the node");
+            throw new TranslatorException("translation is not supported for the node "
+                    + javaCodeGeneratorInfo.getLineNumber() + " at " +
+                    javaCodeGeneratorInfo.getCharPosition()
+                    + " in " + javaCodeGeneratorInfo.getFileName());
         }
         createTempFragmentFile(javaCodeGeneratorInfo);
         updateTempFragmentFiles(javaCodeGeneratorInfo, yangPluginConfig);
@@ -288,7 +294,10 @@
                                                      YangPluginConfig yangPlugin, boolean isMultiInstance)
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("Invalid node for translation");
+            throw new TranslatorException("Invalid node for translation " +
+                    javaCodeGeneratorInfo.getLineNumber() + " at " +
+                    javaCodeGeneratorInfo.getCharPosition()
+                    + " in " + javaCodeGeneratorInfo.getFileName());
         }
 
         /*
@@ -313,7 +322,10 @@
                                                      YangPluginConfig yangPlugin)
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("invalid node for translation");
+            throw new TranslatorException("invalid node for translation " +
+                    javaCodeGeneratorInfo.getLineNumber() + " at " +
+                    javaCodeGeneratorInfo.getCharPosition()
+                    + " in " + javaCodeGeneratorInfo.getFileName());
         }
 
         generateCodeOfNode(javaCodeGeneratorInfo, yangPlugin);
@@ -375,7 +387,10 @@
                                           YangPluginConfig yangPluginConfig)
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("invalid node for translation");
+            throw new TranslatorException("invalid node for translation "
+                    + javaCodeGeneratorInfo.getLineNumber() + " at " +
+                    javaCodeGeneratorInfo.getCharPosition()
+                    + " in " + javaCodeGeneratorInfo.getFileName());
         }
         updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig);
         generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
@@ -393,7 +408,10 @@
                                               YangPluginConfig yangPluginConfig, String rootPkg)
             throws IOException {
         if (!(javaCodeGeneratorInfo instanceof YangNode)) {
-            throw new TranslatorException("invalid node for translation");
+            throw new TranslatorException("invalid node for translation " + javaCodeGeneratorInfo.getLineNumber()
+                    + " at " +
+                    javaCodeGeneratorInfo.getCharPosition()
+                    + " in " + javaCodeGeneratorInfo.getFileName());
         }
         updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig, rootPkg);
 
@@ -415,12 +433,20 @@
         String pkg;
         if (!(curNode instanceof JavaFileInfoContainer)
                 || curNode.getParent() == null) {
-            throw new TranslatorException("missing parent node to get current node's package");
+            throw new TranslatorException("missing parent node to get current node's package " +
+                    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");
+            throw new TranslatorException("missing parent java node to get current node's package " +
+                    curNode.getName() + " in " +
+                    curNode.getLineNumber() + " at " +
+                    curNode.getCharPosition()
+                    + " in " + curNode.getFileName());
         }
         JavaFileInfoTranslator parentJavaFileHandle = ((JavaFileInfoContainer) parentNode).getJavaFileInfo();
         pkg = parentJavaFileHandle.getPackage() + PERIOD + parentJavaFileHandle.getJavaName();
@@ -460,6 +486,26 @@
     }
 
     /**
+     * Returns true if only augment nodes present in module.
+     *
+     * @param curNode root node
+     * @return true if only augment nodes present in module
+     */
+    public static boolean isOnlyAugmentNodeInRoot(YangNode curNode) {
+        List<Boolean> booleanData = new ArrayList<>();
+        curNode = curNode.getChild();
+        while (curNode != null) {
+            if (curNode instanceof YangAugment) {
+                booleanData.add(true);
+            } else {
+                booleanData.add(false);
+            }
+            curNode = curNode.getNextSibling();
+        }
+        return !booleanData.contains(false);
+    }
+
+    /**
      * Returns nodes package.
      *
      * @param node             YANG node
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 ce172ff..85c190b 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
@@ -17,6 +17,7 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import java.util.Stack;
+
 import org.onosproject.yangutils.datamodel.YangDerivedInfo;
 import org.onosproject.yangutils.datamodel.YangEnumeration;
 import org.onosproject.yangutils.datamodel.YangIdentity;
@@ -110,7 +111,11 @@
             case LEAFREF:
                 return getJavaDataType(getReferredTypeFromLeafref(yangType));
             default:
-                throw new TranslatorException("given data type is not supported.");
+                throw new TranslatorException("given data type is not supported. " +
+                        yangType.getDataTypeName() + " in " +
+                        yangType.getLineNumber() + " at " +
+                        yangType.getCharPosition()
+                        + " in " + yangType.getFileName());
         }
     }
 
@@ -178,7 +183,11 @@
                     return getCapitalCase(
                             getCamelCase(yangType.getDataTypeName(), pluginConfig));
                 default:
-                    throw new TranslatorException("given data type is not supported.");
+                    throw new TranslatorException("given data type is not supported ." +
+                            yangType.getDataTypeName() + " in " +
+                            yangType.getLineNumber() + " at " +
+                            yangType.getCharPosition()
+                            + " in " + yangType.getFileName());
             }
         } else {
             switch (type) {
@@ -263,7 +272,11 @@
                 case DERIVED:
                     return getTypeDefsPackage(yangType, conflictResolver);
                 default:
-                    throw new TranslatorException("given data type is not supported.");
+                    throw new TranslatorException("given data type is not supported. " +
+                            yangType.getDataTypeName() + " in " +
+                            yangType.getLineNumber() + " at " +
+                            yangType.getCharPosition()
+                            + " in " + yangType.getFileName());
             }
         } else {
             switch (type) {
@@ -304,11 +317,19 @@
     private static String getTypeDefsPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
         Object var = type.getDataTypeExtendedInfo();
         if (!(var instanceof YangDerivedInfo)) {
-            throw new TranslatorException("type should have been derived.");
+            throw new TranslatorException("type should have been derived. " +
+                    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.");
+            throw new TranslatorException("derived info is not an instance of typedef. " +
+                    type.getDataTypeName() + " in " +
+                    type.getLineNumber() + " at " +
+                    type.getCharPosition()
+                    + " in " + type.getFileName());
         }
 
         YangJavaTypeDefTranslator typedef = (YangJavaTypeDefTranslator) ((YangDerivedInfo<?>) var).getReferredTypeDef();
@@ -328,7 +349,11 @@
     private static String getUnionPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
 
         if (!(type.getDataTypeExtendedInfo() instanceof YangUnion)) {
-            throw new TranslatorException("type should have been union.");
+            throw new TranslatorException("type should have been union. " +
+                    type.getDataTypeName() + " in " +
+                    type.getLineNumber() + " at " +
+                    type.getCharPosition()
+                    + " in " + type.getFileName());
         }
 
         YangJavaUnionTranslator union = (YangJavaUnionTranslator) type.getDataTypeExtendedInfo();
@@ -348,7 +373,11 @@
     private static String getEnumsPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
 
         if (!(type.getDataTypeExtendedInfo() instanceof YangEnumeration)) {
-            throw new TranslatorException("type should have been enumeration.");
+            throw new TranslatorException("type should have been enumeration. " +
+                    type.getDataTypeName() + " in " +
+                    type.getLineNumber() + " at " +
+                    type.getCharPosition()
+                    + " in " + type.getFileName());
         }
         YangJavaEnumerationTranslator enumeration = (YangJavaEnumerationTranslator) type.getDataTypeExtendedInfo();
         if (enumeration.getJavaFileInfo().getPackage() == null) {
@@ -367,7 +396,11 @@
     private static String getIdentityRefPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
 
         if (!(type.getDataTypeExtendedInfo() instanceof YangIdentityRef)) {
-            throw new TranslatorException("type should have been identityref.");
+            throw new TranslatorException("type should have been identityref. " +
+                    type.getDataTypeName() + " in " +
+                    type.getLineNumber() + " at " +
+                    type.getCharPosition()
+                    + " in " + type.getFileName());
         }
         YangIdentityRef identityRef = (YangIdentityRef) type.getDataTypeExtendedInfo();
         YangJavaIdentityTranslator identity = (YangJavaIdentityTranslator) (identityRef.getReferredIdentity());
@@ -387,7 +420,11 @@
     private static String getPackageFromParent(YangNode parent,
                                                YangToJavaNamingConflictUtil conflictResolver) {
         if (!(parent instanceof JavaFileInfoContainer)) {
-            throw new TranslatorException("invalid child node is being processed.");
+            throw new TranslatorException("invalid child node is being processed. " +
+                    parent.getName() + " in " +
+                    parent.getLineNumber() + " at " +
+                    parent.getCharPosition()
+                    + " in " + parent.getFileName());
         }
         JavaFileInfoTranslator parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
         if (parentInfo.getPackage() == null) {
@@ -434,7 +471,12 @@
                         submodule.getNameSpaceFromModule(submodule.getBelongsTo()),
                         submodule.getRevision().getRevDate(), conflictResolver);
             } else {
-                throw new TranslatorException("Invalid root node of data model tree");
+                throw new TranslatorException("Invalid root node of data model tree " +
+                        yangNode.getName() + " in " +
+                        yangNode.getLineNumber() + " at " +
+                        yangNode.getCharPosition()
+                        + " in " + yangNode.getFileName());
+
             }
 
             ((JavaCodeGeneratorInfo) yangNode).getJavaFileInfo()
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
index 49f2f41..c1c6e60 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
@@ -15,15 +15,16 @@
  */
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
+import org.onosproject.yangutils.datamodel.LocationInfo;
 import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfoContainer;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 
 /**
  * Represent java based identification of the YANG leaves.
  */
 public interface JavaLeafInfoContainer
-        extends JavaQualifiedTypeInfoContainer {
+        extends JavaQualifiedTypeInfoContainer, LocationInfo {
     /**
      * Retrieves the data type of the leaf.
      *
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
index 6589201..1607b9f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
@@ -18,13 +18,13 @@
 import java.io.IOException;
 
 import org.onosproject.yangutils.datamodel.YangChoice;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaAugment;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfAugmentableNode;
@@ -61,7 +61,11 @@
     public JavaFileInfoTranslator getJavaFileInfo() {
 
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -107,7 +111,11 @@
         try {
             generateCodeOfAugmentableNode(this, yangPlugin);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for augmentable node " + getName());
+            throw new TranslatorException("Failed to generate code for augmentable node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -123,7 +131,11 @@
                 getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
             }
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for augmentable node " + getName());
+            throw new TranslatorException("Failed to generate code for augmentable node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java
index 88498db..b1d8a1c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java
@@ -60,7 +60,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node" +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -108,7 +112,11 @@
             generateCodeOfAugmentableNode(this, yangPlugin);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for case node " + getName());
+                    "Failed to prepare generate code entry for case node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -120,7 +128,11 @@
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for case node " + getName());
+            throw new TranslatorException("Failed to generate code for case node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoiceTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoiceTranslator.java
index 2f51b65..1c253eb 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoiceTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoiceTranslator.java
@@ -17,13 +17,13 @@
 
 import java.io.IOException;
 
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaChoice;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeAndUpdateInParent;
@@ -60,7 +60,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node" +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -108,7 +112,11 @@
             generateCodeAndUpdateInParent(this, yangPlugin, false);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for choice node " + getName());
+                    "Failed to prepare generate code entry for choice node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -120,7 +128,11 @@
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(INTERFACE_MASK, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for choice node " + getName());
+            throw new TranslatorException("Failed to generate code for choice node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainerTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainerTranslator.java
index a355b01..31e51c9 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainerTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainerTranslator.java
@@ -17,13 +17,13 @@
 
 import java.io.IOException;
 
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaContainer;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeAndUpdateInParent;
@@ -60,7 +60,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -108,7 +112,11 @@
             generateCodeAndUpdateInParent(this, yangPlugin, false);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for container node " + getName());
+                    "Failed to prepare generate code entry for container node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -122,7 +130,11 @@
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for container node " + getName());
+            throw new TranslatorException("Failed to generate code for container node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
index e2fad05..da4531f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
@@ -18,13 +18,13 @@
 
 import java.io.IOException;
 
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaEnumeration;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfNode;
@@ -62,7 +62,11 @@
     public JavaFileInfoTranslator getJavaFileInfo() {
 
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -110,7 +114,11 @@
             generateCodeOfNode(this, yangPlugin);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for enumeration node " + getName());
+                    "Failed to prepare generate code entry for enumeration node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -124,7 +132,11 @@
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_ENUM_CLASS, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for enumeration node " + getName());
+            throw new TranslatorException("Failed to generate code for enumeration node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java
index e2f55de..bd54469 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java
@@ -15,14 +15,14 @@
  */
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaGrouping;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 /**
  * Represents grouping information extended to support java code generation.
@@ -55,7 +55,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -94,7 +98,11 @@
     @Override
     public void generateCodeEntry(YangPluginConfig yangPlugin)
             throws TranslatorException {
-        throw new InvalidNodeForTranslatorException();
+        InvalidNodeForTranslatorException exception = new InvalidNodeForTranslatorException();
+        exception.setFileName(this.getFileName());
+        exception.setCharPosition(this.getCharPosition());
+        exception.setLine(this.getLineNumber());
+        throw exception;
     }
 
     @Override
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
index 073eed3..a63bca0 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
@@ -19,15 +19,15 @@
 import java.io.IOException;
 import java.util.List;
 
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaIdentity;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.JavaImportData;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_IDENTITY_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
@@ -37,6 +37,7 @@
 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.validateLineLength;
 
 /**
  * Represents input information extended to support java code generation.
@@ -73,7 +74,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -129,7 +134,11 @@
 
             if (getBaseNode() != null && getBaseNode().getReferredIdentity() != null) {
                 if (!(getBaseNode().getReferredIdentity() instanceof YangJavaIdentityTranslator)) {
-                    throw new TranslatorException("Failed to prepare generate code entry for base node");
+                    throw new TranslatorException("Failed to prepare generate code entry for base node "
+                            + getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName());
                 }
                 YangJavaIdentityTranslator baseIdentity = (YangJavaIdentityTranslator) getBaseNode()
                         .getReferredIdentity();
@@ -146,10 +155,15 @@
             File file = getFileObject(path, className, JAVA_FILE_EXTENSION, getJavaFileInfo());
 
             initiateJavaFileGeneration(file, GENERATE_IDENTITY_CLASS, imports, this, className);
+            file = validateLineLength(file);
             closeFile(file, false);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for identity node " + this.getName());
+                    "Failed to prepare generate code entry for identity node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInputTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInputTranslator.java
index 2d7bf2c..878a591 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInputTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInputTranslator.java
@@ -18,13 +18,13 @@
 
 import java.io.IOException;
 
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaInput;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfAugmentableNode;
@@ -61,7 +61,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("missing java info in java datamodel node");
+            throw new TranslatorException("missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -109,7 +113,11 @@
             generateCodeOfAugmentableNode(this, yangPlugin);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for input node " + getName());
+                    "Failed to prepare generate code entry for input node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -123,7 +131,11 @@
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for input node " + getName());
+            throw new TranslatorException("Failed to generate code for input node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaListTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaListTranslator.java
index 0ec8198..6082963 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaListTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaListTranslator.java
@@ -17,13 +17,13 @@
 
 import java.io.IOException;
 
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaList;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeAndUpdateInParent;
@@ -60,7 +60,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -108,7 +112,11 @@
             generateCodeAndUpdateInParent(this, yangPlugin, true);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for list node " + getName());
+                    "Failed to prepare generate code entry for list node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -122,7 +130,11 @@
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for list node " + getName());
+            throw new TranslatorException("Failed to generate code for list node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 }
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 0f46f76..cf1f455 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
@@ -76,7 +76,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -130,7 +134,11 @@
             generateCodeOfRootNode(this, yangPlugin, modulePkg);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for module node " + getName());
+                    "Failed to prepare generate code entry for module node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -167,7 +175,11 @@
             searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
                     getJavaFileInfo().getPackageFilePath());
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for module node " + getName());
+            throw new TranslatorException("Failed to generate code for module node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
index a44164f..ce7f8b0 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
@@ -73,8 +73,11 @@
     public JavaFileInfoTranslator getJavaFileInfo() {
 
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java " +
-                                                  "datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -117,14 +120,11 @@
      * @throws TranslatorException translator operation fail
      */
     @Override
-    public void generateCodeEntry(YangPluginConfig yangPlugin)
-            throws TranslatorException {
+    public void generateCodeEntry(YangPluginConfig yangPlugin) 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.
+         * 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".
          *
@@ -138,8 +138,11 @@
             addNotificationToExtendsList();
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for notification " +
-                            "node " + getName());
+                    "Failed to prepare generate code entry for notification node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -174,11 +177,12 @@
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for " +
-                                                  "notification node " +
-                                                  getName());
+            throw new TranslatorException("Failed to generate code for notification node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
-
     }
 
     @Override
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutputTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutputTranslator.java
index 2411f27..fe640ea 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutputTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutputTranslator.java
@@ -18,13 +18,13 @@
 
 import java.io.IOException;
 
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaOutput;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfAugmentableNode;
@@ -61,7 +61,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("missing java info in java datamodel node");
+            throw new TranslatorException("missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -109,7 +113,11 @@
             generateCodeOfAugmentableNode(this, yangPlugin);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for output node " + getName());
+                    "Failed to prepare generate code entry for output node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
 
     }
@@ -125,7 +133,11 @@
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code exit for output node " + getName());
+                    "Failed to prepare generate code exit for output node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
index e5c775e..6e6482b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
@@ -22,13 +22,13 @@
 import org.onosproject.yangutils.datamodel.YangInput;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangOutput;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaRpc;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
@@ -73,7 +73,11 @@
     public JavaFileInfoTranslator getJavaFileInfo() {
 
         if (javaFileInfo == null) {
-            throw new TranslatorException("missing java info in java datamodel node");
+            throw new TranslatorException("missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -113,7 +117,11 @@
         try {
             updatePackageInfo(this, yangPlugin);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to prepare generate code entry for RPC node " + getName());
+            throw new TranslatorException("Failed to prepare generate code entry for RPC node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
@@ -130,7 +138,11 @@
 
         // Parent should be holder of rpc or notification.
         if (!(parent instanceof RpcNotificationContainer)) {
-            throw new TranslatorException("parent node of rpc can only be module or sub-module");
+            throw new TranslatorException("parent node of rpc can only be module or sub-module " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
 
         /*
@@ -151,13 +163,22 @@
             } else if (yangNode instanceof YangOutput) {
                 javaAttributeInfoOfOutput = getChildNodeAsAttributeInParentService(yangNode, this);
             } else {
-                throw new TranslatorException("RPC should contain only input/output child nodes.");
+                throw new TranslatorException("RPC should contain only input/output child nodes. " +
+                        yangNode.getName() + " in " +
+                        yangNode.getLineNumber() + " at " +
+                        yangNode.getCharPosition()
+                        + " in " + yangNode.getFileName());
+
             }
             yangNode = yangNode.getNextSibling();
         }
 
         if (!(parent instanceof TempJavaCodeFragmentFilesContainer)) {
-            throw new TranslatorException("missing parent temp file handle");
+            throw new TranslatorException("missing parent temp file handle " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
 
         /*
@@ -170,7 +191,11 @@
                             ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig(), getName());
 
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for RPC node " + getName());
+            throw new TranslatorException("Failed to generate code for RPC node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
         // No file will be generated during RPC exit.
     }
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 009a86f..4ab4be8 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
@@ -23,11 +23,11 @@
 import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNotification;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaSubModule;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
@@ -80,7 +80,11 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -144,7 +148,11 @@
             generateCodeOfRootNode(this, yangPlugin, subModulePkg);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "failed to prepare generate code entry for submodule node " + getName());
+                    "failed to prepare generate code entry for submodule node " +
+                            getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
 
     }
@@ -181,7 +189,11 @@
             searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
                     getJavaFileInfo().getPackageFilePath());
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for submodule node " + getName());
+            throw new TranslatorException("Failed to generate code for submodule node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
index 6475af3..1f043cf 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
@@ -19,14 +19,14 @@
 
 import org.onosproject.yangutils.datamodel.YangDerivedInfo;
 import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaTypeDef;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
@@ -66,7 +66,11 @@
     public JavaFileInfoTranslator getJavaFileInfo() {
 
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " +
+                    getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -111,19 +115,25 @@
     @Override
     public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorException {
         YangType typeInTypeDef = this.getTypeDefBaseType();
+        InvalidNodeForTranslatorException exception = new InvalidNodeForTranslatorException();
+        exception.setFileName(this.getFileName());
+        exception.setCharPosition(this.getCharPosition());
+        exception.setLine(this.getLineNumber());
         if (typeInTypeDef.getDataType() == DERIVED) {
             YangDerivedInfo derivedInfo = (YangDerivedInfo) typeInTypeDef.getDataTypeExtendedInfo();
             if (derivedInfo.getEffectiveBuiltInType() == LEAFREF) {
-                throw new InvalidNodeForTranslatorException();
+                throw exception;
             }
         } else if (typeInTypeDef.getDataType() == LEAFREF) {
-            throw new InvalidNodeForTranslatorException();
+            throw exception;
         }
         try {
             generateCodeOfNode(this, yangPlugin);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for typedef node " + getName());
+                    "Failed to prepare generate code entry for typedef node " + getName()
+                            + "in " + getLineNumber() + " at " + getCharPosition() + " in " + getFileName()
+                            + " " + e.getLocalizedMessage());
         }
 
     }
@@ -138,7 +148,10 @@
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_TYPEDEF_CLASS, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for typedef node " + getName());
+            throw new TranslatorException(
+                    "Failed to prepare generate code for typedef node " + getName()
+                            + "in " + getLineNumber() + " at " + getCharPosition() + " in " + getFileName()
+                            + " " + e.getLocalizedMessage());
         }
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java
index 911e0c4..93e4858 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java
@@ -56,7 +56,11 @@
             String classPkg = getJavaImportPackage(this,
                     false, conflictResolver);
             if (classPkg == null) {
-                throw new TranslatorException("import package cannot be null when the class is used");
+                throw new TranslatorException("import package cannot be null when the class is used " +
+                        getDataTypeName() + " in " +
+                        getLineNumber() + " at " +
+                        getCharPosition()
+                        + " in " + getFileName());
             }
             importInfo.setPkgInfo(classPkg);
         } else {
@@ -66,7 +70,11 @@
              */
             String dataTypeName = getJavaDataType(this);
             if (dataTypeName == null) {
-                throw new TranslatorException("not supported data type");
+                throw new TranslatorException("not supported data type " +
+                        getDataTypeName() + " in " +
+                        getLineNumber() + " at " +
+                        getCharPosition()
+                        + " in " + getFileName());
             }
             importInfo.setClassInfo(dataTypeName);
         }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnionTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnionTranslator.java
index ce701af..60f200f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnionTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnionTranslator.java
@@ -17,13 +17,13 @@
 
 import java.io.IOException;
 
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaUnion;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
 import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfNode;
@@ -60,7 +60,10 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new RuntimeException("Missing java info in java datamodel node");
+            throw new RuntimeException("Missing java info in java datamodel node " + getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -108,7 +111,10 @@
             generateCodeOfNode(this, yangPlugin);
         } catch (IOException e) {
             throw new TranslatorException(
-                    "Failed to prepare generate code entry for union node " + getName());
+                    "Failed to prepare generate code entry for union node " + getName() + " in " +
+                            getLineNumber() + " at " +
+                            getCharPosition()
+                            + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
 
     }
@@ -123,7 +129,10 @@
         try {
             getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_UNION_CLASS, this);
         } catch (IOException e) {
-            throw new TranslatorException("Failed to generate code for union node " + getName());
+            throw new TranslatorException("Failed to generate code for union node " + getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName() + " " + e.getLocalizedMessage());
         }
     }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java
index d1b8220..a213faf 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java
@@ -55,7 +55,10 @@
     @Override
     public JavaFileInfoTranslator getJavaFileInfo() {
         if (javaFileInfo == null) {
-            throw new TranslatorException("Missing java info in java datamodel node");
+            throw new TranslatorException("Missing java info in java datamodel node " + getName() + " in " +
+                    getLineNumber() + " at " +
+                    getCharPosition()
+                    + " in " + getFileName());
         }
         return (JavaFileInfoTranslator) javaFileInfo;
     }
@@ -93,7 +96,11 @@
     @Override
     public void generateCodeEntry(YangPluginConfig yangPlugin)
             throws TranslatorException {
-        throw new InvalidNodeForTranslatorException();
+        InvalidNodeForTranslatorException exception = new InvalidNodeForTranslatorException();
+        exception.setFileName(this.getFileName());
+        exception.setCharPosition(this.getCharPosition());
+        exception.setLine(this.getLineNumber());
+        throw exception;
     }
 
     @Override
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index 60191de..d65907d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -23,9 +23,9 @@
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNotification;
 import org.onosproject.yangutils.datamodel.YangSubModule;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
 
@@ -247,13 +247,21 @@
      */
     private static String getIdentityClassDefinition(String yangName, YangNode curNode) {
         if (!(curNode instanceof YangIdentity)) {
-            throw new TranslatorException("Expected java identity instance node");
+            throw new TranslatorException("Expected java identity instance node " +
+                    curNode.getName() + " in " +
+                    curNode.getLineNumber() + " at " +
+                    curNode.getCharPosition()
+                    + " in " + curNode.getFileName());
         }
         YangIdentity identity = (YangIdentity) curNode;
         if (identity.getBaseNode() != null) {
             YangIdentity baseIdentity = identity.getBaseNode().getReferredIdentity();
             if (baseIdentity == null) {
-                throw new TranslatorException("Expected java identity instance node");
+                throw new TranslatorException("Expected java identity instance node " +
+                        curNode.getName() + " in " +
+                        curNode.getLineNumber() + " at " +
+                        curNode.getCharPosition()
+                        + " in " + curNode.getFileName());
             }
 
             JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) baseIdentity).getJavaFileInfo();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 5c7f463..f1f258b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -412,4 +412,12 @@
         return "        this.onosYangNodeOperationType = builderObject.onosYangNodeOperationType();\n";
     }
 
+    /**
+     * Returns attribute in constructor for yang augmented info map.
+     *
+     * @return attribute in constructor for yang augmented info map
+     */
+    static String getYangAugmentedMapObjectForConstruct() {
+        return "        this.yangAugmentedInfoMap = builderObject.yangAugmentedInfoMap();\n";
+    }
 }
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 ec671aa..ab37d7c 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
@@ -281,7 +281,8 @@
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils
         .validateLineLength;
-
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen
+        .getYangAugmentedMapObjectForConstruct;
 import static java.util.Collections.sort;
 
 /**
@@ -806,6 +807,9 @@
                 constructor =
                         constructor + getOperationAttributeForConstructor();
             }
+            if (curNode instanceof YangAugmentableNode) {
+                constructor = constructor + getYangAugmentedMapObjectForConstruct();
+            }
             methods.add(
                     constructor + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
                             NEW_LINE);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index a591435..09bb72b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -334,6 +334,12 @@
                                                   String pkg, YangPluginConfig pluginConfig)
             throws IOException {
 
+        if (file.exists()) {
+            throw new IOException(" file " + file.getName() + " is already generated." +
+                    "please check whether multiple yang files has same module/submodule \"name\" and \"namespace\"" +
+                    "or You may have generated code of previous build present in your directory.");
+        }
+
         boolean isFileCreated;
         try {
             isFileCreated = file.createNewFile();
@@ -360,6 +366,11 @@
                                                   YangNode curNode, String className)
             throws IOException {
 
+        if (file.exists()) {
+            throw new IOException(" file " + file.getName() + " is already generated." +
+                    "please check whether multiple yang files has same module/submodule \"name\" and \"namespace\"" +
+                    "or You may have generated code of previous build present in your directory.");
+        }
         boolean isFileCreated;
         try {
             isFileCreated = file.createNewFile();
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 9836c5c..8c14295 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,10 +26,10 @@
 import java.util.List;
 
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
 import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
 import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
@@ -205,7 +205,11 @@
      */
     public static void createPackage(YangNode yangNode) throws IOException {
         if (!(yangNode instanceof JavaFileInfoContainer)) {
-            throw new TranslatorException("current node must have java file info");
+            throw new TranslatorException("current node must have java file info " +
+                    yangNode.getName() + " in " +
+                    yangNode.getLineNumber() + " at " +
+                    yangNode.getCharPosition()
+                    + " in " + yangNode.getFileName());
         }
         String pkgInfo;
         JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index 0ab080e..d044456 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -1356,7 +1356,11 @@
             case DERIVED:
                 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
             default:
-                throw new TranslatorException("given data type is not supported.");
+                throw new TranslatorException("given data type is not supported. " +
+                        yangType.getDataTypeName() + " in " +
+                        yangType.getLineNumber() + " at " +
+                        yangType.getCharPosition()
+                        + " in " + yangType.getFileName());
         }
     }
 
@@ -1432,7 +1436,8 @@
         } else {
             method = method + EIGHT_SPACE_INDENTATION
                     + RETURN + SPACE + VALUE + SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE + SPACE + AND +
-                    AND + SPACE + VALUE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN + NEW_LINE;
+                    AND + SPACE + VALUE + SPACE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN +
+                    NEW_LINE;
         }
         return method + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
     }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
index 8a578c3..6ac0581 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
@@ -43,6 +43,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_KEY_WORDS;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.UtilConstants.ONE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
 import static org.onosproject.yangutils.utils.UtilConstants.ORG;
 import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE;
@@ -77,8 +78,8 @@
  */
 public final class YangIoUtils {
 
-    private static final int LINE_SIZE = 116;
-    private static final int SUB_LINE_SIZE = 114;
+    private static final int LINE_SIZE = 118;
+    private static final int SUB_LINE_SIZE = 116;
     private static final int ZERO = 0;
 
     /**
@@ -311,7 +312,7 @@
         try {
             appendFileContents(appendFile, srcFile);
         } catch (IOException e) {
-            throw new IOException("Failed to append " + appendFile + " in " + srcFile);
+            throw new IOException("Failed to merge " + appendFile + " in " + srcFile);
         }
     }
 
@@ -437,8 +438,31 @@
         StringBuilder tempBuilder = new StringBuilder();
         String append;
         for (String str : strArray) {
-            append = str + string;
-            tempBuilder.append(append);
+            if (strArray[strArray.length - 1].contains(OPEN_CURLY_BRACKET)) {
+                if (str.equals(strArray[strArray.length - 2])
+                        && !str.equals(strArray[0])
+                        && tempBuilder.length() < SUB_LINE_SIZE) {
+                    String tempString = stringBuilder.toString();
+                    stringBuilder.delete(ZERO, stringBuilder.length());
+                    tempString = trimAtLast(tempString, string);
+                    stringBuilder.append(tempString);
+                    if (string.equals(PERIOD)) {
+                        append = NEW_LINE + TWELVE_SPACE_INDENTATION + PERIOD + str + string;
+                    } else {
+                        append = NEW_LINE + TWELVE_SPACE_INDENTATION + str + string;
+                    }
+                    stringBuilder.append(append);
+                    append = EMPTY_STRING;
+                    tempBuilder.delete(ZERO, tempBuilder.length());
+                    tempBuilder.append(TWELVE_SPACE_INDENTATION);
+                } else {
+                    append = str + string;
+                    tempBuilder.append(append);
+                }
+            } else {
+                append = str + string;
+                tempBuilder.append(append);
+            }
             if (tempBuilder.length() > lineSize) {
                 String tempString = stringBuilder.toString();
                 stringBuilder.delete(ZERO, stringBuilder.length());
diff --git a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileUsesLinkingTest.java b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileUsesLinkingTest.java
index 716e21c..6d81c09 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileUsesLinkingTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileUsesLinkingTest.java
@@ -262,7 +262,8 @@
 
         thrown.expect(LinkerException.class);
         thrown.expectMessage(
-                "YANG file error: Duplicate input identifier detected, same as leaf \"zip-code\"");
+                "YANG file error: Duplicate input identifier detected, same as leaf \"zip-code in 7 at 13 in " +
+                        "src/test/resources/SelfResolutionGroupingReferencingItselfFailureScenerio.yang\"");
         YangNode node = manager
                 .getDataModel("src/test/resources/SelfResolutionGroupingReferencingItselfFailureScenerio.yang");
 
@@ -372,7 +373,8 @@
 
         thrown.expect(ParserException.class);
         thrown.expectMessage(
-                "YANG file error: Duplicate input identifier detected, same as uses \"failure\"");
+                "YANG file error: Duplicate input identifier detected, same as uses \"failure in 10 at 13 in" +
+                        " src/test/resources/SelfResolutionGroupingHavingSameUsesManyTimes.yang\"");
         YangNode node = manager
                 .getDataModel("src/test/resources/SelfResolutionGroupingHavingSameUsesManyTimes.yang");
     }
diff --git a/plugin/src/test/resources/augmentTranslator/test5.yang b/plugin/src/test/resources/augmentTranslator/test5.yang
new file mode 100644
index 0000000..b7cf234
--- /dev/null
+++ b/plugin/src/test/resources/augmentTranslator/test5.yang
@@ -0,0 +1,25 @@
+module test5 {  
+    namespace "test:test";  
+    prefix test5 ;  
+           
+    import test{  
+       prefix test;
+    }        
+    organization "";  
+    contact "";  
+       
+    description   
+       "Defines basic service types for L3VPN service.";  
+       
+    revision "2015-12-16" {  
+       reference "";  
+    }  
+                    
+    augment /test:cont1 {
+        leaf leaf1 {
+           type int32;
+         }
+    }
+
+}
+