removed code duplication in translator, and addressed review comments

Change-Id: I27767a81c4bf279c80d2b98192f75f8f507b4457
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java b/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
index b0b5edc..673736c 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
@@ -36,8 +36,6 @@
  */
 public class YangUtilsParserManager implements YangUtilsParser {
 
-    public static final int SUB_STATEMENT_CARDINALITY = 1;
-
     @Override
     public YangNode getDataModel(String yangFile) throws IOException, ParserException {
 
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java
index c0c302f..9e5d583 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java
@@ -46,11 +46,10 @@
 import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.parser.Parsable;
-import static org.onosproject.yangutils.utils.YangConstructType.BITS_DATA;
-import static org.onosproject.yangutils.utils.YangConstructType.TYPE_DATA;
 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
+
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
@@ -58,10 +57,12 @@
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
+import static org.onosproject.yangutils.utils.YangConstructType.BITS_DATA;
+import static org.onosproject.yangutils.utils.YangConstructType.TYPE_DATA;
 
 /**
- * Implements listener based call back function corresponding to the "bits"
- * rule defined in ANTLR grammar file for corresponding ABNF rule in RFC 6020.
+ * Implements listener based call back function corresponding to the "bits" rule
+ * defined in ANTLR grammar file for corresponding ABNF rule in RFC 6020.
  */
 public final class BitsListener {
 
@@ -79,7 +80,7 @@
      * @param ctx context object of the grammar rule
      */
     public static void processBitsEntry(TreeWalkListener listener,
-                                               GeneratedYangParser.BitsSpecificationContext ctx) {
+            GeneratedYangParser.BitsSpecificationContext ctx) {
 
         // Check for stack to be non empty.
         checkStackIsNotEmpty(listener, MISSING_HOLDER, BITS_DATA, "", ENTRY);
@@ -103,7 +104,7 @@
                 // TODO typedef, union, deviate.
                 default:
                     throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, TYPE_DATA,
-                            ((YangType) typeData).getDataTypeName(), ENTRY));
+                            ((YangType<?>) typeData).getDataTypeName(), ENTRY));
             }
             listener.getParsedDataStack().push(typeData);
             listener.getParsedDataStack().push(bitsNode);
