[ONOS-5274] Removal of rpc prfixed input and output from data model.
Change-Id: I14abf404eaf272e2b1457fa14d23117b4c0beaa7
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
index 496bf0b..7cb6435 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
@@ -16,15 +16,15 @@
 
 package org.onosproject.yangutils.datamodel;
 
+import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
+import org.onosproject.yangutils.datamodel.utils.Parsable;
+import org.onosproject.yangutils.datamodel.utils.YangConstructType;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yangutils.datamodel.utils.Parsable;
-import org.onosproject.yangutils.datamodel.utils.YangConstructType;
-
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil;
 
 /*
@@ -73,7 +73,7 @@
 public abstract class YangInput
         extends YangNode
         implements YangLeavesHolder, Parsable, CollisionDetector,
-                   YangAugmentableNode, YangIsFilterContentNodes {
+        YangAugmentableNode, YangIsFilterContentNodes {
 
     private static final long serialVersionUID = 806201608L;
 
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
index 7ec9dfd..3d5975b 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
@@ -16,15 +16,15 @@
 
 package org.onosproject.yangutils.datamodel;
 
+import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
+import org.onosproject.yangutils.datamodel.utils.Parsable;
+import org.onosproject.yangutils.datamodel.utils.YangConstructType;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yangutils.datamodel.utils.Parsable;
-import org.onosproject.yangutils.datamodel.utils.YangConstructType;
-
 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil;
 
 /*
@@ -72,7 +72,7 @@
 public abstract class YangOutput
         extends YangNode
         implements YangLeavesHolder, Parsable, CollisionDetector,
-                   YangAugmentableNode, YangIsFilterContentNodes {
+        YangAugmentableNode, YangIsFilterContentNodes {
 
     private static final long serialVersionUID = 806201612L;
 
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java
index 3003d56..0b7e116 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java
@@ -39,6 +39,7 @@
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.UNHANDLED_PARSED_DATA;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
 import static org.onosproject.yangutils.translator.tojava.YangDataModelFactory.getYangInputNode;
+import static org.onosproject.yangutils.utils.UtilConstants.INPUT;
 
 /*
  * Reference: RFC6020 and YANG ANTLR Grammar
@@ -67,8 +68,6 @@
  */
 public final class InputListener {
 
-    private static final String INPUT_KEYWORD = "_input";
-
     /**
      * Creates a new input listener.
      */
@@ -92,8 +91,7 @@
         if (curData instanceof YangRpc) {
 
             YangInput yangInput = getYangInputNode(JAVA_GENERATION);
-            yangInput.setName(((YangRpc) curData).getName() + INPUT_KEYWORD);
-
+            yangInput.setName(INPUT);
             yangInput.setLineNumber(ctx.getStart().getLine());
             yangInput.setCharPosition(ctx.getStart().getCharPositionInLine());
             yangInput.setFileName(listener.getFileName());
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java
index 70c135f..6ae74b8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java
@@ -39,6 +39,7 @@
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.UNHANDLED_PARSED_DATA;
 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
 import static org.onosproject.yangutils.translator.tojava.YangDataModelFactory.getYangOutputNode;
+import static org.onosproject.yangutils.utils.UtilConstants.OUTPUT;
 
 /*
  * Reference: RFC6020 and YANG ANTLR Grammar
@@ -67,8 +68,6 @@
  */
 public final class OutputListener {
 
-    private static final String OUTPUT_KEYWORD = "_output";
-
     /**
      * Creates a new output listener.
      */
@@ -92,8 +91,7 @@
         if (curData instanceof YangRpc) {
 
             YangOutput yangOutput = getYangOutputNode(JAVA_GENERATION);
-            yangOutput.setName(((YangRpc) curData).getName() + OUTPUT_KEYWORD);
-
+            yangOutput.setName(OUTPUT);
             yangOutput.setLineNumber(ctx.getStart().getLine());
             yangOutput.setCharPosition(ctx.getStart().getCharPositionInLine());
             yangOutput.setFileName(listener.getFileName());
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 3c41605..adb5c62 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,16 +21,20 @@
 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.YangLeavesHolder;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
+import org.onosproject.yangutils.datamodel.YangOutput;
 import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
 import org.onosproject.yangutils.datamodel.YangTypeHolder;
 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.YangJavaInputTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModuleTranslator;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaOutputTranslator;
 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModuleTranslator;
 import org.onosproject.yangutils.utils.io.YangPluginConfig;
 
@@ -50,6 +54,8 @@
 import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsgForCodeGenerator;
 import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.INPUT_KEYWORD;
+import static org.onosproject.yangutils.utils.UtilConstants.OUTPUT_KEYWORD;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
@@ -79,8 +85,7 @@
         if (info instanceof YangJavaAugmentTranslator) {
             updatePackageForAugmentInfo(info, config);
         } else {
-            translator.setJavaName(getCamelCase(((YangNode) info).getName(),
-                                                config.getConflictResolver()));
+            setNodeJavaName(info, config);
             translator.setJavaAttributeName(info.getJavaFileInfo()
                                                     .getJavaName());
             translator.setPackage(getCurNodePackage((YangNode) info));
@@ -89,6 +94,29 @@
     }
 
     /**
+     * The java name for input, output is prefixed with rpc name and other
+     * nodes are set by taking its own name from YANG.
+     *
+     * @param info   YANG java file info node
+     * @param config YANG plugin config
+     */
+    private static void setNodeJavaName(JavaCodeGeneratorInfo info,
+                                        YangPluginConfig config) {
+        String javaGenName;
+        if (info instanceof YangJavaInputTranslator) {
+            javaGenName = ((YangInput) info).getParent().getName() +
+                    INPUT_KEYWORD;
+        } else if (info instanceof YangJavaOutputTranslator) {
+            javaGenName = ((YangOutput) info).getParent().getName() +
+                    OUTPUT_KEYWORD;
+        } else {
+            javaGenName = ((YangNode) info).getName();
+        }
+        info.getJavaFileInfo().setJavaName(getCamelCase(
+                javaGenName, config.getConflictResolver()));
+    }
+
+    /**
      * Updates YANG java file package information.
      *
      * @param info   YANG java file info node
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 c098e20..d8d75f4 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -1682,6 +1682,16 @@
             "OpType";
 
     /**
+     * Static attribute for input keyword to be suffixed with rpc name.
+     */
+    public static final String INPUT_KEYWORD = "_input";
+
+    /**
+     * Static attribute for output keyword to be suffixed with rpc name.
+     */
+    public static final String OUTPUT_KEYWORD = "_output";
+
+    /**
      * Static attribute for event class.
      */
     public static final String EVENT_CLASS = "event class";
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/InputListenerTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/InputListenerTest.java
index 9000235..277eafe 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/InputListenerTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/InputListenerTest.java
@@ -16,24 +16,24 @@
 
 package org.onosproject.yangutils.parser.impl.listeners;
 
-import java.io.IOException;
-import java.util.ListIterator;
-
 import org.junit.Test;
+import org.onosproject.yangutils.datamodel.YangContainer;
+import org.onosproject.yangutils.datamodel.YangInput;
+import org.onosproject.yangutils.datamodel.YangLeaf;
+import org.onosproject.yangutils.datamodel.YangList;
 import org.onosproject.yangutils.datamodel.YangModule;
 import org.onosproject.yangutils.datamodel.YangNode;
 import org.onosproject.yangutils.datamodel.YangNodeType;
 import org.onosproject.yangutils.datamodel.YangRpc;
-import org.onosproject.yangutils.datamodel.YangInput;
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangList;
-import org.onosproject.yangutils.datamodel.YangContainer;
-import org.onosproject.yangutils.datamodel.YangTypeDef;
 import org.onosproject.yangutils.datamodel.YangStatusType;
+import org.onosproject.yangutils.datamodel.YangTypeDef;
 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
 
+import java.io.IOException;
+import java.util.ListIterator;
+
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
 
@@ -61,7 +61,7 @@
         assertThat(yangRpc.getName(), is("activate-software-image"));
 
         YangInput yangInput = (YangInput) yangRpc.getChild();
-        assertThat(yangInput.getName(), is("activate-software-image_input"));
+        assertThat(yangInput.getName(), is("input"));
         ListIterator<YangLeaf> leafIterator = yangInput.getListOfLeaf().listIterator();
         YangLeaf leafInfo = leafIterator.next();
 
@@ -102,7 +102,7 @@
         assertThat(yangRpc.getName(), is("activate-software-image"));
 
         YangInput yangInput = (YangInput) yangRpc.getChild();
-        assertThat(yangInput.getName(), is("activate-software-image_input"));
+        assertThat(yangInput.getName(), is("input"));
         YangTypeDef typeDef = (YangTypeDef) yangInput.getChild();
         assertThat(typeDef.getName(), is("my-type"));
         assertThat(typeDef.getStatus(), is(YangStatusType.DEPRECATED));
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/OutputListenerTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/OutputListenerTest.java
index e31f4c4..6ee23dc 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/OutputListenerTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/OutputListenerTest.java
@@ -16,11 +16,8 @@
 
 package org.onosproject.yangutils.parser.impl.listeners;
 
-import java.io.IOException;
-import java.util.ListIterator;
 import org.junit.Test;
 import org.onosproject.yangutils.datamodel.YangContainer;
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.datamodel.YangLeaf;
 import org.onosproject.yangutils.datamodel.YangList;
 import org.onosproject.yangutils.datamodel.YangModule;
@@ -30,9 +27,13 @@
 import org.onosproject.yangutils.datamodel.YangRpc;
 import org.onosproject.yangutils.datamodel.YangStatusType;
 import org.onosproject.yangutils.datamodel.YangTypeDef;
+import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yangutils.parser.exceptions.ParserException;
 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
 
+import java.io.IOException;
+import java.util.ListIterator;
+
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
 
@@ -60,7 +61,8 @@
         assertThat(yangRpc.getName(), is("activate-software-image"));
 
         YangOutput yangOutput = (YangOutput) yangRpc.getChild();
-        assertThat(yangOutput.getName(), is("activate-software-image_output"));
+        assertThat(yangOutput.getName(), is("output"));
+
         ListIterator<YangLeaf> leafIterator = yangOutput.getListOfLeaf().listIterator();
         YangLeaf leafInfo = leafIterator.next();
 
@@ -101,7 +103,8 @@
         assertThat(yangRpc.getName(), is("activate-software-image"));
 
         YangOutput yangOutput = (YangOutput) yangRpc.getChild();
-        assertThat(yangOutput.getName(), is("activate-software-image_output"));
+        assertThat(yangOutput.getName(), is("output"));
+
         YangTypeDef typeDef = (YangTypeDef) yangOutput.getChild();
         assertThat(typeDef.getName(), is("my-type"));
         assertThat(typeDef.getStatus(), is(YangStatusType.DEPRECATED));