[ONOS-4616] YANG grouping linker issues fixed.
Change-Id: I741aa9ad1008c02c9a9f90cc117cd43729132129
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
index 5a5e27f..c41fdb0 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
@@ -39,7 +39,10 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getQualifiedTypeInfoOfCurNode;
+import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getJavaDataType;
+import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getJavaImportClass;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefClose;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getListAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEventFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEventListenerFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEventSubjectFile;
@@ -48,6 +51,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterForClass;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcManagerMethod;
@@ -440,33 +444,129 @@
String rpcName) throws IOException {
String rpcInput = EMPTY_STRING;
String rpcOutput = VOID;
+ String rpcInputJavaDoc = EMPTY_STRING;
if (javaAttributeInfoOfInput != null) {
rpcInput = getCapitalCase(javaAttributeInfoOfInput.getAttributeName());
}
if (javaAttributeInfoOfOutput != null) {
rpcOutput = getCapitalCase(javaAttributeInfoOfOutput.getAttributeName());
}
+ if (!rpcInput.equals(EMPTY_STRING)) {
+ rpcInputJavaDoc = RPC_INPUT_VAR_NAME;
+ }
appendToFile(getRpcInterfaceTempFileHandle(),
- generateJavaDocForRpc(rpcName, RPC_INPUT_VAR_NAME, rpcOutput, pluginConfig)
+ generateJavaDocForRpc(rpcName, rpcInputJavaDoc, rpcOutput, pluginConfig)
+ getRpcServiceMethod(rpcName, rpcInput, rpcOutput, pluginConfig) + NEW_LINE);
appendToFile(getRpcImplTempFileHandle(),
getRpcManagerMethod(rpcName, rpcInput, rpcOutput, pluginConfig) + NEW_LINE);
}
/**
+ * Adds rpc string information to applicable temp file.
+ *
+ * @param javaAttributeInfoOfInput rpc's input node attribute info
+ * @param javaAttributeInfoOfOutput rpc's output node attribute info
+ * @param rpcName name of the rpc function
+ * @param pluginConfig plugin configurations
+ * @param isInputLeafHolder if input node is leaf holder
+ * @param isOutputLeafHolder if output node is leaf holder
+ * @param isInputSingleChildHolder if input node is single child holder
+ * @param isOutputSingleChildHolder if input node is single child holder
+ * @throws IOException IO operation fail
+ */
+ public void addRpcString(JavaAttributeInfo javaAttributeInfoOfInput,
+ JavaAttributeInfo javaAttributeInfoOfOutput, YangPluginConfig pluginConfig,
+ String rpcName, boolean isInputLeafHolder, boolean isOutputLeafHolder,
+ boolean isInputSingleChildHolder, boolean isOutputSingleChildHolder) throws IOException {
+ String rpcInput = EMPTY_STRING;
+ String rpcOutput = VOID;
+ String rpcInputJavaDoc = EMPTY_STRING;
+ if (javaAttributeInfoOfInput != null) {
+ rpcInput = getInputOutputNames(javaAttributeInfoOfInput, isInputLeafHolder, isInputSingleChildHolder,
+ pluginConfig);
+ }
+ if (javaAttributeInfoOfOutput != null) {
+ rpcOutput =
+ getInputOutputNames(javaAttributeInfoOfOutput, isOutputLeafHolder, isOutputSingleChildHolder,
+ pluginConfig);
+ }
+ if (!rpcInput.equals(EMPTY_STRING)) {
+ rpcInputJavaDoc = RPC_INPUT_VAR_NAME;
+ }
+
+ appendToFile(getRpcInterfaceTempFileHandle(),
+ generateJavaDocForRpc(rpcName, rpcInputJavaDoc, rpcOutput, pluginConfig)
+ + getRpcServiceMethod(rpcName, rpcInput, rpcOutput, pluginConfig) + NEW_LINE);
+ appendToFile(getRpcImplTempFileHandle(),
+ getRpcManagerMethod(rpcName, rpcInput, rpcOutput, pluginConfig) + NEW_LINE);
+ }
+
+ /**
+ * Returns names for input and output.
+ *
+ * @param attr attribute info
+ * @param isLeafHolder if leaf holder
+ * @param isSinglechildHolder if single child holder
+ * @param pluginConfig plugin configurations
+ * @return names for input and output
+ */
+ private String getInputOutputNames(JavaAttributeInfo attr, boolean isLeafHolder, boolean isSinglechildHolder,
+ YangPluginConfig pluginConfig) {
+ if (!attr.isListAttr()) {
+ if (!isLeafHolder || isSinglechildHolder) {
+ String attrName = "";
+ if (!attr.isQualifiedName()) {
+ attrName = getCapitalCase(attr.getAttributeName());
+ } else {
+ attrName = attr.getImportInfo().getPkgInfo() + "." + getCapitalCase(attr.getAttributeName());
+ }
+ return attrName;
+ } else {
+ String rpcInput = getJavaImportClass(attr.getAttributeType(), false,
+ pluginConfig.getConflictResolver());
+ if (rpcInput == null) {
+ rpcInput = getJavaDataType(attr.getAttributeType());
+ }
+ return rpcInput;
+ }
+ } else {
+ if (!isLeafHolder || isSinglechildHolder) {
+ String attrName = "";
+ if (!attr.isQualifiedName()) {
+ attrName = getCapitalCase(attr.getAttributeName());
+ } else {
+ attrName = attr.getImportInfo().getPkgInfo() + "." + getCapitalCase(attr.getAttributeName());
+ }
+ return getListAttribute(attrName);
+
+ } else {
+ return getListAttribute(getJavaImportClass(attr.getAttributeType(), true,
+ pluginConfig.getConflictResolver()));
+
+ }
+ }
+ }
+
+ /**
* Adds the JAVA rpc snippet information.
*
* @param javaAttributeInfoOfInput rpc's input node attribute info
* @param javaAttributeInfoOfOutput rpc's output node attribute info
* @param pluginConfig plugin configurations
* @param rpcName name of the rpc function
+ * @param isInputLeafHolder if input node is leaf holder
+ * @param isOutputLeafHolder if output node is leaf holder
+ * @param isInputSingleChildHolder if input node is single child holder
+ * @param isOutputSingleChildHolder if input node is single child holder
* @throws IOException IO operation fail
*/
public void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo javaAttributeInfoOfInput,
JavaAttributeInfo javaAttributeInfoOfOutput, YangPluginConfig pluginConfig,
- String rpcName)
+ String rpcName, boolean isInputLeafHolder, boolean isOutputLeafHolder,
+ boolean isInputSingleChildHolder, boolean isOutputSingleChildHolder)
throws IOException {
- addRpcString(javaAttributeInfoOfInput, javaAttributeInfoOfOutput, pluginConfig, rpcName);
+ addRpcString(javaAttributeInfoOfInput, javaAttributeInfoOfOutput, pluginConfig, rpcName, isInputLeafHolder,
+ isOutputLeafHolder, isInputSingleChildHolder, isOutputSingleChildHolder);
}
/**
@@ -690,6 +790,7 @@
String currentInfo = getCapitalCase(getCamelCase(((YangNotification) curNode).getName(),
pluginConfig.getConflictResolver()));
+ String notificationName = ((YangNotification) curNode).getName();
JavaQualifiedTypeInfo qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode.getParent(),
getCapitalCase(currentInfo));
@@ -699,7 +800,7 @@
null, false, false);
/*Adds java info for event in respective temp files.*/
- addEventEnum(currentInfo, pluginConfig);
+ addEventEnum(notificationName, pluginConfig);
addEventSubjectAttribute(javaAttributeInfo, pluginConfig);
addEventSubjectGetter(javaAttributeInfo, pluginConfig);
addEventSubjectSetter(javaAttributeInfo, pluginConfig, currentInfo);
@@ -709,7 +810,7 @@
private void addEventEnum(String notificationName, YangPluginConfig pluginConfig) throws IOException {
appendToFile(getEventEnumTempFileHandle(),
getJavaDoc(ENUM_ATTRIBUTE, notificationName, false, pluginConfig) + FOUR_SPACE_INDENTATION
- + notificationName.toUpperCase() + COMMA + NEW_LINE);
+ + getEnumJavaAttribute(notificationName).toUpperCase() + COMMA + NEW_LINE);
}
/*Adds event method in event class*/