@@ -120,13 +121,14 @@
      * @param ctx context object of the grammar rule
      */
     public static void processBitsExit(TreeWalkListener listener,
-                                              GeneratedYangParser.BitsSpecificationContext ctx) {
+            GeneratedYangParser.BitsSpecificationContext ctx) {
 
         // Check for stack to be non empty.
         checkStackIsNotEmpty(listener, MISSING_HOLDER, BITS_DATA, "", EXIT);
 
         Parsable tmpBitsNode = listener.getParsedDataStack().peek();
         if (tmpBitsNode instanceof YangBits) {
+            YangBits bitsNode = (YangBits) tmpBitsNode;
             listener.getParsedDataStack().pop();
 
             // Check for stack to be non empty.
@@ -135,8 +137,8 @@
             Parsable tmpNode = listener.getParsedDataStack().peek();
             switch (tmpNode.getYangConstructType()) {
                 case TYPE_DATA: {
-                    YangType typeNode = (YangType) tmpNode;
-                    typeNode.setDataTypeExtendedInfo((YangBits) tmpBitsNode);
+                    YangType<YangBits> typeNode = (YangType<YangBits>) tmpNode;
+                    typeNode.setDataTypeExtendedInfo(bitsNode);
                     break;
                 }
                 default:
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java
index 42b3cc4..18a81e4 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java
@@ -45,13 +45,17 @@
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
 
-import static org.onosproject.yangutils.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.MISSING_HOLDER;
 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.ListenerValidation.checkStackIsNotEmpty;
+import static org.onosproject.yangutils.utils.YangConstructType.DEFAULT_DATA;
 
+/**
+ * Listener implementation for default YANG statement.
+ */
 public final class DefaultListener {
 
     /**
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java
index 5f98fa4..0dab0f1 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java
@@ -46,11 +46,10 @@
 import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.parser.Parsable;
-import static org.onosproject.yangutils.utils.YangConstructType.ENUMERATION_DATA;
-import static org.onosproject.yangutils.utils.YangConstructType.TYPE_DATA;
 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
+
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
@@ -58,6 +57,8 @@
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
+import static org.onosproject.yangutils.utils.YangConstructType.ENUMERATION_DATA;
+import static org.onosproject.yangutils.utils.YangConstructType.TYPE_DATA;
 
 /**
  * Implements listener based call back function corresponding to the
@@ -104,7 +105,7 @@
                 // TODO typedef, union, deviate.
                 default:
                     throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, TYPE_DATA,
-                            ((YangType) typeData).getDataTypeName(), ENTRY));
+                            ((YangType<?>) typeData).getDataTypeName(), ENTRY));
             }
             listener.getParsedDataStack().push(typeData);
             listener.getParsedDataStack().push(enumerationNode);
@@ -128,6 +129,7 @@
 
         Parsable tmpEnumerationNode = listener.getParsedDataStack().peek();
         if (tmpEnumerationNode instanceof YangEnumeration) {
+            YangEnumeration enumerationNode = (YangEnumeration) tmpEnumerationNode;
             listener.getParsedDataStack().pop();
 
             // Check for stack to be non empty.
@@ -136,8 +138,8 @@
             Parsable tmpNode = listener.getParsedDataStack().peek();
             switch (tmpNode.getYangConstructType()) {
                 case TYPE_DATA: {
-                    YangType typeNode = (YangType) tmpNode;
-                    typeNode.setDataTypeExtendedInfo((YangEnumeration) tmpEnumerationNode);
+                    YangType<YangEnumeration> typeNode = (YangType<YangEnumeration>) tmpNode;
+                    typeNode.setDataTypeExtendedInfo(enumerationNode);
                     break;
                 }
                 default:
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java
index 7692025..d71186e 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java
@@ -20,12 +20,13 @@
 import org.onosproject.yangutils.datamodel.YangList;
 import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangNodeType;
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.parser.Parsable;
 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.ListenerValidation;
+
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerCollisionDetector.detectCollidingChildUtil;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
@@ -35,7 +36,6 @@
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.UNHANDLED_PARSED_DATA;
-import org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateCardinality;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateCardinalityNonNull;
@@ -115,7 +115,7 @@
         String identifierName = ctx.IDENTIFIER().getText();
         detectCollidingChildUtil(listener, line, charPositionInLine, identifierName, LIST_DATA);
 
-        YangList yangList = new YangList(YangNodeType.LIST_NODE);
+        YangList yangList = new YangList();
         yangList.setName(ctx.IDENTIFIER().getText());
 
         /*
@@ -128,8 +128,8 @@
         }
 
         Parsable curData = listener.getParsedDataStack().peek();
-        if ((curData instanceof YangModule) || (curData instanceof YangContainer)
-                || (curData instanceof YangList)) {
+        if (curData instanceof YangModule || curData instanceof YangContainer
+                || curData instanceof YangList) {
             curNode = (YangNode) curData;
             try {
                 curNode.addChild(yangList);
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java
index 72ba44d..da8a666 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java
@@ -23,12 +23,12 @@
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
 
-import static org.onosproject.yangutils.utils.YangConstructType.MAX_ELEMENT_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.ListenerValidation.checkStackIsNotEmpty;
+import static org.onosproject.yangutils.utils.YangConstructType.MAX_ELEMENT_DATA;
 
 /*
  * Reference: RFC6020 and YANG ANTLR Grammar
@@ -44,8 +44,9 @@
  */
 
 /**
- * Implements listener based call back function corresponding to the "max-elements"
- * rule defined in ANTLR grammar file for corresponding ABNF rule in RFC 6020.
+ * Implements listener based call back function corresponding to the
+ * "max-elements" rule defined in ANTLR grammar file for corresponding ABNF rule
+ * in RFC 6020.
  */
 public final class MaxElementsListener {
 
@@ -56,15 +57,14 @@
     }
 
     /**
-     * It is called when parser receives an input matching the grammar
-     * rule (max-elements), performs validation and updates the data model
-     * tree.
+     * It is called when parser receives an input matching the grammar rule
+     * (max-elements), performs validation and updates the data model tree.
      *
      * @param listener listener's object
      * @param ctx context object of the grammar rule
      */
     public static void processMaxElementsEntry(TreeWalkListener listener,
-                                             GeneratedYangParser.MaxElementsStatementContext ctx) {
+            GeneratedYangParser.MaxElementsStatementContext ctx) {
         int maxElementsValue;
 
         // Check for stack to be non empty.
@@ -84,7 +84,7 @@
                 break;
             case LIST_DATA:
                 YangList yangList = (YangList) tmpData;
-                yangList.setMaxElelements(maxElementsValue);
+                yangList.setMaxElements(maxElementsValue);
                 break;
             default:
                 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, MAX_ELEMENT_DATA, "", ENTRY));
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NamespaceListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NamespaceListener.java
index a2cf36c..b30d45c 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NamespaceListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NamespaceListener.java
@@ -16,6 +16,8 @@
 
 package org.onosproject.yangutils.parser.impl.listeners;
 
+import java.net.URI;
+
 import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNameSpace;
 import org.onosproject.yangutils.parser.Parsable;
@@ -23,14 +25,12 @@
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
 
-import java.net.URI;
-
-import static org.onosproject.yangutils.utils.YangConstructType.NAMESPACE_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.ListenerValidation.checkStackIsNotEmpty;
+import static org.onosproject.yangutils.utils.YangConstructType.NAMESPACE_DATA;
 
 /*
  * Reference: RFC6020 and YANG ANTLR Grammar
@@ -74,7 +74,7 @@
      * @param ctx context object of the grammar rule
      */
     public static void processNamespaceEntry(TreeWalkListener listener,
-                                             GeneratedYangParser.NamespaceStatementContext ctx) {
+            GeneratedYangParser.NamespaceStatementContext ctx) {
 
         // Check for stack to be non empty.
         checkStackIsNotEmpty(listener, MISSING_HOLDER, NAMESPACE_DATA, ctx.string().getText(), ENTRY);
@@ -89,16 +89,16 @@
         // Obtain the node of the stack.
         Parsable tmpNode = listener.getParsedDataStack().peek();
         switch (tmpNode.getYangConstructType()) {
-        case MODULE_DATA: {
-            YangModule module = (YangModule) tmpNode;
-            YangNameSpace uri = new YangNameSpace();
-            uri.setUri(ctx.string().getText());
-            module.setNameSpace(uri);
-            break;
-        }
-        default:
-            throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, NAMESPACE_DATA,
-                                                                    ctx.string().getText(), ENTRY));
+            case MODULE_DATA: {
+                YangModule module = (YangModule) tmpNode;
+                YangNameSpace uri = new YangNameSpace();
+                uri.setUri(ctx.string().getText());
+                module.setNameSpace(uri);
+                break;
+            }
+            default:
+                throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, NAMESPACE_DATA,
+                        ctx.string().getText(), ENTRY));
         }
     }
 
