[ONOS-5058][ONOS-4796][ONOS-4893]compiler annotation implementation + defect fix
Change-Id: Ie317409d9ab1d36e626433558b2d51f26daaac82
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index 372897c..5f00ecc 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -18,10 +18,10 @@
import java.util.List;
import java.util.Map;
-
import org.onosproject.yangutils.datamodel.YangAtomicPath;
import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangAugmentableNode;
+import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangLeafRef;
@@ -157,11 +157,13 @@
import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
import static org.onosproject.yangutils.utils.UtilConstants.PUT;
import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
+import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.SET;
import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
@@ -238,7 +240,7 @@
* @return method string for builder interface
*/
public static String parseBuilderInterfaceBuildMethodString(String name, YangPluginConfig pluginConfig) {
- return getJavaDoc(BUILD_METHOD, name, false, pluginConfig) + getBuildForInterface(name);
+ return getJavaDoc(BUILD_METHOD, name, false, pluginConfig, null) + getBuildForInterface(name);
}
/**
@@ -251,16 +253,21 @@
*/
public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
YangPluginConfig pluginConfig) {
-
String returnType = getReturnType(attr);
String attributeName = attr.getAttributeName();
+ String appDataStructure = null;
+ if (attr.getCompilerAnnotation() != null) {
+ appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
+ }
if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
return generateForGetMethodWithAttribute(returnType)
- + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
+ + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles,
+ attr.getCompilerAnnotation());
}
- return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig)
- + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
+ return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr(), pluginConfig, appDataStructure)
+ + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles,
+ attr.getCompilerAnnotation());
}
/**
@@ -274,7 +281,6 @@
*/
public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
YangPluginConfig pluginConfig) {
-
String attrType = getReturnType(attr);
String attributeName = attr.getAttributeName();
JavaDocGen.JavaDocType type;
@@ -284,8 +290,13 @@
type = SETTER_METHOD;
}
- return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig)
- + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
+ String appDataStructure = null;
+ if (attr.getCompilerAnnotation() != null) {
+ appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
+ }
+ return getJavaDoc(type, attributeName, attr.isListAttr(), pluginConfig, appDataStructure)
+ + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles,
+ attr.getCompilerAnnotation());
}
/**
@@ -296,7 +307,7 @@
* @return constructor string
*/
private static String getConstructorString(String name, YangPluginConfig pluginConfig) {
- return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig);
+ return getJavaDoc(CONSTRUCTOR, name, false, pluginConfig, null);
}
/**
@@ -309,9 +320,8 @@
*/
public static String getDefaultConstructorString(String name, String modifierType,
YangPluginConfig pluginConfig) {
- return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig)
- + getDefaultConstructor(name, modifierType)
- + NEW_LINE;
+ return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig, null)
+ + getDefaultConstructor(name, modifierType) + NEW_LINE;
}
/**
@@ -347,15 +357,14 @@
* @return getter method for class
*/
public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
-
String attrQualifiedType = getReturnType(attr);
String attributeName = attr.getAttributeName();
if (!attr.isListAttr()) {
return getGetter(attrQualifiedType, attributeName, generatedJavaFiles);
}
- String listAttr = getListString() + attrQualifiedType + DIAMOND_CLOSE_BRACKET;
- return getGetter(listAttr, attributeName, generatedJavaFiles);
+ String attrParam = getListAttribute(attrQualifiedType, attr.getCompilerAnnotation());
+ return getGetter(attrParam, attributeName, generatedJavaFiles);
}
/**
@@ -379,7 +388,6 @@
EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
+ CLOSE_CURLY_BRACKET;
}
-
}
/*Provides string to return for type.*/
@@ -407,7 +415,6 @@
* @return setter method for class
*/
public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
-
String attrQualifiedType = getReturnType(attr);
String attributeName = attr.getAttributeName();
boolean isTypeNull = false;
@@ -417,8 +424,8 @@
if (!attr.isListAttr()) {
return getSetter(className, attributeName, attrQualifiedType, generatedJavaFiles, isTypeNull, false);
}
- String listAttr = getListString() + attrQualifiedType + DIAMOND_CLOSE_BRACKET;
- return getSetter(className, attributeName, listAttr, generatedJavaFiles, isTypeNull, true);
+ String attrParam = getListAttribute(attrQualifiedType, attr.getCompilerAnnotation());
+ return getSetter(className, attributeName, attrParam, generatedJavaFiles, isTypeNull, true);
}
/**
@@ -508,15 +515,15 @@
* @param returnType return type of attribute
* @param isList is list attribute
* @param generatedJavaFiles generated java files
+ * @param compilerAnnotation compiler annotation
* @return getter method for interface
*/
static String getGetterForInterface(String yangName, String returnType, boolean isList,
- int generatedJavaFiles) {
-
+ int generatedJavaFiles, YangCompilerAnnotation compilerAnnotation) {
if (!isList) {
return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
}
- String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
+ String listAttr = getListAttribute(returnType, compilerAnnotation);
return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
}
@@ -545,15 +552,17 @@
* @param className name of the java class being generated
* @param isList is list attribute
* @param generatedJavaFiles generated java files
+ * @param compilerAnnotation compiler annotations
* @return setter method for interface
*/
static String getSetterForInterface(String attrName, String attrType, String className,
- boolean isList, int generatedJavaFiles) {
-
+ boolean isList, int generatedJavaFiles,
+ YangCompilerAnnotation compilerAnnotation) {
if (!isList) {
return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
}
- String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
+
+ String listAttr = getListAttribute(attrType, compilerAnnotation);
return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
}
@@ -592,7 +601,6 @@
* @return return type
*/
private static String getReturnType(JavaAttributeInfo attr) {
-
String returnType = EMPTY_STRING;
if (attr.isQualifiedName() && attr.getImportInfo().getPkgInfo() != null) {
returnType = attr.getImportInfo().getPkgInfo() + PERIOD;
@@ -621,7 +629,6 @@
* @return constructor string
*/
static String getConstructorStart(String yangName, YangPluginConfig pluginConfig, boolean isRootNode) {
-
String javadoc = getConstructorString(yangName, pluginConfig);
String returnType = getCapitalCase(DEFAULT) + yangName;
@@ -644,7 +651,6 @@
*/
public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
YangPluginConfig pluginConfig) {
-
String attributeName = attr.getAttributeName();
String constructor;
@@ -675,7 +681,6 @@
*/
public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
YangPluginConfig pluginConfig) {
-
rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
if (!inputName.equals(EMPTY_STRING)) {
inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
@@ -695,7 +700,6 @@
*/
public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
YangPluginConfig pluginConfig) {
-
rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
if (!inputName.equals(EMPTY_STRING)) {
inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
@@ -709,7 +713,6 @@
+ NEW_LINE;
}
method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-
return method;
}
@@ -1084,7 +1087,7 @@
* @return from string method's open string
*/
static String getFromStringMethodSignature(String className, YangPluginConfig pluginConfig) {
- return getJavaDoc(FROM_METHOD, className, false, pluginConfig) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
+ return getJavaDoc(FROM_METHOD, className, false, pluginConfig, null) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
+ STATIC + SPACE + className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS
+ STRING_DATA_TYPE + SPACE + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE
+ OPEN_CURLY_BRACKET + NEW_LINE;
@@ -1109,7 +1112,6 @@
*/
public static String getFromStringMethod(JavaAttributeInfo attr,
JavaAttributeInfo fromStringAttributeInfo) {
-
return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
+ getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE + TWELVE_SPACE_INDENTATION
+ getReturnOfSubString() + NEW_LINE + EIGHT_SPACE_INDENTATION + getCatchSubString()
@@ -1152,7 +1154,6 @@
*/
private static String getParsedSubString(JavaAttributeInfo attr,
JavaAttributeInfo fromStringAttributeInfo) {
-
String targetDataType = getReturnType(attr);
if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType
@@ -1286,7 +1287,6 @@
* @return equals method
*/
public static String getEqualsMethod(JavaAttributeInfo attr) {
-
String attributeName = attr.getAttributeName();
return SIXTEEN_SPACE_INDENTATION + SPACE + OBJECT_STRING + SUFFIX_S + PERIOD + EQUALS_STRING + OPEN_PARENTHESIS
+ attributeName + COMMA + SPACE + OTHER + PERIOD + attributeName + CLOSE_PARENTHESIS + SPACE + AND
@@ -1301,9 +1301,7 @@
* @return of method string
*/
static String getOfMethod(String name, JavaAttributeInfo attr) {
-
String attrQualifiedType = getReturnType(attr);
-
return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + name + SPACE + OF + OPEN_PARENTHESIS
+ attrQualifiedType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
+ EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + name + OPEN_PARENTHESIS + VALUE
@@ -1320,11 +1318,10 @@
*/
public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
YangPluginConfig pluginConfig) {
-
String attrType = getReturnType(attr);
String attrName = attr.getAttributeName();
- return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
+ return getJavaDoc(OF_METHOD, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
+ getOfMethodString(attrType, generatedJavaClassName);
}
@@ -1336,7 +1333,6 @@
* @return of method's string
*/
private static String getOfMethodString(String type, String className) {
-
return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF + OPEN_PARENTHESIS
+ type + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
+ EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE + className + OPEN_PARENTHESIS + VALUE
@@ -1354,11 +1350,9 @@
public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
String generatedJavaClassName,
YangPluginConfig pluginConfig) {
-
String attrType = getReturnType(attr);
String attrName = attr.getAttributeName();
-
- return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig)
+ return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName, false, pluginConfig, null)
+ getTypeConstructorString(attrType, attrName, generatedJavaClassName);
}
@@ -1376,7 +1370,6 @@
public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
attr2, String generatedJavaClassName, YangPluginConfig pluginConfig, ValidatorTypeForUnionTypes type,
boolean addFirst) {
-
String attrType = getReturnType(attr1);
String attrName1 = "";
String attrName2 = "";
@@ -1387,8 +1380,13 @@
attrName2 = attr2.getAttributeName();
}
- return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig)
- + getTypeConstructorString(attrType, attrName1, attrName2, generatedJavaClassName, type, addFirst);
+ String appDataStructure = null;
+ if (attr1.getCompilerAnnotation() != null) {
+ appDataStructure = attr1.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
+ }
+ return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig,
+ appDataStructure) + getTypeConstructorString(attrType, attrName1,
+ attrName2, generatedJavaClassName, type, addFirst);
}
/**
@@ -1400,7 +1398,6 @@
* @return type constructor string
*/
private static String getTypeConstructorString(String type, String name, String className) {
-
return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
+ CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD
+ name + SPACE + EQUAL + SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
@@ -1417,7 +1414,6 @@
*/
private static String getTypeConstructorString(String type, String attr1, String attr2, String className,
ValidatorTypeForUnionTypes validatorType, boolean addInt) {
-
String constructor;
constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
+ CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
@@ -1501,7 +1497,7 @@
* @return implementation of get YANG augment info
*/
static String getYangAugmentInfoMapInterface(YangPluginConfig pluginConfig) {
- return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig)
+ return getJavaDoc(GETTER_METHOD, getSmallCase(YANG_AUGMENTED_INFO) + MAP, false, pluginConfig, null)
+ FOUR_SPACE_INDENTATION + MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE + OBJECT_STRING + DIAMOND_CLOSE_BRACKET +
SPACE + getSmallCase(YANG_AUGMENTED_INFO) + MAP + OPEN_PARENTHESIS +
@@ -1559,7 +1555,6 @@
+ CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
int value;
for (String str : enumList) {
-
value = enumMap.get(str);
method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLON + NEW_LINE
+ SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD
@@ -1569,7 +1564,7 @@
+ RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
+ NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
- return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig)
+ return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig, null)
+ method;
}
@@ -1581,7 +1576,6 @@
* @return parsed string
*/
private static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
-
YangDataTypes type = yangType.getDataType();
switch (type) {
@@ -1652,11 +1646,10 @@
methods.append(method);
method = getJavaDoc(MANAGER_SETTER_METHOD, AUGMENTED +
- getCapitalCase(parentName) + getCapitalCase(curNodeName), false, pluginConfig) +
+ getCapitalCase(parentName) + getCapitalCase(curNodeName), false, pluginConfig, null) +
getSetterForInterface(getSmallCase(AUGMENTED) + parentName +
- getCapitalCase(curNodeName), returnType, parentName,
- false,
- GENERATE_SERVICE_AND_MANAGER) + NEW_LINE;
+ getCapitalCase(curNodeName), returnType, parentName, false,
+ GENERATE_SERVICE_AND_MANAGER, null) + NEW_LINE;
methods.append(method);
}
return methods.toString();
@@ -1968,4 +1961,30 @@
" return this;\n" +
" }\n";
}
+
+ private static String getListAttribute(String attrType, YangCompilerAnnotation compilerAnnotation) {
+ String listAttr;
+ if (compilerAnnotation != null && compilerAnnotation.getYangAppDataStructure() != null) {
+ switch (compilerAnnotation.getYangAppDataStructure().getDataStructure()) {
+ case QUEUE: {
+ listAttr = QUEUE + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
+ break;
+ }
+ case SET: {
+ listAttr = SET + DIAMOND_OPEN_BRACKET + attrType + DIAMOND_CLOSE_BRACKET;
+ break;
+ }
+ case LIST: {
+ listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
+ break;
+ }
+ default: {
+ listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
+ }
+ }
+ } else {
+ listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
+ }
+ return listAttr;
+ }
}