[ONOS-5330] Code-Reusability by generating code for Grouping rather then uses
Change-Id: I80a7d5c92a47e30c5ea0fe45c407a8246d9994d7
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 064229a..136fad5 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
@@ -21,11 +21,13 @@
import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
+import org.onosproject.yangutils.datamodel.YangGrouping;
import org.onosproject.yangutils.datamodel.YangInput;
import org.onosproject.yangutils.datamodel.YangLeavesHolder;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
import org.onosproject.yangutils.datamodel.YangOutput;
+import org.onosproject.yangutils.datamodel.YangSchemaNode;
import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
import org.onosproject.yangutils.datamodel.YangTypeHolder;
import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
@@ -336,6 +338,16 @@
info));
}
+ YangSchemaNode node = getRefSchema(info);
+ if (node != null) {
+ YangNode parent = ((YangNode) info).getParent();
+ if (!(parent instanceof YangGrouping)) {
+ addCurNodeInfoInParentTempFile((YangNode) node, isMultiInstance,
+ config, parent);
+ }
+ return;
+ }
+
/*
* Generate the Java files corresponding to the current node.
*/
@@ -349,6 +361,29 @@
}
/**
+ * Returns referred schema node in case of grouping uses.
+ *
+ * @param info YANG java file info node
+ * @return referred schema node
+ */
+ private static YangSchemaNode getRefSchema(JavaCodeGeneratorInfo info) {
+
+ YangSchemaNode node = ((YangSchemaNode) info);
+ if (node.getReferredSchema() == null) {
+ return null;
+ }
+
+ /*
+ * Obtain last referred node in case grouping is embedded inside
+ * another grouping.
+ */
+ while (node.getReferredSchema() != null) {
+ node = node.getReferredSchema();
+ }
+ return node;
+ }
+
+ /**
* Generates code for the current data model node and adds support for it to
* be augmented.
*