@@ -110,9 +110,8 @@
      */
     private static boolean validateUriValue(String uri) {
         uri = uri.replace("\"", "");
-        final URI tmpUri;
         try {
-            tmpUri = URI.create(uri);
+            URI.create(uri);
         } catch (Exception e1) {
             return false;
         }
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/PositionListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/PositionListener.java
index 41835d6..43e600b 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/PositionListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/PositionListener.java
@@ -36,15 +36,16 @@
 import org.onosproject.yangutils.datamodel.YangBit;
 import org.onosproject.yangutils.datamodel.YangBits;
 import org.onosproject.yangutils.parser.Parsable;
-import static org.onosproject.yangutils.utils.YangConstructType.POSITION_DATA;
 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
+
 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.ListenerValidation.checkStackIsNotEmpty;
+import static org.onosproject.yangutils.utils.YangConstructType.POSITION_DATA;
 
 /**
  * Implements listener based call back function corresponding to the "position"
@@ -69,7 +70,7 @@
      * @param ctx context object of the grammar rule
      */
     public static void processPositionEntry(TreeWalkListener listener,
-                                            GeneratedYangParser.PositionStatementContext ctx) {
+            GeneratedYangParser.PositionStatementContext ctx) {
 
         // Check for stack to be non empty.
         checkStackIsNotEmpty(listener, MISSING_HOLDER, POSITION_DATA, ctx.INTEGER().getText(), ENTRY);
@@ -102,7 +103,7 @@
      * @return validation result
      */
     private static boolean isBitPositionValid(TreeWalkListener listener,
-                                           GeneratedYangParser.PositionStatementContext ctx) {
+            GeneratedYangParser.PositionStatementContext ctx) {
         Parsable bitNode = listener.getParsedDataStack().pop();
 
         // Check for stack to be non empty.
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RevisionDateListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RevisionDateListener.java
index 17fe6b7..03f1cb1 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RevisionDateListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RevisionDateListener.java
@@ -16,6 +16,10 @@
 
 package org.onosproject.yangutils.parser.impl.listeners;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 import org.onosproject.yangutils.datamodel.YangImport;
 import org.onosproject.yangutils.datamodel.YangInclude;
 import org.onosproject.yangutils.parser.Parsable;
@@ -23,16 +27,12 @@
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import static org.onosproject.yangutils.utils.YangConstructType.REVISION_DATE_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.ListenerValidation.checkStackIsNotEmpty;
+import static org.onosproject.yangutils.utils.YangConstructType.REVISION_DATE_DATA;
 
 /*
  * Reference: RFC6020 and YANG ANTLR Grammar
@@ -83,11 +83,11 @@
      * @param ctx context object of the grammar rule
      */
     public static void processRevisionDateEntry(TreeWalkListener listener,
-                                                GeneratedYangParser.RevisionDateStatementContext ctx) {
+            GeneratedYangParser.RevisionDateStatementContext ctx) {
 
         // Check for stack to be non empty.
         checkStackIsNotEmpty(listener, MISSING_HOLDER, REVISION_DATE_DATA, ctx.DATE_ARG().getText(),
-                             ENTRY);
+                ENTRY);
 
         if (!isDateValid(ctx.DATE_ARG().getText())) {
             ParserException parserException = new ParserException("YANG file error: Input date is not correct");
@@ -99,19 +99,19 @@
         // Obtain the node of the stack.
         Parsable tmpNode = listener.getParsedDataStack().peek();
         switch (tmpNode.getYangConstructType()) {
-        case IMPORT_DATA: {
-            YangImport importNode = (YangImport) tmpNode;
-            importNode.setRevision(ctx.DATE_ARG().getText());
-            break;
-        }
-        case INCLUDE_DATA: {
-            YangInclude includeNode = (YangInclude) tmpNode;
-            includeNode.setRevision(ctx.DATE_ARG().getText());
-            break;
-        }
-        default:
-            throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, REVISION_DATE_DATA,
-                                                                    ctx.DATE_ARG().getText(), ENTRY));
+            case IMPORT_DATA: {
+                YangImport importNode = (YangImport) tmpNode;
+                importNode.setRevision(ctx.DATE_ARG().getText());
+                break;
+            }
+            case INCLUDE_DATA: {
+                YangInclude includeNode = (YangInclude) tmpNode;
+                includeNode.setRevision(ctx.DATE_ARG().getText());
+                break;
+            }
+            default:
+                throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, REVISION_DATE_DATA,
+                        ctx.DATE_ARG().getText(), ENTRY));
         }
     }
 
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java
index 5ba9780..d2af63e 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java
@@ -58,12 +58,22 @@
 import org.onosproject.yangutils.datamodel.YangTypeDef;
 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.parser.Parsable;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateCardinality;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateCardinalityEqualsOne;
 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
 
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructExtendedListenerErrorMessage;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_CONTENT;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.UNHANDLED_PARSED_DATA;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateCardinality;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateCardinalityEqualsOne;
 import static org.onosproject.yangutils.utils.YangConstructType.DEFAULT_DATA;
 import static org.onosproject.yangutils.utils.YangConstructType.DESCRIPTION_DATA;
 import static org.onosproject.yangutils.utils.YangConstructType.REFERENCE_DATA;
