[ONOS-5142] [ONOS-5137] defect fixes

Change-Id: I2856a7a41b242b16c981915dd97986aa9c6ab676
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/exceptions/LinkerException.java b/plugin/src/main/java/org/onosproject/yangutils/linker/exceptions/LinkerException.java
index 755b5b4..1a36c74 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/exceptions/LinkerException.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/exceptions/LinkerException.java
@@ -22,9 +22,9 @@
 public class LinkerException extends RuntimeException {
 
     private static final long serialVersionUID = 20160211L;
-    private int lineNumber;
-    private int charPositionInLine;
-    private String fileName;
+    private transient int lineNumber;
+    private transient int charPositionInLine;
+    private transient String fileName;
 
     /**
      * Creates a new linker exception.
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 334a92d..c1b6726 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
@@ -43,7 +43,7 @@
      * Set of all the YANG nodes, corresponding to the YANG files parsed by
      * parser.
      */
-    Set<YangNode> yangNodeSet = new HashSet<>();
+    private Set<YangNode> yangNodeSet = new HashSet<>();
 
     /**
      * Returns set of YANG node.
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 fb80076..37a04df 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
@@ -26,7 +26,6 @@
 import org.onosproject.yangutils.datamodel.YangAtomicPath;
 import org.onosproject.yangutils.datamodel.YangAugment;
 import org.onosproject.yangutils.datamodel.YangAugmentableNode;
-import org.onosproject.yangutils.datamodel.YangAugmentedInfo;
 import org.onosproject.yangutils.datamodel.YangCase;
 import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.YangGrouping;
@@ -47,14 +46,17 @@
 import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
 import org.onosproject.yangutils.datamodel.utils.YangConstructType;
 import org.onosproject.yangutils.linker.exceptions.LinkerException;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
 
 import static org.onosproject.yangutils.datamodel.TraversalType.CHILD;
 import static org.onosproject.yangutils.datamodel.TraversalType.PARENT;
 import static org.onosproject.yangutils.datamodel.TraversalType.ROOT;
 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.builtindatatype.YangDataTypes.DERIVED;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.IDENTITYREF;
+import static org.onosproject.yangutils.translator.tojava.YangDataModelFactory.getYangCaseNode;
 import static org.onosproject.yangutils.utils.UtilConstants.COLON;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 
@@ -88,7 +90,7 @@
             }
         }
         if (targetNode instanceof YangChoice) {
-            //Do nothing
+            addCaseNodeToChoiceTarget(augment);
         } else {
             detectCollisionInLeaveHolders(targetNode, augment);
             while (augmentsChild != null) {
@@ -152,6 +154,79 @@
     }
 
     /**
+     * Adds a case node in augment when augmenting a choice node.
+     *
+     * @param augment augment node
+     */
+    private static void addCaseNodeToChoiceTarget(YangAugment augment) {
+        try {
+            YangNode child = augment.getChild();
+            List<YangNode> childNodes = new ArrayList<>();
+            while (child != null) {
+                childNodes.add(child);
+                child = child.getNextSibling();
+            }
+            augment.setChild(null);
+
+            for (YangNode node : childNodes) {
+                YangCase javaCase = getYangCaseNode(JAVA_GENERATION);
+                javaCase.setName(node.getName());
+                augment.addChild(javaCase);
+                node.setParent(javaCase);
+                node.setNextSibling(null);
+                node.setPreviousSibling(null);
+                javaCase.addChild(node);
+            }
+            if (augment.getListOfLeaf() != null) {
+                for (YangLeaf leaf : augment.getListOfLeaf()) {
+                    YangCase javaCase = getYangCaseNode(JAVA_GENERATION);
+                    javaCase.setName(leaf.getName());
+                    javaCase.addLeaf(leaf);
+                    augment.addChild(javaCase);
+
+                }
+                augment.getListOfLeaf().clear();
+            }
+            if (augment.getListOfLeafList() != null) {
+                for (YangLeafList leafList : augment.getListOfLeafList()) {
+                    YangCase javaCase = getYangCaseNode(JAVA_GENERATION);
+                    javaCase.setName(leafList.getName());
+                    javaCase.addLeafList(leafList);
+                    augment.addChild(javaCase);
+                }
+                augment.getListOfLeafList().clear();
+            }
+
+        } catch (DataModelException e) {
+            throw new TranslatorException("Failed to add child nodes to case node of augment " + augment.getName());
+        }
+    }
+
+    //Detect collision between augment and choice children.
+    private void detectCollisionForChoiceNode(YangNode choice, YangNode augment) {
+        YangNode choiceChild = choice.getChild();
+        YangNode augmentChild = augment.getChild();
+
+        List<YangNode> choiceChildren = new ArrayList<>();
+        List<YangNode> augmentChildren = new ArrayList<>();
+        while (choiceChild != null) {
+            choiceChildren.add(choiceChild);
+        }
+        while (augmentChild != null) {
+            augmentChildren.add(augmentChild);
+        }
+
+        for (YangNode cChild : choiceChildren) {
+            for (YangNode aChild : augmentChildren) {
+                if (cChild.getName().equals(aChild.getName())) {
+                    throw new LinkerException("case node " + aChild.getName() + "already present in choice " +
+                            choice.getName());
+                }
+            }
+        }
+    }
+
+    /**
      * Detects collision between target nodes and its all leaf/leaf-list or child node with augmented leaf/leaf-list or
      * child node.
      *
@@ -161,10 +236,10 @@
     static void detectCollisionForAugmentedNode(YangNode targetNode, YangAugment augment) {
         // Detect collision for target node and augment node.
         detectCollision(targetNode, augment);
-        List<YangAugmentedInfo> yangAugmentedInfo = ((YangAugmentableNode) targetNode).getAugmentedInfoList();
+        List<YangAugment> yangAugmentedInfo = ((YangAugmentableNode) targetNode).getAugmentedInfoList();
         // Detect collision for target augment node and current augment node.
-        for (YangAugmentedInfo info : yangAugmentedInfo) {
-            detectCollision((YangAugment) info, augment);
+        for (YangAugment info : yangAugmentedInfo) {
+            detectCollision(info, augment);
         }
     }
 
@@ -222,7 +297,7 @@
      * @return valid node identifier
      */
     static YangNodeIdentifier getValidNodeIdentifier(String nodeIdentifierString,
-            YangConstructType yangConstruct) {
+                                                     YangConstructType yangConstruct) {
         String[] tmpData = nodeIdentifierString.split(Pattern.quote(COLON));
         if (tmpData.length == 1) {
             YangNodeIdentifier nodeIdentifier = new YangNodeIdentifier();
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 31e4c3e..0c21bc9 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
@@ -127,7 +127,7 @@
      * Current module/sub-module reference, will be used in inter-file/
      * inter-jar scenario to get the import/include list.
      */
-    private transient YangReferenceResolver curReferenceResolver;
+    private YangReferenceResolver curReferenceResolver;
 
     /**
      * Stack for type/uses is maintained for hierarchical references, this is
@@ -165,7 +165,7 @@
             throws DataModelException {
 
         setCurReferenceResolver(dataModelRootNode);
-        /**
+        /*
          * Current node to resolve, it can be a YANG type, YANG uses or YANG if-feature or
          * YANG leafref or YANG base or YANG identityref.
          */
@@ -175,7 +175,7 @@
         if (entityToResolve instanceof Resolvable) {
             Resolvable resolvable = (Resolvable) entityToResolve;
             if (resolvable.getResolvableStatus() == RESOLVED) {
-                /**
+                /*
                  * entity is already resolved, so nothing to do
                  */
                 return;
@@ -201,7 +201,7 @@
             throws DataModelException {
 
         while (getPartialResolvedStack().size() != 0) {
-            /**
+            /*
              * Current node to resolve, it can be a YANG type or YANG uses or
              * YANG if-feature or YANG leafref or YANG base or YANG identityref.
              */
@@ -737,7 +737,7 @@
      * @throws DataModelException data model errors
      */
     private YangNode isReferredNodeInSiblingProcessedForIdentity(YangNode potentialReferredNode,
-            String referredNodeName)
+                                                                 String referredNodeName)
             throws DataModelException {
 
         while (potentialReferredNode != null) {
@@ -1229,7 +1229,7 @@
      * @param root            root node
      */
     private void processXPathLinking(T entityToResolve,
-            YangReferenceResolver root) {
+                                     YangReferenceResolver root) {
 
         YangXpathLinker<T> xPathLinker = new YangXpathLinker<T>();
 
@@ -1525,7 +1525,7 @@
      * @throws DataModelException a violation of data model rules
      */
     private void fillAbsolutePathValuesInLeafref(YangLeafRef leafref, String pathNameToBePrefixed,
-            List<YangAtomicPath> atomicPathsInRelative)
+                                                 List<YangAtomicPath> atomicPathsInRelative)
             throws DataModelException {
 
         leafref.setPathType(YangPathArgType.ABSOLUTE_PATH);
@@ -1819,4 +1819,5 @@
         }
         return null;
     }
+
 }
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 89d2dbe..d77fe7d 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
@@ -313,7 +313,7 @@
      */
     private YangLeaf searchReferredLeaf(YangNode targetNode, String leafName) {
         if (!(targetNode instanceof YangLeavesHolder)) {
-            throw new LinkerException("Refered node " + targetNode.getName() +
+            throw new LinkerException("Referred node " + targetNode.getName() +
                     "should be of type leaves holder ");
         }
         YangLeavesHolder holder = (YangLeavesHolder) targetNode;
@@ -337,7 +337,7 @@
      */
     private YangLeafList searchReferredLeafList(YangNode targetNode, String leafListName) {
         if (!(targetNode instanceof YangLeavesHolder)) {
-            throw new LinkerException("Refered node " + targetNode.getName() +
+            throw new LinkerException("Referred node " + targetNode.getName() +
                     "should be of type leaves holder ");
         }
         YangLeavesHolder holder = (YangLeavesHolder) targetNode;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/exceptions/ParserException.java b/plugin/src/main/java/org/onosproject/yangutils/parser/exceptions/ParserException.java
index a11bcb8..8edff52 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/exceptions/ParserException.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/exceptions/ParserException.java
@@ -22,9 +22,9 @@
 public class ParserException extends RuntimeException {
 
     private static final long serialVersionUID = 20160211L;
-    private int lineNumber;
-    private int charPositionInLine;
-    private String fileName;
+    private transient int lineNumber;
+    private transient int charPositionInLine;
+    private transient String fileName;
 
     /**
      * Creates a new parser exception.
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 fd2ac3d..d644345 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
@@ -121,7 +121,7 @@
 
             YangGrouping groupingNode = getYangGroupingNode(JAVA_GENERATION);
             groupingNode.setName(identifier);
-
+            groupingNode.setGroupingDepth(listener.getGroupingDepth());
             YangNode curNode = (YangNode) curData;
             try {
                 curNode.addChild(groupingNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
deleted file mode 100644
index 341cbf9..0000000
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.yangutils.parser.impl.parserutils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.onosproject.yangutils.datamodel.CollisionDetector;
-import org.onosproject.yangutils.datamodel.YangModule;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
-import org.onosproject.yangutils.datamodel.YangSubModule;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yangutils.datamodel.utils.Parsable;
-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.datamodel.utils.YangConstructType.AUGMENT_DATA;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-
-/**
- * Represents a utility which provides listener utilities augment node.
- */
-public final class AugmentListenerUtil {
-
-    /**
-     * Prefix to be added to generated java file for augment node.
-     */
-    private static final String AUGMENTED = "Augmented";
-
-    /**
-     * The number of time augment has updated the same target node in same module/submodule.
-     */
-    private static int occurrenceCount = 1;
-
-    /**
-     * List of names for augment's generated java file.
-     */
-    private static List<String> augmentJavaFileNameList = new ArrayList<>();
-
-    private static final int ONE = 1;
-    private static final int TWO = 2;
-    private static final int ZERO = 0;
-
-    /**
-     * Creates an instance of augment java file name generator utility.
-     */
-    private AugmentListenerUtil() {
-    }
-
-    /**
-     * Sets the augment java file name list.
-     *
-     * @param nameList name list
-     */
-    private static void setAugmentJavaFileNameList(List<String> nameList) {
-        augmentJavaFileNameList = nameList;
-    }
-
-    /**
-     * Returns augment java file name list.
-     *
-     * @return augment java file name list
-     */
-    public static List<String> getAugmentJavaFileNameList() {
-        return augmentJavaFileNameList;
-    }
-
-    /**
-     * Sets occurrence count.
-     *
-     * @param occurrence occurrence count
-     */
-    private static void setOccurrenceCount(int occurrence) {
-        occurrenceCount = occurrence;
-    }
-
-    /**
-     * Returns occurrence count.
-     *
-     * @return occurrence count
-     */
-    private static int getOccurrenceCount() {
-        return occurrenceCount;
-    }
-
-    /**
-     * Generates name for augment node also detects collision for java file generation of augment node when
-     * augment is updating the same target node in same parent multiple times.
-     *
-     * @param curData parsable data
-     * @param targetNodes list of target nodes
-     * @param listener tree walk listener
-     * @return name for augment node
-     */
-    public static String generateNameForAugmentNode(Parsable curData, List<YangNodeIdentifier> targetNodes,
-            TreeWalkListener listener) {
-
-        String curPrefix = getParentsPrefix((YangNode) curData);
-        YangNodeIdentifier nodeId = targetNodes.get(targetNodes.size() - 1);
-        boolean isPrefix = isPrefixPresent(nodeId, curPrefix);
-        String generateName = createValidNameForAugment(nodeId, isPrefix);
-
-        if (listener.getParsedDataStack().peek() instanceof CollisionDetector) {
-            try {
-                ((CollisionDetector) listener.getParsedDataStack().peek()).detectCollidingChild(generateName,
-                        AUGMENT_DATA);
-            } catch (DataModelException e) {
-                return updateNameWhenHasMultipleOuccrrence(nodeId, isPrefix);
-            }
-        }
-
-        clearOccurrenceCount();
-        return generateName;
-    }
-
-    /**
-     * Creates a name identifier for augment.
-     *
-     * @param nodeId node identifier
-     * @param isPrefix if prefix is present or it is not equals to parent's prefix
-     * @return valid name for augment
-     */
-    public static String createValidNameForAugment(YangNodeIdentifier nodeId, boolean isPrefix) {
-        getAugmentJavaFileNameList().add(createName(nodeId, isPrefix));
-        setAugmentJavaFileNameList(getAugmentJavaFileNameList());
-        return getAugmentJavaFileNameList().get(getAugmentJavaFileNameList().size() - 1);
-    }
-
-    /**
-     * Creates name for the current augment file.
-     *
-     * @param nodeId node identifier
-     * @param isPrefix if prefix is present or it is not equals to parent's prefix
-     */
-    private static String createName(YangNodeIdentifier nodeId, boolean isPrefix) {
-        if (isPrefix) {
-            return AUGMENTED + getCapitalCase(nodeId.getPrefix()) + getCapitalCase(nodeId.getName());
-        } else {
-            return AUGMENTED + getCapitalCase(nodeId.getName());
-        }
-    }
-
-    /**
-     * Updates occurrence count of augment.
-     */
-    private static void updateOccurenceCount() {
-        int count = getOccurrenceCount();
-        count++;
-        setOccurrenceCount(count);
-    }
-
-    /**
-     * Updates the list of name when augment has occurred multiple times to update the same target node
-     * and returns a valid name for augment node's generated java file.
-     *
-     * @param nodeId YANG node identifier
-     * @param isPrefix true if a prefix is present and it is not equals to parents prefix
-     * @return valid name for augment node
-     */
-    public static String updateNameWhenHasMultipleOuccrrence(YangNodeIdentifier nodeId, boolean isPrefix) {
-        String name = "";
-        updateOccurenceCount();
-
-        if (getOccurrenceCount() == TWO) {
-            String previousAugmentsName = getAugmentJavaFileNameList().get(getAugmentJavaFileNameList().size() - ONE);
-            getAugmentJavaFileNameList().remove(ZERO);
-            getAugmentJavaFileNameList().add(previousAugmentsName + ONE);
-            //TODO: update when already contains the name.
-            name = createName(nodeId, isPrefix) + TWO;
-        } else {
-            name = createName(nodeId, isPrefix) + getOccurrenceCount();
-        }
-        getAugmentJavaFileNameList().add(name);
-        return name;
-    }
-
-    /**
-     * Resets occurrence count to one.
-     */
-    public static void clearOccurrenceCount() {
-        setOccurrenceCount(ONE);
-    }
-
-    /**
-     * Returns true if a prefix is present and it is not equals to parents prefix.
-     *
-     * @param nodeId YANG node identifier
-     * @param parentsPrefix parent's prefix
-     * @return true if a prefix is present and it is not equals to parents prefix
-     */
-    private static boolean isPrefixPresent(YangNodeIdentifier nodeId, String parentsPrefix) {
-        return nodeId.getPrefix() != null && nodeId.getPrefix() != parentsPrefix;
-    }
-
-    /**
-     * Validates whether current node in target path is valid or not.
-     *
-     * @param curNode current YANG node
-     * @param targetNodes list of target nodes
-     * @param ctx augment statement context
-     */
-    public static void validateNodeInTargetPath(YangNode curNode, List<YangNodeIdentifier> targetNodes,
-            GeneratedYangParser.AugmentStatementContext ctx) {
-
-        curNode = curNode.getChild();
-        YangNode tempNode = validateCurrentTargetNode(targetNodes, curNode);
-        if (tempNode != null) {
-            switch (tempNode.getNodeType()) {
-                case CONTAINER_NODE:
-                    break;
-                case LIST_NODE:
-                    break;
-                case CHOICE_NODE:
-                    break;
-                case CASE_NODE:
-                    break;
-                case INPUT_NODE:
-                    break;
-                case OUTPUT_NODE:
-                    break;
-                case NOTIFICATION_NODE:
-                    break;
-                default:
-                    throw parserException(ctx);
-            }
-        } else {
-            throw parserException(ctx);
-        }
-    }
-
-    /**
-     * Validates whether nodes in target node list are valid or not.
-     *
-     * @param targetNodes target node
-     * @param curNode YANG node
-     * @return true or false
-     */
-    private static YangNode validateCurrentTargetNode(List<YangNodeIdentifier> targetNodes, YangNode curNode) {
-        YangNode tempNode = null;
-        while (curNode != null) {
-            tempNode = curNode;
-            for (int i = 1; i < targetNodes.size(); i++) {
-                if (curNode.getName().equals(targetNodes.get(i).getName())) {
-                    if (curNode.getChild() != null && targetNodes.size() - 1 != i) {
-                        curNode = curNode.getChild();
-                    } else if (curNode.getChild() != null && targetNodes.size() - 1 == i) {
-                        return curNode;
-                    } else if (curNode.getChild() == null && targetNodes.size() - 1 == i) {
-                        return curNode;
-                    } else {
-                        break;
-                    }
-                } else {
-                    curNode = tempNode;
-                    break;
-                }
-            }
-            curNode = curNode.getNextSibling();
-        }
-        return null;
-    }
-
-    /**
-     * Builds parser exception.
-     *
-     * @param ctx augment statement context
-     * @return parser exception
-     */
-    public static ParserException parserException(GeneratedYangParser.AugmentStatementContext ctx) {
-        int line = ctx.getStart().getLine();
-        int charPositionInLine = ctx.getStart().getCharPositionInLine();
-        ParserException exception = new ParserException("invalid target node path.");
-        exception.setLine(line);
-        exception.setCharPosition(charPositionInLine);
-        return exception;
-    }
-
-    /**
-     * Returns parent nodes prefix.
-     *
-     * @param curNode current YANG node
-     * @return parent nodes prefix
-     */
-    public static String getParentsPrefix(YangNode curNode) {
-        String curPrefix = null;
-        if (curNode instanceof YangModule) {
-            curPrefix = ((YangModule) curNode).getPrefix();
-        } else if (curNode instanceof YangSubModule) {
-            curPrefix = ((YangSubModule) curNode).getPrefix();
-        }
-        return curPrefix;
-    }
-}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java
index 4eb22e5..a0f1b1d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java
@@ -19,12 +19,11 @@
 import java.util.Objects;
 
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
 
 /**
  * Represents YANG file information.
  */
-class YangFileInfo {
+public class YangFileInfo {
 
     /**
      * YANG file name.
@@ -32,26 +31,11 @@
     private String yangFileName;
 
     /**
-     * YANG file revision.
-     */
-    private String revision;
-
-    /**
      * Data model node after parsing YANG file.
      */
     private YangNode rootNode;
 
     /**
-     * Resolution status of YANG file.
-     */
-    private ResolvableStatus resolvableStatus;
-
-    /**
-     * Location for serialized files in case of inter-jar dependencies.
-     */
-    private String serializedFile;
-
-    /**
      * Flag to know if the root node require to be translated.
      */
     private boolean isForTranslator = true;
@@ -79,7 +63,7 @@
      *
      * @return yangFileName YANG file name
      */
-    String getYangFileName() {
+    public String getYangFileName() {
         return yangFileName;
     }
 
@@ -88,70 +72,16 @@
      *
      * @param yangFileName YANG file name
      */
-    void setYangFileName(String yangFileName) {
+    public void setYangFileName(String yangFileName) {
         this.yangFileName = yangFileName;
     }
 
     /**
-     * Returns the revision of YANG file.
-     *
-     * @return revision of YANG file
-     */
-    public String getRevision() {
-        return revision;
-    }
-
-    /**
-     * Sets the revision of YANG file.
-     *
-     * @param revision revision of YANG file
-     */
-    public void setRevision(String revision) {
-        this.revision = revision;
-    }
-
-    /**
-     * Returns the resolution status of YANG file.
-     *
-     * @return resolution status of YANG file
-     */
-    public ResolvableStatus getResolvableStatus() {
-        return resolvableStatus;
-    }
-
-    /**
-     * Sets the resolution status of YANG file.
-     *
-     * @param resolvableStatus resolution status of YANG file
-     */
-    public void setResolvableStatus(ResolvableStatus resolvableStatus) {
-        this.resolvableStatus = resolvableStatus;
-    }
-
-    /**
-     * Returns serialized file of datamodel.
-     *
-     * @return the serialized file of datamodel
-     */
-    public String getSerializedFile() {
-        return serializedFile;
-    }
-
-    /**
-     * Sets serialized file of datamodel.
-     *
-     * @param serializedFile serialized file of datamodel
-     */
-    public void setSerializedFile(String serializedFile) {
-        this.serializedFile = serializedFile;
-    }
-
-    /**
      * Returns true if node need to be translated.
      *
      * @return isForTranslator true if node need to be translated
      */
-    boolean isForTranslator() {
+    public boolean isForTranslator() {
         return isForTranslator;
     }
 
@@ -160,7 +90,7 @@
      *
      * @param isForTranslator true if node need to be translated
      */
-    void setForTranslator(boolean isForTranslator) {
+    public void setForTranslator(boolean isForTranslator) {
         this.isForTranslator = isForTranslator;
     }
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
index e27468b..28e77c5 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
@@ -23,6 +23,7 @@
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -32,10 +33,10 @@
 import org.apache.maven.model.Resource;
 import org.apache.maven.project.MavenProject;
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
 import org.slf4j.Logger;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.parseJarFile;
 import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
 import static org.onosproject.yangutils.utils.UtilConstants.JAR;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
@@ -48,13 +49,14 @@
 /**
  * Represents YANG plugin utilities.
  */
-final class YangPluginUtils {
+public final class YangPluginUtils {
 
     private static final Logger log = getLogger(YangPluginUtils.class);
 
     private static final String TARGET_RESOURCE_PATH = SLASH + TEMP + SLASH + YANG_RESOURCES + SLASH;
 
     private static final String SERIALIZED_FILE_EXTENSION = ".ser";
+    private static final String YANG_META_DATA = "YangMetaData";
 
     private YangPluginUtils() {
     }
@@ -124,8 +126,8 @@
      * @param operation   true if need to add to resource
      * @throws IOException when fails to do IO operations
      */
-    static void serializeDataModel(String directory, Set<YangFileInfo> fileInfoSet,
-                                   MavenProject project, boolean operation) throws IOException {
+    public static void serializeDataModel(String directory, Set<YangFileInfo> fileInfoSet,
+                                          MavenProject project, boolean operation) throws IOException {
 
         String serFileDirPath = directory + TARGET_RESOURCE_PATH;
         File dir = new File(serFileDirPath);
@@ -135,17 +137,17 @@
             addToProjectResource(directory + SLASH + TEMP + SLASH, project);
         }
 
+        Set<YangNode> nodes = new HashSet<>();
         for (YangFileInfo fileInfo : fileInfoSet) {
-
-            String serFileName = serFileDirPath + fileInfo.getRootNode().getName()
-                    + SERIALIZED_FILE_EXTENSION;
-            fileInfo.setSerializedFile(serFileName);
-            FileOutputStream fileOutputStream = new FileOutputStream(serFileName);
-            ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
-            objectOutputStream.writeObject(fileInfo.getRootNode());
-            objectOutputStream.close();
-            fileOutputStream.close();
+            nodes.add(fileInfo.getRootNode());
         }
+
+        String serFileName = serFileDirPath + YANG_META_DATA + SERIALIZED_FILE_EXTENSION;
+        FileOutputStream fileOutputStream = new FileOutputStream(serFileName);
+        ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
+        objectOutputStream.writeObject(nodes);
+        objectOutputStream.close();
+        fileOutputStream.close();
     }
 
     /**
@@ -203,7 +205,7 @@
         List<String> dependenciesJarPaths = resolveDependencyJarPath(project, localRepository, remoteRepos);
         List<YangNode> resolvedDataModelNodes = new ArrayList<>();
         for (String dependency : dependenciesJarPaths) {
-            resolvedDataModelNodes.addAll(DataModelUtils.parseJarFile(dependency, directory));
+            resolvedDataModelNodes.addAll(parseJarFile(dependency, directory));
         }
         return resolvedDataModelNodes;
     }
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 1422d27..ab3c6e1 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
@@ -285,7 +285,7 @@
     /**
      * Creates YANG nodes set.
      */
-    void createYangNodeSet() {
+    public void createYangNodeSet() {
         for (YangFileInfo yangFileInfo : getYangFileInfoSet()) {
             getYangNodeSet().add(yangFileInfo.getRootNode());
         }
@@ -383,7 +383,7 @@
      *
      * @return the YANG file info set
      */
-    Set<YangFileInfo> getYangFileInfoSet() {
+    public Set<YangFileInfo> getYangFileInfoSet() {
         return yangFileInfoSet;
     }
 
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 03b0382..c737175 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
@@ -22,10 +22,10 @@
 public class InvalidNodeForTranslatorException extends RuntimeException {
 
     private static final long serialVersionUID = 20160311L;
-    private String fileName;
+    private transient String fileName;
 
     /**
-     * Create a new exception.
+     * Creates a new exception.
      */
     public InvalidNodeForTranslatorException() {
         super();
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 cf2c07d..a033a00 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
@@ -22,7 +22,7 @@
 public class TranslatorException extends RuntimeException {
 
     private static final long serialVersionUID = 20160311L;
-    private String fileName;
+    private transient String fileName;
 
     /**
      * Create a new translator exception.
@@ -44,7 +44,7 @@
      * Creates a new translator exception from given message and cause.
      *
      * @param message the detail of exception in string
-     * @param cause underlying cause of the error
+     * @param cause   underlying cause of the error
      */
     public TranslatorException(final String message, final Throwable cause) {
         super(message, cause);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
index ffa7b21..a5a644a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
@@ -18,6 +18,7 @@
 
 import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
 import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.isTypeLeafref;
@@ -70,6 +71,11 @@
     private boolean isLongConflict;
 
     /**
+     * If conflict occurs.
+     */
+    private boolean isShortConflict;
+
+    /**
      * Creates a java attribute info object.
      */
     private JavaAttributeInfo() {
@@ -244,6 +250,24 @@
     }
 
     /**
+     * Returns true if conflict between short and uint8.
+     *
+     * @return true if conflict between short and uint8
+     */
+    public boolean isShortConflict() {
+        return isShortConflict;
+    }
+
+    /**
+     * Sets true if conflict between short and uint8.
+     *
+     * @param shortConflict true if conflict between short and uint8
+     */
+    public void setShortConflict(boolean shortConflict) {
+        isShortConflict = shortConflict;
+    }
+
+    /**
      * Returns java attribute info.
      *
      * @param importInfo        java qualified type info
@@ -253,7 +277,7 @@
      * @param isListAttribute   is list attribute
      * @return java attribute info.
      */
-    public static JavaAttributeInfo getAttributeInfoForTheData(JavaQualifiedTypeInfoTranslator importInfo,
+    public static JavaAttributeInfo getAttributeInfoForTheData(JavaQualifiedTypeInfo importInfo,
                                                                String attributeName,
                                                                YangType<?> attributeType, boolean isQualifiedAccess,
                                                                boolean isListAttribute) {
@@ -263,7 +287,7 @@
         }
         attributeName = isTypeNameLeafref(attributeName, attributeType);
         JavaAttributeInfo newAttr = new JavaAttributeInfo();
-        newAttr.setImportInfo(importInfo);
+        newAttr.setImportInfo((JavaQualifiedTypeInfoTranslator) importInfo);
         newAttr.setAttributeName(attributeName);
         newAttr.setAttributeType(attributeType);
         newAttr.setIsQualifiedAccess(isQualifiedAccess);
@@ -275,11 +299,11 @@
     /**
      * Returns java attribute info.
      *
-     * @param importInfo        java qualified type info
-     * @param attributeName     attribute name
-     * @param attributeType     attribute type
-     * @param isQualifiedAccess is the attribute a qualified access
-     * @param isListAttribute   is list attribute
+     * @param importInfo         java qualified type info
+     * @param attributeName      attribute name
+     * @param attributeType      attribute type
+     * @param isQualifiedAccess  is the attribute a qualified access
+     * @param isListAttribute    is list attribute
      * @param compilerAnnotation compiler annotation
      * @return java attribute info.
      */
@@ -288,7 +312,7 @@
                                                                boolean isQualifiedAccess, boolean isListAttribute,
                                                                YangCompilerAnnotation compilerAnnotation) {
         JavaAttributeInfo newAttr = getAttributeInfoForTheData(importInfo, attributeName, attributeType,
-                                                               isQualifiedAccess, isListAttribute);
+                isQualifiedAccess, isListAttribute);
 
         newAttr.setCompilerAnnotation(compilerAnnotation);
 
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 671635e..089a1b3 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
@@ -17,22 +17,12 @@
 package org.onosproject.yangutils.translator.tojava;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.onosproject.yangutils.datamodel.TraversalType;
-import org.onosproject.yangutils.datamodel.YangAugment;
-import org.onosproject.yangutils.datamodel.YangCase;
-import org.onosproject.yangutils.datamodel.YangChoice;
 import org.onosproject.yangutils.datamodel.YangInput;
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangLeafList;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNodeType;
 import org.onosproject.yangutils.datamodel.YangOutput;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
 import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
@@ -41,11 +31,6 @@
 import static org.onosproject.yangutils.datamodel.TraversalType.PARENT;
 import static org.onosproject.yangutils.datamodel.TraversalType.ROOT;
 import static org.onosproject.yangutils.datamodel.TraversalType.SIBILING;
-import static org.onosproject.yangutils.datamodel.utils.GeneratedLanguage.JAVA_GENERATION;
-import static org.onosproject.yangutils.translator.tojava.YangDataModelFactory.getYangCaseNode;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getAugmentClassName;
-import static org.onosproject.yangutils.utils.UtilConstants.CASE;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
 
 /**
@@ -53,7 +38,6 @@
  */
 public final class JavaCodeGeneratorUtil {
 
-    private static final Log log = LogFactory.getLog(JavaCodeGeneratorUtil.class);
     /**
      * Current YANG node.
      */
@@ -64,8 +48,6 @@
      */
     private static YangNode rootNode;
 
-    private static int calls = 0;
-
     /**
      * Creates a java code generator utility object.
      */
@@ -106,11 +88,6 @@
         TraversalType curTraversal = ROOT;
 
         while (codeGenNode != null) {
-            if (codeGenNode instanceof YangAugment) {
-                if (((YangAugment) codeGenNode).getAugmentedNode() instanceof YangChoice) {
-                    addCaseNodeToChoiceTarget((YangAugment) codeGenNode);
-                }
-            }
             if (curTraversal != PARENT) {
                 if (!(codeGenNode instanceof JavaCodeGenerator)) {
                     throw new TranslatorException("Unsupported node to generate code");
@@ -129,9 +106,7 @@
                     }
                     continue;
                 } catch (Exception e) {
-                    if (log.isDebugEnabled()) {
-                        e.printStackTrace();
-                    }
+                    e.printStackTrace();
                     close(codeGenNode, yangPlugin);
                     throw new TranslatorException(e.getMessage());
                 }
@@ -144,9 +119,7 @@
                 try {
                     generateCodeExit(codeGenNode, yangPlugin);
                 } catch (Exception e) {
-                    if (log.isDebugEnabled()) {
-                        e.printStackTrace();
-                    }
+                    e.printStackTrace();
                     close(codeGenNode, yangPlugin);
                     throw new TranslatorException(e.getMessage());
                 }
@@ -156,9 +129,7 @@
                 try {
                     generateCodeExit(codeGenNode, yangPlugin);
                 } catch (Exception e) {
-                    if (log.isDebugEnabled()) {
-                        e.printStackTrace();
-                    }
+                    e.printStackTrace();
                     close(codeGenNode, yangPlugin);
                     throw new TranslatorException(e.getMessage());
                 }
@@ -381,49 +352,4 @@
         return null;
     }
 
-    /**
-     * Adds a case node in augment when augmenting a choice node.
-     *
-     * @param augment augment node
-     */
-    private static void addCaseNodeToChoiceTarget(YangAugment augment) {
-        calls++;
-        if (calls == 1) {
-            YangCase javaCase = getYangCaseNode(JAVA_GENERATION);
-
-            YangPluginConfig pluginConfig = new YangPluginConfig();
-            javaCase.setName(getAugmentClassName(augment, pluginConfig) + getCapitalCase(CASE));
-
-            if (augment.getListOfLeaf() != null) {
-                for (YangLeaf leaf : augment.getListOfLeaf()) {
-                    javaCase.addLeaf(leaf);
-                }
-                augment.getListOfLeaf().clear();
-            }
-            if (augment.getListOfLeafList() != null) {
-                for (YangLeafList leafList : augment.getListOfLeafList()) {
-                    javaCase.addLeafList(leafList);
-                }
-                augment.getListOfLeafList().clear();
-            }
-            YangNode child = augment.getChild();
-            List<YangNode> childNodes = new ArrayList<>();
-            while (child != null) {
-                child.setParent(javaCase);
-                childNodes.add(child);
-                child = child.getNextSibling();
-            }
-            augment.setChild(null);
-            try {
-                augment.addChild(javaCase);
-                for (YangNode node : childNodes) {
-                    node.setNextSibling(null);
-                    node.setPreviousSibling(null);
-                    javaCase.addChild(node);
-                }
-            } catch (DataModelException e) {
-                throw new TranslatorException("Failed to add child nodes to case node of augment " + augment.getName());
-            }
-        }
-    }
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoContainer.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoContainer.java
deleted file mode 100644
index 7791773..0000000
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoContainer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2016 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.yangutils.translator.tojava;
-
-/**
- * Maintain the java qualified access details for an attribute or a class.
- */
-public interface JavaQualifiedTypeInfoContainer {
-
-    /**
-     * Obtain the java qualified details.
-     *
-     * @return java qualified type details
-     */
-    JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo();
-
-    /**
-     * Assign the qualified type info.
-     *
-     * @param typeInfo qualified type information
-     */
-    void setJavaQualifiedInfo(JavaQualifiedTypeInfoTranslator typeInfo);
-}
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 63aa535..420dc27 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
@@ -21,10 +21,10 @@
 
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType;
 import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 
 import com.google.common.base.MoreObjects;
 
@@ -42,6 +42,7 @@
      * Creates a java qualified type info object.
      */
     public JavaQualifiedTypeInfoTranslator() {
+        super();
     }
 
     /**
@@ -87,7 +88,7 @@
      */
     public static void updateLeavesJavaQualifiedInfo(JavaLeafInfoContainer leaf) {
 
-        JavaQualifiedTypeInfoTranslator importInfo = leaf.getJavaQualifiedInfo();
+        JavaQualifiedTypeInfoTranslator importInfo = (JavaQualifiedTypeInfoTranslator) leaf.getJavaQualifiedInfo();
 
         if (leaf.getDataType() == null) {
             throw new TranslatorException("missing data type of leaf " + leaf.getName());
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 d17c081..5068458 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
@@ -25,9 +25,9 @@
 import org.onosproject.yangutils.datamodel.YangEnum;
 import org.onosproject.yangutils.datamodel.YangEnumeration;
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeTranslator;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
@@ -229,7 +229,7 @@
      * @return java attribute
      */
     public JavaAttributeInfo getJavaAttributeForEnum(YangPluginConfig pluginConfig) {
-        YangJavaTypeTranslator<?> javaType = new YangJavaTypeTranslator<>();
+        YangJavaTypeTranslator javaType = new YangJavaTypeTranslator();
         javaType.setDataType(INT32);
         javaType.setDataTypeName(INT);
         javaType.updateJavaQualifiedInfo(pluginConfig.getConflictResolver());
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 1988e5a..37ce7ee 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
@@ -30,6 +30,7 @@
 import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangSubModule;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaGroupingTranslator;
@@ -1584,7 +1585,7 @@
             addLeafIdAttributes(newAttrInfo, leafCount, pluginConfig);
         }
         if (!newAttrInfo.isIntConflict() &&
-                !newAttrInfo.isLongConflict()) {
+                !newAttrInfo.isLongConflict() && !newAttrInfo.isShortConflict()) {
             if ((getGeneratedTempFiles() & GETTER_FOR_CLASS_MASK) != 0) {
                 addGetterImpl(newAttrInfo, pluginConfig);
             }
@@ -1863,8 +1864,9 @@
      * @return status of the qualified access to the attribute
      */
     boolean getIsQualifiedAccessOrAddToImportList(
-            JavaQualifiedTypeInfoTranslator importInfo) {
-        return getJavaImportData().addImportInfo(importInfo, getGeneratedJavaClassName(),
+            JavaQualifiedTypeInfo importInfo) {
+        return getJavaImportData().addImportInfo((JavaQualifiedTypeInfoTranslator) importInfo,
+                getGeneratedJavaClassName(),
                 getJavaFileInfo().getPackage());
     }
 
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 b8f12e6..62c6390 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
@@ -29,10 +29,12 @@
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeTranslator;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_FOR_TYPE_MASK;
@@ -47,6 +49,7 @@
 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getTypeConstructorStringAndJavaDoc;
 import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
 import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.LONG_TYPE_CONFLICT;
+import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.SHORT_TYPE_CONFLICT;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
 import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
@@ -100,6 +103,16 @@
     private int uLongIndex = 0;
 
     /**
+     * short index in type list.
+     */
+    private int shortIndex = 0;
+
+    /**
+     * Uint8 index in type list.
+     */
+    private int uInt8Index = 0;
+
+    /**
      * Temporary file handle for of string method of class.
      */
     private File ofStringImplTempFileHandle;
@@ -130,6 +143,16 @@
     private JavaAttributeInfo longAttribute;
 
     /**
+     * Java attribute for short.
+     */
+    private JavaAttributeInfo shortAttribute;
+
+    /**
+     * Java attribute for uint8.
+     */
+    private JavaAttributeInfo uInt8Attribute;
+
+    /**
      * Java attribute for uInt.
      */
     private JavaAttributeInfo uIntAttribute;
@@ -270,7 +293,7 @@
      * @return java attribute
      */
     private JavaAttributeInfo getAttributeForType(YangType yangType, YangPluginConfig pluginConfig) {
-        YangJavaTypeTranslator<?> javaType = (YangJavaTypeTranslator<?>) yangType;
+        YangJavaTypeTranslator javaType = (YangJavaTypeTranslator) yangType;
         javaType.updateJavaQualifiedInfo(pluginConfig.getConflictResolver());
         String typeName = javaType.getDataTypeName();
         typeName = getCamelCase(typeName, pluginConfig.getConflictResolver());
@@ -290,12 +313,19 @@
      * @throws IOException IO operation fail
      */
     private void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo javaAttributeInfo,
-            YangPluginConfig pluginConfig, List<YangType<?>> typeList)
+                                                         YangPluginConfig pluginConfig, List<YangType<?>> typeList)
             throws IOException {
 
         YangDataTypes attrType = javaAttributeInfo.getAttributeType().getDataType();
 
-        if (attrType == INT32 || attrType == UINT16) {
+        if (attrType == INT16 || attrType == UINT8) {
+            boolean isShortConflict = validateForConflictingShortTypes(typeList);
+            javaAttributeInfo.setShortConflict(isShortConflict);
+            updateAttributeCondition(javaAttributeInfo);
+            if (!isShortConflict) {
+                addMethodsWhenNoConflictingTypes(javaAttributeInfo, pluginConfig);
+            }
+        } else if (attrType == INT32 || attrType == UINT16) {
             boolean isIntConflict = validateForConflictingIntTypes(typeList);
             javaAttributeInfo.setIntConflict(isIntConflict);
             updateAttributeCondition(javaAttributeInfo);
@@ -324,7 +354,7 @@
      * @throws IOException when fails to do IO operations
      */
     private void addMethodsWhenNoConflictingTypes(JavaAttributeInfo javaAttributeInfo,
-            YangPluginConfig pluginConfig)
+                                                  YangPluginConfig pluginConfig)
             throws IOException {
         if ((getGeneratedTempFiles() & OF_STRING_IMPL_MASK) != 0) {
             addOfStringMethod(javaAttributeInfo, pluginConfig);
@@ -385,6 +415,28 @@
                 }
             }
         }
+
+        attr = getShortAttribute();
+        if (attr != null) {
+            attr = getUInt8Attribute();
+        }
+        if (attr != null) {
+            if (attr.isShortConflict()) {
+                if (getShortIndex() < getUInt8Index()) {
+                    appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getShortAttribute(),
+                            getGeneratedJavaClassName(), pluginConfig)
+                            + NEW_LINE);
+                    addGetterImpl(getShortAttribute(), pluginConfig);
+                    addFromStringMethod(getShortAttribute(), pluginConfig);
+                } else {
+                    appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getUInt8Attribute(),
+                            getGeneratedJavaClassName(), pluginConfig)
+                            + NEW_LINE);
+                    addGetterImpl(getUInt8Attribute(), pluginConfig);
+                    addFromStringMethod(getUInt8Attribute(), pluginConfig);
+                }
+            }
+        }
     }
 
     /**
@@ -458,6 +510,19 @@
                                 < getULongIndex()) + NEW_LINE);
             }
         }
+        attr = getShortAttribute();
+        if (attr != null) {
+            attr = getUInt8Attribute();
+        }
+        if (attr != null) {
+            if (attr.isShortConflict()) {
+                appendToFile(getConstructorForTypeTempFileHandle(), getTypeConstructorStringAndJavaDoc(
+                        getShortAttribute(),
+                        getUInt8Attribute(), getGeneratedJavaClassName(), pluginConfig, SHORT_TYPE_CONFLICT,
+                        getShortIndex()
+                                < getUInt8Index()) + NEW_LINE);
+            }
+        }
     }
 
     /**
@@ -555,6 +620,42 @@
     }
 
     /**
+     * Returns short type index from type list.
+     *
+     * @return short type index from type list
+     */
+    public int getShortIndex() {
+        return shortIndex;
+    }
+
+    /**
+     * Sets short type index from type list.
+     *
+     * @param shortIndex short type index from type list.
+     */
+    private void setShortIndex(int shortIndex) {
+        this.shortIndex = shortIndex;
+    }
+
+    /**
+     * Returns uInt type index from type list.
+     *
+     * @return uInt type index from type list
+     */
+    public int getUInt8Index() {
+        return uInt8Index;
+    }
+
+    /**
+     * Sets uInt8 type index from type list.
+     *
+     * @param uInt8Index uInt8 type index from type list.
+     */
+    private void setUInt8Index(int uInt8Index) {
+        this.uInt8Index = uInt8Index;
+    }
+
+    /**
      * Returns int type index from type list.
      *
      * @return int type index from type list
@@ -650,6 +751,29 @@
     }
 
     /**
+     * Validates conflict for int and uInt.
+     *
+     * @param typeList type list
+     * @return true if conflict is there
+     */
+    private boolean validateForConflictingShortTypes(List<YangType<?>> typeList) {
+        boolean isShortPresent = false;
+        boolean isUInt8Present = false;
+        for (YangType type : typeList) {
+            if (type.getDataType().equals(INT16)) {
+                setShortIndex(typeList.indexOf(type));
+                isShortPresent = true;
+            }
+            if (type.getDataType().equals(UINT8)) {
+                setUInt8Index(typeList.indexOf(type));
+                isUInt8Present = true;
+            }
+        }
+
+        return isShortPresent && isUInt8Present;
+    }
+
+    /**
      * Validates conflict for long and uLong.
      *
      * @param typeList type list
@@ -695,6 +819,14 @@
             }
 
         }
+        if (javaAttributeInfo.isShortConflict()) {
+            if (javaAttributeInfo.getAttributeType().getDataType() == UINT8) {
+                setUInt8Attribute(javaAttributeInfo);
+            } else if (javaAttributeInfo.getAttributeType().getDataType() == INT16) {
+                setShortAttribute(javaAttributeInfo);
+            }
+
+        }
     }
 
     /**
@@ -768,4 +900,41 @@
     private void setULongAttribute(JavaAttributeInfo uLongAttribute) {
         this.uLongAttribute = uLongAttribute;
     }
+
+    /**
+     * Returns attribute for uInt8.
+     *
+     * @return attribute for uInt8
+     */
+    public JavaAttributeInfo getUInt8Attribute() {
+        return uInt8Attribute;
+    }
+
+    /**
+     * Sets attribute for uInt8.
+     *
+     * @param uInt8Attribute attribute for uInt8
+     */
+    private void setUInt8Attribute(JavaAttributeInfo uInt8Attribute) {
+        this.uInt8Attribute = uInt8Attribute;
+    }
+
+    /**
+     * Returns attribute for short.
+     *
+     * @return attribute for short
+     */
+    public JavaAttributeInfo getShortAttribute() {
+        return shortAttribute;
+    }
+
+    /**
+     * Sets attribute for short.
+     *
+     * @param shortAttribute attribute for short
+     */
+    private void setShortAttribute(JavaAttributeInfo shortAttribute) {
+        this.shortAttribute = shortAttribute;
+    }
+
 }
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TraversalType.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TraversalType.java
deleted file mode 100644
index 35f529a..0000000
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TraversalType.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.yangutils.translator.tojava;
-
-/**
- * Represents data model tree traversal types.
- */
-public enum TraversalType {
-
-    /**
-     * Start of traversal at the tree root.
-     */
-    ROOT,
-
-    /**
-     * Child node traversal.
-     */
-    CHILD,
-
-    /**
-     * Sibling node traversal.
-     */
-    SIBLING,
-
-    /**
-     * Parent node traversal.
-     */
-    PARENT
-}
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 eb02fd7..1ea7f48 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
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+
 import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
 import org.onosproject.yangutils.datamodel.YangAtomicPath;
 import org.onosproject.yangutils.datamodel.YangAugment;
@@ -31,13 +32,13 @@
 import org.onosproject.yangutils.datamodel.YangSubModule;
 import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
 import org.onosproject.yangutils.datamodel.YangTypeHolder;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
 import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugmentTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumerationTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModuleTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModuleTranslator;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.isRpcChildNodePresent;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
@@ -508,7 +509,8 @@
         String name = getCapitalCase(getCamelCase(yangNodeIdentifier.getName(), yangPluginConfig
                 .getConflictResolver()));
         if (yangNodeIdentifier.getPrefix() != null) {
-            return AUGMENTED + getCapitalCase(yangNodeIdentifier.getPrefix()) + name;
+            return AUGMENTED + getCapitalCase(getCamelCase(yangNodeIdentifier.getPrefix(), yangPluginConfig
+                    .getConflictResolver())) + name;
         } else {
             return AUGMENTED + name;
         }
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 d07aaac..49f2f41 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
@@ -17,7 +17,7 @@
 
 import org.onosproject.yangutils.datamodel.YangType;
 import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
-import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoContainer;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfoContainer;
 
 /**
  * Represent java based identification of the YANG leaves.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
index ad3de56..909c6f4 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
@@ -16,13 +16,11 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
-import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoContainer;
 
 /**
  * Represent java based identification of the YANG leaves.
  */
-interface JavaQualifiedTypeResolver
-        extends JavaQualifiedTypeInfoContainer {
+interface JavaQualifiedTypeResolver {
 
     /**
      * updates the qualified access details of the type.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafListTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafListTranslator.java
index 08c4fb3..c79d86b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafListTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafListTranslator.java
@@ -16,8 +16,8 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaLeafList;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.updateLeavesJavaQualifiedInfo;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -56,16 +56,6 @@
         updateLeavesJavaQualifiedInfo(this);
     }
 
-    @Override
-    public JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo() {
-        return (JavaQualifiedTypeInfoTranslator) javaQualifiedTypeInfo;
-    }
-
-    @Override
-    public void setJavaQualifiedInfo(JavaQualifiedTypeInfoTranslator typeInfo) {
-        javaQualifiedTypeInfo = typeInfo;
-    }
-
     /**
      * Returns java naming conflict resolve configurations.
      *
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafTranslator.java
index d7dfb9b..a846e59 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafTranslator.java
@@ -16,8 +16,8 @@
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaLeaf;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
 
 import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.updateLeavesJavaQualifiedInfo;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -42,17 +42,6 @@
     }
 
     @Override
-    public JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo() {
-        return (JavaQualifiedTypeInfoTranslator) javaQualifiedTypeInfo;
-    }
-
-    @Override
-    public void setJavaQualifiedInfo(JavaQualifiedTypeInfoTranslator typeInfo) {
-        javaQualifiedTypeInfo = typeInfo;
-
-    }
-
-    @Override
     public String getJavaName(YangToJavaNamingConflictUtil conflictResolveConfig) {
         return getCamelCase(getName(), conflictResolveConfig);
     }
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 774e422..0f46f76 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
@@ -18,6 +18,7 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNotification;
 import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaModule;
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 4f403c9..009a86f 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
@@ -18,15 +18,16 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+
 import org.onosproject.yangutils.datamodel.YangBelongsTo;
 import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNotification;
+import org.onosproject.yangutils.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;
 
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 cb8d3ba..911e0c4 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
@@ -15,7 +15,7 @@
  */
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
-import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaType;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
 import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
@@ -26,15 +26,11 @@
 
 /**
  * Represents java information corresponding to the YANG type.
- *
- * @param <T> generic parameter for YANG java type
  */
-public class YangJavaTypeTranslator<T>
-        extends YangType<T>
+public class YangJavaTypeTranslator
+        extends YangJavaType
         implements JavaQualifiedTypeResolver {
 
-    private JavaQualifiedTypeInfoTranslator javaQualifiedAccess;
-
     /**
      * Create a YANG leaf object with java qualified access details.
      */
@@ -45,7 +41,7 @@
 
     @Override
     public void updateJavaQualifiedInfo(YangToJavaNamingConflictUtil conflictResolver) {
-        JavaQualifiedTypeInfoTranslator importInfo = getJavaQualifiedInfo();
+        JavaQualifiedTypeInfoTranslator importInfo = (JavaQualifiedTypeInfoTranslator) getJavaQualifiedInfo();
 
         /*
          * Type is added as an attribute in the class.
@@ -58,7 +54,7 @@
              */
             importInfo.setClassInfo(className);
             String classPkg = getJavaImportPackage(this,
-                    false,  conflictResolver);
+                    false, conflictResolver);
             if (classPkg == null) {
                 throw new TranslatorException("import package cannot be null when the class is used");
             }
@@ -77,13 +73,4 @@
         setJavaQualifiedInfo(importInfo);
     }
 
-    @Override
-    public JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo() {
-        return javaQualifiedAccess;
-    }
-
-    @Override
-    public void setJavaQualifiedInfo(JavaQualifiedTypeInfoTranslator typeInfo) {
-        javaQualifiedAccess = typeInfo;
-    }
 }
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 da23e83..60191de 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;
 
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 6b4da44..ca0dd02 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
@@ -60,8 +60,12 @@
 import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
 import static org.onosproject.yangutils.utils.UtilConstants.SET;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE_ATTR;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MAX_RANGE_ATTR;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MIN_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE_ATTR;
 import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE_ATTR;
@@ -114,7 +118,7 @@
      * @param javaAttributeName    name of the attribute
      * @param isList               is list attribute
      * @param attributeAccessType  attribute access type
-     * @param compilerAnnotation compiler annotation
+     * @param compilerAnnotation   compiler annotation
      * @return the textual java code for attribute definition in class
      */
     public static String getJavaAttributeDefinition(String javaAttributeTypePkg, String javaAttributeType,
@@ -318,6 +322,24 @@
     }
 
     /**
+     * Adds attribute for long ranges.
+     *
+     * @param modifier modifier for attribute
+     * @param addFirst if need to be added first
+     * @return attribute for long ranges
+     */
+    static String addStaticAttributeShortRange(String modifier, boolean addFirst) {
+        if (addFirst) {
+            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + SHORT_MIN_RANGE_ATTR +
+                    FOUR_SPACE_INDENTATION +
+                    modifier + SPACE + SHORT_MAX_RANGE_ATTR;
+        } else {
+            return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + UINT8_MIN_RANGE_ATTR +
+                    FOUR_SPACE_INDENTATION + modifier + SPACE + UINT8_MAX_RANGE_ATTR;
+        }
+    }
+
+    /**
      * Returns operation type enum.
      *
      * @return operation type enum
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 dcca748..43946f7 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
@@ -206,7 +206,7 @@
      * @throws IOException when fails to write in file
      */
     public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode,
-            boolean isAttrPresent)
+                                             boolean isAttrPresent)
             throws IOException {
 
         JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -376,7 +376,7 @@
      */
 
     public static File generateBuilderClassFile(File file, YangNode curNode,
-            boolean isAttrPresent)
+                                                boolean isAttrPresent)
             throws IOException {
 
         JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -490,7 +490,7 @@
      * @throws IOException when fails to write in file
      */
     public static File generateDefaultClassFile(File file, YangNode curNode, boolean isAttrPresent,
-            List<String> imports)
+                                                List<String> imports)
             throws IOException {
 
         JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -806,6 +806,7 @@
 
         boolean isIntConflict = false;
         boolean isLongConflict = false;
+        boolean isShortConflict = false;
         JavaAttributeInfo intAttr = tempJavaTypeFragmentFiles.getIntAttribute();
         if (intAttr == null) {
             intAttr = tempJavaTypeFragmentFiles.getUIntAttribute();
@@ -816,13 +817,20 @@
             longAttr = tempJavaTypeFragmentFiles.getULongAttribute();
         }
 
+        JavaAttributeInfo shortAttr = tempJavaTypeFragmentFiles.getShortAttribute();
+        if (shortAttr == null) {
+            shortAttr = tempJavaTypeFragmentFiles.getUInt8Attribute();
+        }
+
         if (intAttr != null) {
             isIntConflict = intAttr.isIntConflict();
         }
         if (longAttr != null) {
             isLongConflict = longAttr.isLongConflict();
         }
-
+        if (shortAttr != null) {
+            isShortConflict = shortAttr.isShortConflict();
+        }
         if (isLongConflict) {
             imports.add(tempJavaTypeFragmentFiles.getJavaImportData().getBigIntegerImport());
             sort(imports);
@@ -845,6 +853,11 @@
                         tempJavaTypeFragmentFiles.getLongIndex() < tempJavaTypeFragmentFiles.getULongIndex()));
             }
 
+            if (isShortConflict) {
+                insertDataIntoJavaFile(file, JavaCodeSnippetGen.addStaticAttributeShortRange(PRIVATE,
+                        tempJavaTypeFragmentFiles.getShortIndex() < tempJavaTypeFragmentFiles.getUInt8Index()));
+            }
+
             insertDataIntoJavaFile(file,
                     NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
                             ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
@@ -914,6 +927,9 @@
             if (isLongConflict) {
                 methods.add(getRangeValidatorMethodForUnion(BIG_INTEGER));
             }
+            if (isShortConflict) {
+                methods.add(getRangeValidatorMethodForUnion(INT));
+            }
 
         } catch (IOException e) {
             throw new IOException("No data found in temporary java code fragment files for " + className
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 a816234..82cff15 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
@@ -45,11 +45,11 @@
 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils
-        .getAugmentedClassNameForDataMethods;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
 import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
+import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.SHORT_TYPE_CONFLICT;
 import static org.onosproject.yangutils.utils.UtilConstants.ADD;
 import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.AND;
@@ -148,6 +148,8 @@
 import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
 import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
 import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
 import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
@@ -165,6 +167,8 @@
 import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
 import static org.onosproject.yangutils.utils.UtilConstants.TRY;
 import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MIN_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
 import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
@@ -229,7 +233,7 @@
      * @return getter string
      */
     public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
-            YangPluginConfig pluginConfig) {
+                                         YangPluginConfig pluginConfig) {
 
         String returnType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
@@ -258,7 +262,7 @@
      * @return setter string
      */
     public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
-            YangPluginConfig pluginConfig) {
+                                         YangPluginConfig pluginConfig) {
 
         String attrType = getReturnType(attr);
         String attributeName = attr.getAttributeName();
@@ -298,7 +302,7 @@
      * @return default constructor string
      */
     public static String getDefaultConstructorString(String name, String modifierType,
-            YangPluginConfig pluginConfig) {
+                                                     YangPluginConfig pluginConfig) {
         return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig, null)
                 + getDefaultConstructor(name, modifierType) + NEW_LINE;
     }
@@ -419,7 +423,7 @@
      * @return setter for attribute
      */
     private static String getSetter(String className, String name, String type, int generatedJavaFiles,
-            boolean isTypeNull, boolean isList) {
+                                    boolean isTypeNull, boolean isList) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
             return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
                     + getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
@@ -499,7 +503,7 @@
      * @return getter method for interface
      */
     static String getGetterForInterface(String yangName, String returnType, boolean isList,
-            int generatedJavaFiles, YangCompilerAnnotation compilerAnnotation) {
+                                        int generatedJavaFiles, YangCompilerAnnotation compilerAnnotation) {
         if (!isList) {
             return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
         }
@@ -515,7 +519,7 @@
      * @return getter for interface
      */
     private static String getGetterInterfaceString(String returnType, String yangName,
-            int generatedJavaFiles) {
+                                                   int generatedJavaFiles) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
             return getGetMethodWithArgument(returnType, yangName);
         } else {
@@ -536,8 +540,8 @@
      * @return setter method for interface
      */
     static String getSetterForInterface(String attrName, String attrType, String className,
-            boolean isList, int generatedJavaFiles,
-            YangCompilerAnnotation compilerAnnotation) {
+                                        boolean isList, int generatedJavaFiles,
+                                        YangCompilerAnnotation compilerAnnotation) {
         if (!isList) {
             return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
         }
@@ -555,10 +559,10 @@
      * @return setter string
      */
     private static String getSetterInterfaceString(String className, String attrName, String attrType,
-            int generatedJavaFiles) {
+                                                   int generatedJavaFiles) {
         if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
             return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
-                    + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
+                    + OPEN_PARENTHESIS + attrType + OP_PARAM + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
         } else {
             return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
                     + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
@@ -630,7 +634,7 @@
      * @return constructor for class
      */
     public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
-            YangPluginConfig pluginConfig) {
+                                        YangPluginConfig pluginConfig) {
 
         String attributeName = attr.getAttributeName();
         String constructor;
@@ -661,7 +665,7 @@
      * @return rpc method string
      */
     public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
-            YangPluginConfig pluginConfig) {
+                                             YangPluginConfig pluginConfig) {
 
         rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
         if (!inputName.equals(EMPTY_STRING)) {
@@ -681,7 +685,7 @@
      * @return rpc method string
      */
     public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
-            YangPluginConfig pluginConfig) {
+                                             YangPluginConfig pluginConfig) {
 
         rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
         if (!inputName.equals(EMPTY_STRING)) {
@@ -846,7 +850,7 @@
      * @return from string method's body string
      */
     public static String getFromStringMethod(JavaAttributeInfo attr,
-            JavaAttributeInfo fromStringAttributeInfo) {
+                                             JavaAttributeInfo fromStringAttributeInfo) {
 
         return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
                 + getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE + TWELVE_SPACE_INDENTATION
@@ -889,7 +893,7 @@
      * @return sub string with parsed statement for union's from string method
      */
     private static String getParsedSubString(JavaAttributeInfo attr,
-            JavaAttributeInfo fromStringAttributeInfo) {
+                                             JavaAttributeInfo fromStringAttributeInfo) {
 
         String targetDataType = getReturnType(attr);
         if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
@@ -1055,7 +1059,7 @@
      * @return of method's string and java doc for special type
      */
     public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
-            YangPluginConfig pluginConfig) {
+                                                     YangPluginConfig pluginConfig) {
 
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
@@ -1087,8 +1091,8 @@
      * @return string and java doc for constructor of type class
      */
     public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
-            String generatedJavaClassName,
-            YangPluginConfig pluginConfig) {
+                                                            String generatedJavaClassName,
+                                                            YangPluginConfig pluginConfig) {
 
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
@@ -1109,7 +1113,7 @@
      */
     public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
             attr2, String generatedJavaClassName, YangPluginConfig pluginConfig, ValidatorTypeForUnionTypes type,
-            boolean addFirst) {
+                                                            boolean addFirst) {
 
         String attrType = getReturnType(attr1);
         String attrName1 = "";
@@ -1122,7 +1126,7 @@
         }
 
         String appDataStructure = null;
-        if (attr1.getCompilerAnnotation() != null) {
+        if (attr1 != null && attr1.getCompilerAnnotation() != null) {
             appDataStructure = attr1.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
         }
         return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig,
@@ -1154,7 +1158,7 @@
      * @return type constructor string
      */
     private static String getTypeConstructorString(String type, String attr1, String attr2, String className,
-            ValidatorTypeForUnionTypes validatorType, boolean addInt) {
+                                                   ValidatorTypeForUnionTypes validatorType, boolean addInt) {
 
         String constructor;
         constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
@@ -1285,8 +1289,8 @@
      * @return of method
      */
     static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
-            Map<String, Integer> enumMap, List<String> enumList,
-            YangPluginConfig pluginConfig) {
+                                   Map<String, Integer> enumMap, List<String> enumList,
+                                   YangPluginConfig pluginConfig) {
         String attrType = getReturnType(attr);
         String attrName = attr.getAttributeName();
 
@@ -1449,6 +1453,12 @@
             } else {
                 condition = condition + UINT_MIN_RANGE + COMMA + SPACE + UINT_MAX_RANGE + COMMA + SPACE + VALUE;
             }
+        } else if (type == SHORT_TYPE_CONFLICT) {
+            if (addFirst) {
+                condition = condition + SHORT_MIN_RANGE + COMMA + SPACE + SHORT_MAX_RANGE + COMMA + SPACE + VALUE;
+            } else {
+                condition = condition + UINT8_MIN_RANGE + COMMA + SPACE + UINT8_MAX_RANGE + COMMA + SPACE + VALUE;
+            }
         } else {
             if (addFirst) {
                 condition = condition + LONG_MIN_RANGE + COMMA + SPACE + LONG_MAX_RANGE + COMMA + SPACE + VALUE;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java
index a9890bd..9ccceb1 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java
@@ -27,6 +27,11 @@
     INT_TYPE_CONFLICT,
 
     /**
+     * When conflict is there for int16 and uInt8.
+     */
+    SHORT_TYPE_CONFLICT,
+
+    /**
      * When conflict is there for int64 and uInt32.
      */
     LONG_TYPE_CONFLICT
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index a0c66b0..8b323bc 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -319,6 +319,48 @@
     /**
      * Static attribute for minRange.
      */
+    public static final String SHORT_MIN_RANGE_ATTR = "static final int INT16_MIN_RANGE = -32768;\n";
+
+    /**
+     * Static attribute for minRange.
+     */
+    public static final String SHORT_MIN_RANGE = "INT16_MIN_RANGE";
+
+    /**
+     * Static attribute for minRange.
+     */
+    public static final String SHORT_MAX_RANGE = "INT16_MAX_RANGE";
+
+    /**
+     * Static attribute for maxRange.
+     */
+    public static final String SHORT_MAX_RANGE_ATTR = "static final int INT16_MAX_RANGE = 32767;";
+
+
+    /**
+     * Static attribute for minRange.
+     */
+    public static final String UINT8_MIN_RANGE_ATTR = "static final int UINT8_MIN_RANGE = 0;\n";
+
+    /**
+     * Static attribute for maxRange.
+     */
+    public static final String UINT8_MAX_RANGE_ATTR = "static final int UINT8_MAX_RANGE = 32767;";
+
+
+    /**
+     * Static attribute for minRange.
+     */
+    public static final String UINT8_MIN_RANGE = "UINT8_MIN_RANGE";
+
+    /**
+     * Static attribute for maxRange.
+     */
+    public static final String UINT8_MAX_RANGE = "UINT8_MAX_RANGE";
+
+    /**
+     * Static attribute for minRange.
+     */
     public static final String INT_MIN_RANGE_ATTR = "static final int INT32_MIN_RANGE = -2147483648;\n";
 
     /**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
index 251523b..3fa8b18 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -96,7 +96,7 @@
      * @param isList             is list attribute
      * @param pluginConfig       plugin configurations
      * @param compilerAnnotation compiler annotations for user defined data type
-     * @return javadocs.
+     * @return javaDocs.
      */
     public static String getJavaDoc(JavaDocType type, String name, boolean isList, YangPluginConfig pluginConfig,
                                     String compilerAnnotation) {
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 fe2d382..8a578c3 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
@@ -403,7 +403,7 @@
     }
 
     /* When spaces are present in the given line. */
-    public static String whenSpaceIsPresent(String line, int lineSize) {
+    private static String whenSpaceIsPresent(String line, int lineSize) {
         StringBuilder stringBuilder = new StringBuilder();
         String append;
         if (line.length() > lineSize) {