[ONOS-5630][ONOS-5615][ONOS-5634][ONOS-5635][ONOS-5568] defect fix for generated code.
Change-Id: I1d07e8c836005cdc9107186df18b468bc3b13cd1
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index 6b9f346..b7928ce 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -21,12 +21,10 @@
import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangEnumeration;
import org.onosproject.yangutils.datamodel.YangLeavesHolder;
-import org.onosproject.yangutils.datamodel.YangList;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.YangTypeDef;
import org.onosproject.yangutils.datamodel.YangUnion;
-import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
@@ -104,6 +102,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructorStart;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsConstructor;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsOfValueMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethod;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethodClose;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethodOpen;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethodClose;
@@ -111,6 +110,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetter;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterForClass;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterString;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethod;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodClose;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodOpen;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getInterfaceLeafIdEnumSignature;
@@ -162,6 +162,8 @@
import static org.onosproject.yangutils.utils.UtilConstants.IMPL_CLASS;
import static org.onosproject.yangutils.utils.UtilConstants.INT;
import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_PKG;
import static org.onosproject.yangutils.utils.UtilConstants.KEYS;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
@@ -489,7 +491,6 @@
info.setPkgInfo(fileInfo.getPackage());
importData.addImportInfo(info, parent.getJavaClassNameOrBuiltInType(),
parent.getJavaPackage());
- List<String> keys = ((YangList) curNode).getKeyList();
List<JavaAttributeInfo> attrs = getListOfAttributesForKey(curNode);
Iterator<JavaAttributeInfo> attrIt = attrs.iterator();
@@ -506,6 +507,9 @@
}
}
+ imports.add(getImportString(JAVA_UTIL_PKG,
+ JAVA_UTIL_OBJECTS_IMPORT_CLASS));
+
initiateJavaFileGeneration(file, GENERATE_KEY_CLASS, imports, curNode,
className);
String pkg = null;
@@ -535,6 +539,22 @@
attr, className, GENERATE_EVENT_SUBJECT_CLASS));
insertDataIntoJavaFile(file, NEW_LINE);
}
+ //add hashcode and equals method.
+ insertDataIntoJavaFile(file, getHashCodeMethodOpen());
+ StringBuilder builder = new StringBuilder();
+ for (JavaAttributeInfo att : attrs) {
+ builder.append(getHashCodeMethod(att));
+ }
+ insertDataIntoJavaFile(file, getHashCodeMethodClose(builder.toString()));
+
+ insertDataIntoJavaFile(file, getEqualsMethodOpen(className));
+ StringBuilder builder2 = new StringBuilder();
+ for (JavaAttributeInfo att : attrs) {
+ builder2.append(getEqualsMethod(att)).append(NEW_LINE);
+ }
+ insertDataIntoJavaFile(file, getEqualsMethodClose(builder2.toString()));
+
+
insertDataIntoJavaFile(file, getCompareToForKeyClass(attrs, className));
insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET);
@@ -736,11 +756,6 @@
String className = getCapitalCase(fileInfo.getJavaName());
String path = fileInfo.getBaseCodeGenPath() +
fileInfo.getPackageFilePath();
- YangTypeDef typeDef = (YangTypeDef) curNode;
- List<YangType<?>> types = typeDef.getTypeList();
- YangType type = types.get(0);
- YangDataTypes yangDataTypes = type.getDataType();
-
initiateJavaFileGeneration(file, className, GENERATE_TYPEDEF_CLASS,
imports, path);
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index 5886939..0b11fda 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -64,6 +64,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getBitSetAttr;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getCatchSubString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getCompareToString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getExceptionThrowString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getForLoopString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getGreaterThanCondition;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIfConditionBegin;
@@ -98,7 +99,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.AND;
import static org.onosproject.yangutils.utils.UtilConstants.APPEND;
-import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
+import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST_INIT;
import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
@@ -129,7 +130,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EXTEND;
import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
import static org.onosproject.yangutils.utils.UtilConstants.FOR;
@@ -203,7 +203,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
import static org.onosproject.yangutils.utils.UtilConstants.THIS;
-import static org.onosproject.yangutils.utils.UtilConstants.THROW_NEW;
import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
import static org.onosproject.yangutils.utils.UtilConstants.TO_CAPS;
import static org.onosproject.yangutils.utils.UtilConstants.TO_STRING_METHOD;
@@ -634,23 +633,20 @@
* @return return type
*/
private static String getReturnType(JavaAttributeInfo attr) {
- String returnType;
StringBuilder builder = new StringBuilder();
if (attr.isQualifiedName() &&
attr.getImportInfo().getPkgInfo() != null) {
- returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
- builder.append(returnType);
+ builder.append(attr.getImportInfo().getPkgInfo()).append(PERIOD);
}
- returnType = attr.getImportInfo().getClassInfo();
+ builder.append(attr.getImportInfo().getClassInfo());
if (attr.getAttributeType() != null &&
attr.getAttributeType().getDataType() == IDENTITYREF) {
- returnType = CLASS_STRING + DIAMOND_OPEN_BRACKET +
+ return CLASS_STRING + DIAMOND_OPEN_BRACKET +
QUESTION_MARK + SPACE + EXTEND + SPACE +
- returnType + DIAMOND_CLOSE_BRACKET;
+ builder.toString() + DIAMOND_CLOSE_BRACKET;
}
- builder.append(returnType);
return builder.toString();
}
@@ -822,8 +818,7 @@
* @return from string method's close string
*/
static String getFromStringMethodClose() {
- return getReturnString(NULL, EIGHT_SPACE_INDENTATION) +
- signatureClose() + methodClose(FOUR_SPACE);
+ return methodClose(FOUR_SPACE);
}
/**
@@ -841,9 +836,7 @@
getNewLineAndSpace(TWELVE_SPACE_INDENTATION) +
getParsedSubString(attr, fromAttr) +
getReturnOfSubString() + EIGHT_SPACE_INDENTATION +
- getCatchSubString() +
- getNewLineAndSpace(EIGHT_SPACE_INDENTATION) +
- CLOSE_CURLY_BRACKET;
+ getCatchSubString(attr.getCurHolderOrCount());
}
/**
@@ -1333,8 +1326,7 @@
String method = TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON +
NEW_LINE;
builder.append(method)
- .append(getReturnString(NULL, SIXTEEN_SPACE_INDENTATION))
- .append(signatureClose())
+ .append(getExceptionThrowString(SIXTEEN_SPACE_INDENTATION))
.append(methodClose(EIGHT_SPACE))
.append(methodClose(FOUR_SPACE));
@@ -1621,7 +1613,7 @@
break;
case LIST:
- type = ARRAY_LIST;
+ type = ARRAY_LIST_INIT;
break;
case MAP:
@@ -1633,12 +1625,12 @@
break;
default:
- type = ARRAY_LIST;
+ type = ARRAY_LIST_INIT;
break;
}
} else {
- type = ARRAY_LIST;
+ type = ARRAY_LIST_INIT;
}
return getIfConditionBegin(EIGHT_SPACE_INDENTATION, name + SPACE + EQUAL +
EQUAL + SPACE + NULL) + TWELVE_SPACE_INDENTATION +
@@ -1802,8 +1794,8 @@
condition = TMP_VAL + PERIOD + IS_EMPTY;
sBuild.append(getIfConditionBegin(EIGHT_SPACE_INDENTATION, condition));
- sBuild.append(TWELVE_SPACE_INDENTATION).append(THROW_NEW)
- .append(EXCEPTION_STRING).append(methodClose(EIGHT_SPACE))
+ sBuild.append(getExceptionThrowString(TWELVE_SPACE_INDENTATION))
+ .append(methodClose(EIGHT_SPACE))
.append(getReturnString(TMP_VAL, EIGHT_SPACE_INDENTATION))
.append(signatureClose()).append(methodClose(FOUR_SPACE));
return sBuild.toString();
@@ -2066,8 +2058,8 @@
.append(getIfConditionBegin(EIGHT_SPACE_INDENTATION, cond))
.append(getReturnString(returnVal, TWELVE_SPACE_INDENTATION))
.append(signatureClose()).append(methodClose(EIGHT_SPACE))
- .append(EIGHT_SPACE_INDENTATION).append(THROW_NEW)
- .append(EXCEPTION_STRING).append(methodClose(FOUR_SPACE));
+ .append(getExceptionThrowString(EIGHT_SPACE_INDENTATION))
+ .append(methodClose(FOUR_SPACE));
return builder.toString();
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
index 9311e2d..e44d55b 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
@@ -77,6 +77,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
+import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
import static org.onosproject.yangutils.utils.UtilConstants.EXTEND;
import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
@@ -136,6 +137,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.STRING_BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.STRING_BUILDER_VAR;
import static org.onosproject.yangutils.utils.UtilConstants.THIS;
+import static org.onosproject.yangutils.utils.UtilConstants.THROW_NEW;
import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
import static org.onosproject.yangutils.utils.UtilConstants.TO_STRING_METHOD;
import static org.onosproject.yangutils.utils.UtilConstants.TRY;
@@ -247,6 +249,16 @@
}
/**
+ * Returns illegal argument exception string.
+ *
+ * @param space indentation
+ * @return illegal argument exception string
+ */
+ static String getExceptionThrowString(String space) {
+ return space + THROW_NEW + EXCEPTION_STRING;
+ }
+
+ /**
* Returns new line string with spaces.
*
* @param space spaces
@@ -823,12 +835,21 @@
/**
* Returns sub string with catch statement for union's from string method.
*
+ * @param attrHolder attribute holder/count for from string
* @return sub string with catch statement for union's from string method
*/
- static String getCatchSubString() {
- return CLOSE_CURLY_BRACKET + SPACE + CATCH + SPACE +
+ static String getCatchSubString(String attrHolder) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(CLOSE_CURLY_BRACKET).append(SPACE).append(CATCH)
+ .append(SPACE).append(
brackets(OPEN_CLOSE_BRACKET_WITH_VALUE_AND_RETURN_TYPE, EXCEPTION_VAR,
- EXCEPTION) + SPACE + OPEN_CURLY_BRACKET;
+ EXCEPTION)).append(SPACE).append(OPEN_CURLY_BRACKET)
+ .append(NEW_LINE);
+ if (attrHolder != null) {
+ builder.append(getExceptionThrowString(TWELVE_SPACE_INDENTATION));
+ }
+ builder.append(EIGHT_SPACE_INDENTATION).append(CLOSE_CURLY_BRACKET);
+ return builder.toString();
}
/**
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
index 651d4ec..3e60817 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
@@ -1052,10 +1052,12 @@
public static String getAugmentableSubTreeFiltering() {
return " if (yangAugmentedInfoMap.isEmpty()) {\n" +
- " Set<Map.Entry<Class<?>, Object>> augment =" +
+ " java.util.Set<Map.Entry<Class<?>, Object>> " +
+ "augment =" +
" appInstance.yangAugmentedInfoMap().entrySet();\n" +
" if (augment != null && !augment.isEmpty()) {\n" +
- " Iterator<Map.Entry<Class<?>, Object>> augItr =" +
+ " java.util.Iterator<Map.Entry<Class<?>, " +
+ "Object>> augItr =" +
" augment.iterator();\n" +
" while (augItr.hasNext()) {\n" +
" Map.Entry<Class<?>, Object> aug =" +
@@ -1071,7 +1073,8 @@
" Class<?> builderClass;\n" +
" builderClass = classLoader.loadClass(classPackage);\n" +
" Object builderObj = builderClass.newInstance();\n" +
- " Method method = builderClass.getMethod(\"build\");\n" +
+ " java.lang.reflect.Method method = " +
+ "builderClass.getMethod(\"build\");\n" +
" Object defaultObj = method.invoke(builderObj);\n" +
" Class<?> defaultClass = defaultObj.getClass();\n" +
" method = defaultClass.getMethod(" +
@@ -1087,9 +1090,9 @@
" }\n" +
" }\n" +
" } else {\n" +
- " Set<Map.Entry<Class<?>, Object>> augment = yangAugmentedInfoMap\n" +
+ " java.util.Set<Map.Entry<Class<?>, Object>> augment = yangAugmentedInfoMap\n" +
" .entrySet();\n" +
- " Iterator<Map.Entry<Class<?>, Object>> augItr = augment.iterator();\n" +
+ " java.util.Iterator<Map.Entry<Class<?>, Object>> augItr = augment.iterator();\n" +
" while (augItr.hasNext()) {\n" +
" Map.Entry<Class<?>, Object> aug = augItr.next();\n" +
" Class<?> augClass = aug.getKey();\n" +
@@ -1204,7 +1207,8 @@
" Class<?> caseClass = classArray[0];\n" +
" try {\n" +
" Object obj1 = caseClass.newInstance();\n" +
- " Method method = caseClass.getMethod(\"builder\", caseClass);\n" +
+ " java.lang.reflect.Method method =" +
+ " caseClass.getMethod(\"builder\", caseClass);\n" +
" Object obj = method.invoke(obj1," +
" (Object) null);\n" +
" method = caseClass.getMethod(\"build\", caseClass);\n" +