@@ -71,15 +81,6 @@
 import static org.onosproject.yangutils.utils.YangConstructType.TYPEDEF_DATA;
 import static org.onosproject.yangutils.utils.YangConstructType.TYPE_DATA;
 import static org.onosproject.yangutils.utils.YangConstructType.UNITS_DATA;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructExtendedListenerErrorMessage;
-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_CURRENT_HOLDER;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.UNHANDLED_PARSED_DATA;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
 
 /**
  * Implements listener based call back function corresponding to the "typedef"
@@ -122,8 +123,8 @@
 
         Parsable curData = listener.getParsedDataStack().peek();
 
-        if ((curData instanceof YangModule) | (curData instanceof YangSubModule) | (curData instanceof YangContainer)
-                | (curData instanceof YangList)) {
+        if (curData instanceof YangModule || curData instanceof YangSubModule || curData instanceof YangContainer
+                || curData instanceof YangList) {
             /*
              * TODO YangGrouping, YangRpc, YangInput, YangOutput, Notification.
              */
@@ -159,8 +160,8 @@
             try {
                 typeDefNode.validateDataOnExit();
             } catch (DataModelException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
+                throw new ParserException(constructListenerErrorMessage(INVALID_CONTENT, TYPEDEF_DATA,
+                        ctx.IDENTIFIER().getText(), EXIT));
             }
 
             listener.getParsedDataStack().pop();
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
index 18a7aef..5d6a744 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
@@ -27,7 +27,6 @@
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
 
