[ONOS-4636]grouping and uses

Change-Id: Ic410d03a838003ad23b2b0e8874b91503da84153
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java
new file mode 100644
index 0000000..03b0382
--- /dev/null
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java
@@ -0,0 +1,79 @@
+/*
+ * 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.exception;
+
+/**
+ * Represents custom translator exception for translator's operations.
+ */
+public class InvalidNodeForTranslatorException extends RuntimeException {
+
+    private static final long serialVersionUID = 20160311L;
+    private String fileName;
+
+    /**
+     * Create a new exception.
+     */
+    public InvalidNodeForTranslatorException() {
+        super();
+    }
+
+    /**
+     * Creates a new exception with given message.
+     *
+     * @param message the detail of exception in string
+     */
+    public InvalidNodeForTranslatorException(String message) {
+        super(message);
+    }
+
+    /**
+     * Creates a new exception from given message and cause.
+     *
+     * @param message the detail of exception in string
+     * @param cause   underlying cause of the error
+     */
+    public InvalidNodeForTranslatorException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * Creates a new exception from cause.
+     *
+     * @param cause underlying cause of the error
+     */
+    public InvalidNodeForTranslatorException(final Throwable cause) {
+        super(cause);
+    }
+
+    /**
+     * Returns generated file name for the exception.
+     *
+     * @return generated file name for the exception
+     */
+    public String getFileName() {
+        return this.fileName;
+    }
+
+    /**
+     * Sets file name in translator exception.
+     *
+     * @param fileName generated file name
+     */
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+}
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
index 83a2999..04bb2e2 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
@@ -17,17 +17,16 @@
 package org.onosproject.yangutils.translator.tojava;
 
 import java.io.IOException;
-
+import org.onosproject.yangutils.datamodel.TraversalType;
 import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangTypeDef;
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
+import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
-import static org.onosproject.yangutils.translator.tojava.TraversalType.CHILD;
-import static org.onosproject.yangutils.translator.tojava.TraversalType.PARENT;
-import static org.onosproject.yangutils.translator.tojava.TraversalType.ROOT;
-import static org.onosproject.yangutils.translator.tojava.TraversalType.SIBILING;
+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;
 
 /**
  * Representation of java code generator based on application schema.
@@ -82,23 +81,18 @@
                 if (!(codeGenNode instanceof JavaCodeGenerator)) {
                     throw new TranslatorException("Unsupported node to generate code");
                 }
-                if (codeGenNode instanceof YangTypeDef) {
-                    YangTypeDef typeDef = (YangTypeDef) codeGenNode;
-                    if (typeDef.getTypeDefBaseType().getDataType() == YangDataTypes.LEAFREF
-                            || typeDef.getTypeDefBaseType().getDataType() == YangDataTypes.IDENTITYREF) {
-                        if (codeGenNode.getNextSibling() != null) {
-                            curTraversal = SIBILING;
-                            codeGenNode = codeGenNode.getNextSibling();
-                        } else {
-                            curTraversal = PARENT;
-                            codeGenNode = codeGenNode.getParent();
-                        }
-                        continue;
-                    }
-                }
                 setCurNode(codeGenNode);
                 try {
                     generateCodeEntry(codeGenNode, yangPlugin);
+                } catch (InvalidNodeForTranslatorException e) {
+                    if (codeGenNode.getNextSibling() != null) {
+                        curTraversal = SIBILING;
+                        codeGenNode = codeGenNode.getNextSibling();
+                    } else {
+                        curTraversal = PARENT;
+                        codeGenNode = codeGenNode.getParent();
+                    }
+                    continue;
                 } catch (Exception e) {
                     throw new TranslatorException(e.getMessage());
                 }
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGrouping.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGrouping.java
index 808c4c1..6a496ce 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGrouping.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGrouping.java
@@ -15,9 +15,8 @@
  */
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
-import java.io.IOException;
-
 import org.onosproject.yangutils.datamodel.YangGrouping;
+import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
@@ -25,8 +24,6 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
-import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.updatePackageInfo;
-
 /**
  * Represents grouping information extended to support java code generation.
  */
@@ -102,11 +99,7 @@
     @Override
     public void generateCodeEntry(YangPluginConfig yangPlugin)
             throws TranslatorException {
-        try {
-            updatePackageInfo(this, yangPlugin);
-        } catch (IOException e) {
-            throw new TranslatorException(e.getCause());
-        }
+        throw new InvalidNodeForTranslatorException();
     }
 
     @Override
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUses.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUses.java
index cef6202..409688f 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUses.java
+++ b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUses.java
@@ -15,14 +15,8 @@
  */
 package org.onosproject.yangutils.translator.tojava.javamodel;
 
-import java.io.IOException;
-import java.util.List;
-
-import org.onosproject.yangutils.datamodel.YangGrouping;
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangLeafList;
-import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangUses;
+import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
 import org.onosproject.yangutils.translator.exception.TranslatorException;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
@@ -30,10 +24,6 @@
 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
 import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
 
-import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
-import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.addCurNodeAsAttributeInTargetTempFile;
-import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.updatePackageInfo;
-
 /**
  * Represents uses information extended to support java code generation.
  */
@@ -108,42 +98,7 @@
     @Override
     public void generateCodeEntry(YangPluginConfig yangPlugin)
             throws TranslatorException {
-        try {
-            updatePackageInfo(this, yangPlugin);
-
-            if (!(getParentNodeInGenCode(this) instanceof JavaCodeGeneratorInfo)) {
-                throw new TranslatorException("invalid container of uses");
-            }
-            JavaCodeGeneratorInfo javaCodeGeneratorInfo = (JavaCodeGeneratorInfo) getParentNodeInGenCode(this);
-
-            if (javaCodeGeneratorInfo instanceof YangGrouping) {
-                /*
-                 * Do nothing, since it will taken care in the groupings uses.
-                 */
-                return;
-            }
-
-            for (List<YangLeaf> leavesList : getUsesResolvedLeavesList()) {
-                // add the resolved leaves to the parent as an attribute
-                javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
-                        .getBeanTempFiles().addLeavesInfoToTempFiles(leavesList, yangPlugin);
-            }
-
-            for (List<YangLeafList> listOfLeafLists : getUsesResolvedListOfLeafList()) {
-                // add the resolved leaf-list to the parent as an attribute
-                javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
-                        .getBeanTempFiles().addLeafListInfoToTempFiles(listOfLeafLists, yangPlugin);
-            }
-
-            for (YangNode usesResolvedNode : getUsesResolvedNodeList()) {
-                // add the resolved nodes to the parent as an attribute
-                addCurNodeAsAttributeInTargetTempFile(usesResolvedNode, yangPlugin,
-                        getParentNodeInGenCode(this));
-            }
-
-        } catch (IOException e) {
-            throw new TranslatorException(e.getCause());
-        }
+        throw new InvalidNodeForTranslatorException();
     }
 
     @Override