-import static org.onosproject.yangutils.utils.YangConstructType.TYPE_DATA;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
@@ -35,6 +34,7 @@
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
+import static org.onosproject.yangutils.utils.YangConstructType.TYPE_DATA;
 
 /*
  * Reference: RFC6020 and YANG ANTLR Grammar
@@ -110,11 +110,11 @@
         switch (tmpData.getYangConstructType()) {
             case LEAF_DATA:
                 YangLeaf leaf = (YangLeaf) tmpData;
-                leaf.setDataType((YangType) type);
+                leaf.setDataType((YangType<?>) type);
                 break;
             case LEAF_LIST_DATA:
                 YangLeafList leafList = (YangLeafList) tmpData;
-                leafList.setDataType((YangType) type);
+                leafList.setDataType((YangType<?>) type);
                 break;
             case TYPEDEF_DATA:
 
@@ -128,15 +128,15 @@
                 }
 
                 YangDerivedType derivedTypeInfo = new YangDerivedType();
-                if (((YangType) type).getDataType() != YangDataTypes.DERIVED) {
-                    derivedTypeInfo.setEffectiveYangBuiltInType(((YangType) type).getDataType());
+                if (((YangType<?>) type).getDataType() != YangDataTypes.DERIVED) {
+                    derivedTypeInfo.setEffectiveYangBuiltInType(((YangType<?>) type).getDataType());
                 } else {
                     /*
                      * It will be resolved in the validate data model at exit.
                      * Nothing needs to be done.
                      */
                 }
-                derivedTypeInfo.setBaseType((YangType) type);
+                derivedTypeInfo.setBaseType((YangType<?>) type);
                 derivedType.setDataTypeExtendedInfo(derivedTypeInfo);
 
                 break;
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/ListenerValidation.java b/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/ListenerValidation.java
index d460634..784b2d5 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/ListenerValidation.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/ListenerValidation.java
@@ -16,17 +16,18 @@
 
 package org.onosproject.yangutils.parser.impl.parserutils;
 
+import java.util.List;
+
 import org.onosproject.yangutils.datamodel.YangContainer;
 import org.onosproject.yangutils.datamodel.YangList;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.parser.Parsable;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
 import org.onosproject.yangutils.utils.YangConstructType;
-import static org.onosproject.yangutils.utils.YangConstructType.getYangConstructType;
 
-import java.util.List;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
+import static org.onosproject.yangutils.utils.YangConstructType.getYangConstructType;
 
 /**
  * It's a utility to carry out listener validation.
@@ -50,8 +51,8 @@
      * @param errorLocation location where error occurred
      */
     public static void checkStackIsNotEmpty(TreeWalkListener listener, ListenerErrorType errorType,
-                                            YangConstructType yangConstructType, String parsableDataTypeName,
-                                            ListenerErrorLocation errorLocation) {
+            YangConstructType yangConstructType, String parsableDataTypeName,
+            ListenerErrorLocation errorLocation) {
         if (listener.getParsedDataStack().empty()) {
             /*
              * If stack is empty it indicates error condition, value of
@@ -59,7 +60,7 @@
              * attached to parsable data type.
              */
             String message = constructListenerErrorMessage(errorType, yangConstructType, parsableDataTypeName,
-                                                           errorLocation);
+                    errorLocation);
             throw new ParserException(message);
         }
     }
@@ -75,8 +76,8 @@
      * @param errorLocation location where error occurred
      */
     public static void checkStackIsEmpty(TreeWalkListener listener, ListenerErrorType errorType,
-                                         YangConstructType yangConstructType, String parsableDataTypeName,
-                                         ListenerErrorLocation errorLocation) {
+            YangConstructType yangConstructType, String parsableDataTypeName,
+            ListenerErrorLocation errorLocation) {
 
         if (!listener.getParsedDataStack().empty()) {
             /*
@@ -85,14 +86,14 @@
              * attached to parsable data type.
              */
             String message = constructListenerErrorMessage(errorType, yangConstructType, parsableDataTypeName,
-                                                           errorLocation);
+                    errorLocation);
             throw new ParserException(message);
         }
     }
 
     /**
-     * Returns parent node config value, if top node does not specify a config statement
-     * then default value true is returned.
+     * Returns parent node config value, if top node does not specify a config
+     * statement then default value true is returned.
      *
      * @param listener listener's object
      * @return true/false parent's config value
@@ -117,14 +118,14 @@
      *
      * @param childContext child's context
      * @param yangChildConstruct child construct for whom cardinality is to be
-     *                           validated
+     *            validated
      * @param yangParentConstruct parent construct
      * @param parentName parent name
      * @throws ParserException exception if cardinality check fails
      */
     public static void validateCardinality(List<?> childContext, YangConstructType yangChildConstruct,
-                                           YangConstructType yangParentConstruct, String parentName)
-            throws ParserException {
+            YangConstructType yangParentConstruct, String parentName)
+                    throws ParserException {
 
         if (!childContext.isEmpty() && childContext.size() != 1) {
             ParserException parserException = new ParserException("YANG file error: Invalid cardinality of "
@@ -139,14 +140,13 @@
      *
      * @param childContext child's context
      * @param yangChildConstruct child construct for whom cardinality is to be
-     *                           validated
+     *            validated
      * @param yangParentConstruct parent construct
      * @param parentName parent name
      * @throws ParserException exception if cardinality check fails
      */
     public static void validateCardinalityEqualsOne(List<?> childContext, YangConstructType yangChildConstruct,
-                                                    YangConstructType yangParentConstruct, String parentName)
-            throws ParserException {
+            YangConstructType yangParentConstruct, String parentName) throws ParserException {
 
         if (childContext.isEmpty() || childContext.size() != 1) {
             ParserException parserException = new ParserException("YANG file error: Invalid cardinality of "
@@ -161,14 +161,13 @@
      *
      * @param childContext child's context
      * @param yangChildConstruct child construct for whom cardinality is to be
-     *                           validated
+     *            validated
      * @param yangParentConstruct parent construct
      * @param parentName parent name
      * @throws ParserException exception if cardinality check fails
      */
     public static void validateCardinalityNonNull(List<?> childContext, YangConstructType yangChildConstruct,
-                                                  YangConstructType yangParentConstruct, String parentName)
-            throws ParserException {
+            YangConstructType yangParentConstruct, String parentName) throws ParserException {
 
         if (childContext.isEmpty()) {
             ParserException parserException = new ParserException("YANG file error: Invalid cardinality of "