[ONOS-5630][ONOS-5615][ONOS-5634][ONOS-5635][ONOS-5568] defect fix for generated code.
Change-Id: I1d07e8c836005cdc9107186df18b468bc3b13cd1
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java
index 3719a98..825d861 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java
@@ -16,15 +16,18 @@
package org.onosproject.yangutils.datamodel;
-import java.io.Serializable;
-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.ResolvableStatus;
import org.onosproject.yangutils.datamodel.utils.YangConstructType;
+import java.io.Serializable;
+import java.util.LinkedList;
+import java.util.List;
+
+import static java.util.Collections.unmodifiableList;
+import static org.onosproject.yangutils.datamodel.utils.YangConstructType.COMPILER_ANNOTATION_DATA;
+
/**
* Represents data model node to maintain information defined in YANG compiler-annotation.
*/
@@ -132,7 +135,7 @@
* @param yangAppExtendedName the YANG app extended name to set
*/
public void setYangAppExtendedName(YangAppExtended yangAppExtendedName) {
- this.yangAppExtended = yangAppExtendedName;
+ yangAppExtended = yangAppExtendedName;
}
/**
@@ -141,7 +144,7 @@
* @return the list of atomic path
*/
public List<YangAtomicPath> getAtomicPathList() {
- return atomicPathList;
+ return unmodifiableList(atomicPathList);
}
/**
@@ -155,7 +158,7 @@
@Override
public YangConstructType getYangConstructType() {
- return YangConstructType.COMPILER_ANNOTATION_DATA;
+ return COMPILER_ANNOTATION_DATA;
}
@Override
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
index db3a5e1..e1fa33b 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
@@ -76,6 +76,11 @@
private boolean isShortConflict;
/**
+ * current holder or count in type list of attribute for from string method.
+ */
+ private String curHolderOrCount;
+
+ /**
* Creates a java attribute info object.
*/
private JavaAttributeInfo() {
@@ -318,4 +323,22 @@
return newAttr;
}
+
+ /**
+ * Returns current holder or count in type list of attribute for from string method.
+ *
+ * @return current holder or count in type list of attribute for from string method
+ */
+ public String getCurHolderOrCount() {
+ return curHolderOrCount;
+ }
+
+ /**
+ * Sets current holder or count in type list of attribute for from string method.
+ *
+ * @param curHolderOrCount current holder or count in type list of attribute for from string method
+ */
+ public void setCurHolderOrCount(String curHolderOrCount) {
+ this.curHolderOrCount = curHolderOrCount;
+ }
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
index 2f1fbd2..2477d65 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
@@ -24,14 +24,12 @@
import static java.util.Collections.unmodifiableSortedSet;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getImportString;
import static org.onosproject.yangutils.utils.UtilConstants.ABSTRACT_EVENT;
+import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST_IMPORT;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER;
-import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_IMPORT_CLASS;
-import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_IMPORT_PKG;
-import static org.onosproject.yangutils.utils.UtilConstants.HASH_MAP;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_MATH;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_CLASS;
@@ -195,17 +193,23 @@
/**
* Returns import for class.
*
+ * @param isForInterface if needs to check for interface
* @return imports for class
*/
- public List<String> getImports() {
+ public List<String> getImports(boolean isForInterface) {
String importString;
List<String> imports = new ArrayList<>();
-
+ boolean check;
for (JavaQualifiedTypeInfoTranslator importInfo : getImportSet()) {
+ check = importInfo.isForInterface();
+ if (!isForInterface) {
+ check = true;
+ }
if (!importInfo.getPkgInfo().equals(EMPTY_STRING) &&
importInfo.getClassInfo() != null &&
- !importInfo.getPkgInfo().equals(JAVA_LANG)) {
+ !importInfo.getPkgInfo().equals(JAVA_LANG) &&
+ check) {
importString = getImportString(importInfo.getPkgInfo(), importInfo
.getClassInfo());
imports.add(importString);
@@ -213,6 +217,9 @@
}
if (isListToImport) {
imports.add(getImportForList());
+ if (!isForInterface) {
+ imports.add(ARRAY_LIST_IMPORT);
+ }
}
if (isQueueToImport) {
imports.add(getImportForQueue());
@@ -239,16 +246,6 @@
}
/**
- * Returns import for to string method.
- *
- * @return import for to string method
- */
- String getImportForToString() {
- return getImportString(GOOGLE_MORE_OBJECT_IMPORT_PKG,
- GOOGLE_MORE_OBJECT_IMPORT_CLASS);
- }
-
- /**
* Returns import for to bitset method.
*
* @return import for to bitset method
@@ -271,7 +268,7 @@
*
* @return import for list attribute
*/
- String getImportForList() {
+ private String getImportForList() {
return getImportString(COLLECTION_IMPORTS, LIST);
}
@@ -330,24 +327,6 @@
}
/**
- * Returns import string for map class.
- *
- * @return import string for map class
- */
- String getMapImport() {
- return getImportString(COLLECTION_IMPORTS, MAP);
- }
-
- /**
- * Returns import string for hash map class.
- *
- * @return import string for hash map class
- */
- String getHashMapImport() {
- return getImportString(COLLECTION_IMPORTS, HASH_MAP);
- }
-
- /**
* Returns import for big integer.
*
* @return import for big integer
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
index de75bbf..d4d2dea 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
@@ -41,6 +41,7 @@
implements Comparable<JavaQualifiedTypeInfoTranslator>, Serializable {
private static final long serialVersionUID = 806201634L;
private boolean isQualified;
+ private boolean isForInterface = true;
/**
* Creates a java qualified type info object.
@@ -288,4 +289,22 @@
public void setQualified(boolean qualified) {
isQualified = qualified;
}
+
+ /**
+ * Returns true if import should be added to interface.
+ *
+ * @return true if import should be added to interface
+ */
+ boolean isForInterface() {
+ return isForInterface;
+ }
+
+ /**
+ * Sets true if import should be added to interface.
+ *
+ * @param forInterface true if import should be added to interface
+ */
+ void setForInterface(boolean forInterface) {
+ isForInterface = forInterface;
+ }
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
index 97feb1b..783a310 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
@@ -178,7 +178,7 @@
public void generateJavaFile(int fileType, YangNode curNode)
throws IOException {
- List<String> imports = this.getJavaImportData().getImports();
+ List<String> imports = this.getJavaImportData().getImports(true);
createPackage(curNode);
enumClassJavaFileHandle = getJavaFileHandle(getJavaClassName(EMPTY_STRING));
generateEnumClassFile(enumClassJavaFileHandle, curNode, imports);
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index b1c45e6..548dbac 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
@@ -17,7 +17,6 @@
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangAugment;
-import org.onosproject.yangutils.datamodel.YangAugmentableNode;
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangDataStructure;
@@ -76,7 +75,6 @@
import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.updateJavaFileInfo;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.generateEnumAttributeString;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefinition;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.sortImports;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateBuilderClassFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateBuilderInterfaceFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateDefaultClassFile;
@@ -109,13 +107,13 @@
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.MISSING_PARENT_NODE;
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getBeanFiles;
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsg;
-import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST_IMPORT;
import static org.onosproject.yangutils.utils.UtilConstants.AUGMENT_MAP_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.BIT_SET;
import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
+import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS;
import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_CAPS;
import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
@@ -123,14 +121,15 @@
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EXTEND;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_IMPORT_CLASS;
+import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_IMPORT_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.HASH_MAP;
import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION;
-import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.ITR_IMPORT;
+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.METHOD;
-import static org.onosproject.yangutils.utils.UtilConstants.METHOD_IMPORT;
+import static org.onosproject.yangutils.utils.UtilConstants.MAP;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_TYPE_ATTRIBUTE;
import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_TYPE_CLASS;
@@ -142,7 +141,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.REFLECT_IMPORTS;
import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
-import static org.onosproject.yangutils.utils.UtilConstants.SET_IMPORT;
import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
import static org.onosproject.yangutils.utils.UtilConstants.SUBTREE_FILTERED;
@@ -294,20 +292,11 @@
private static final String KEY_CLASS_FILE_NAME_SUFFIX = KEYS;
/**
- * if type is binary.
- */
- private boolean isBinary;
-
- /**
* Current attributes YANG node
*/
private YangNode attrNode;
/**
- * Sub tree filtering requires child class imports for type cast.
- */
- private final List<JavaQualifiedTypeInfoTranslator> subTreeImports = new ArrayList<>();
- /**
* Information about the java files being generated.
*/
private JavaFileInfoTranslator javaFileInfo;
@@ -355,29 +344,6 @@
private File implClassJavaFileHandle;
/**
- * Returns java file handle for key class.
- *
- * @return java file handle for key class
- */
- public File getKeyClassJavaFileHandle() {
- return keyClassJavaFileHandle;
- }
-
- /**
- * Sets java file handle for key class.
- *
- * @param keyClassJavaFileHandle java file handle for key class
- */
- public void setKeyClassJavaFileHandle(File keyClassJavaFileHandle) {
- this.keyClassJavaFileHandle = keyClassJavaFileHandle;
- }
-
- /**
- * Java file handle for impl class file.
- */
- private File keyClassJavaFileHandle;
-
- /**
* Temporary file handle for attribute.
*/
private File attributesTempFileHandle;
@@ -654,17 +620,17 @@
TempJavaBeanFragmentFiles tempFiles =
getBeanFiles((JavaCodeGeneratorInfo) parent);
tempFiles.setAttrNode(curNode);
- if (curNode instanceof YangChoice) {
+ JavaFileInfoTranslator fileInfo = ((JavaCodeGeneratorInfo) parent)
+ .getJavaFileInfo();
+ if (curNode instanceof YangChoice && curNode.isOpTypeReq()) {
JavaQualifiedTypeInfoTranslator info = new
JavaQualifiedTypeInfoTranslator();
info.setClassInfo(INVOCATION_TARGET_EXCEPTION);
info.setPkgInfo(REFLECT_IMPORTS);
- tempFiles.addToSubTreeImports(info);
- info = new
- JavaQualifiedTypeInfoTranslator();
- info.setClassInfo(METHOD);
- info.setPkgInfo(REFLECT_IMPORTS);
- tempFiles.addToSubTreeImports(info);
+ info.setForInterface(false);
+ tempFiles.getJavaImportData().addImportInfo(
+ info, getCapitalCase(fileInfo.getJavaName()),
+ fileInfo.getPackage());
}
JavaAttributeInfo attr = getCurNodeAsAttributeInTarget(
curNode, parent, isList, tempFiles);
@@ -723,10 +689,16 @@
}
qualified = parentImportData.addImportInfo(typeInfo, className,
fileInfo.getPackage());
- if (!qualified && !(curNode instanceof YangChoice)) {
- addChildDefaultClassImportForSubTreeFilter(typeInfo.getPkgInfo(),
- typeInfo.getClassInfo(),
- tempFiles);
+ if (!qualified && !(curNode instanceof YangChoice) &&
+ curNode.isOpTypeReq()) {
+ String name = DEFAULT_CAPS + typeInfo.getClassInfo();
+ JavaQualifiedTypeInfoTranslator qInfo =
+ new JavaQualifiedTypeInfoTranslator();
+ qInfo.setForInterface(false);
+ qInfo.setPkgInfo(typeInfo.getPkgInfo());
+ qInfo.setClassInfo(name);
+ parentImportData.addImportInfo(qInfo, className,
+ fileInfo.getPackage());
}
}
boolean collectionSet = false;
@@ -771,16 +743,6 @@
qualified, listNode);
}
- private static void addChildDefaultClassImportForSubTreeFilter(
- String pkg, String className, TempJavaFragmentFiles tempFile) {
- className = DEFAULT_CAPS + getCapitalCase(className);
- JavaQualifiedTypeInfoTranslator info = new
- JavaQualifiedTypeInfoTranslator();
- info.setClassInfo(className);
- info.setPkgInfo(pkg);
- tempFile.subTreeImports.add(info);
- }
-
/**
* Returns java attribute for leaf.
*
@@ -896,9 +858,7 @@
.getJavaName());
String containedInPkg = tempFiles.getJavaFileInfo().getPackage();
JavaQualifiedTypeInfoTranslator info;
- if (container.getDataType().getDataType() == YangDataTypes.BINARY) {
- tempFiles.setBinary(true);
- } else if (container.getDataType().getDataType() == YangDataTypes.BITS) {
+ if (container.getDataType().getDataType() == YangDataTypes.BITS) {
//Add bitset import for type and leaf value flags.
info = new JavaQualifiedTypeInfoTranslator();
info.setClassInfo(BIT_SET);
@@ -1475,9 +1435,16 @@
String attrType = attr.getImportInfo().getClassInfo();
if (attr.getAttributeType() != null &&
attr.getAttributeType().getDataType() == IDENTITYREF) {
+ String type = attrType;
+ if (pkg != null) {
+ type = pkg + PERIOD + attrType;
+ }
attrType = CLASS_STRING + DIAMOND_OPEN_BRACKET +
- QUESTION_MARK + SPACE + EXTEND + SPACE +
- attrType + DIAMOND_CLOSE_BRACKET;
+ QUESTION_MARK + SPACE + EXTEND + SPACE + type +
+ DIAMOND_CLOSE_BRACKET;
+ return getJavaAttributeDefinition(
+ null, attrType, attrName, attr.isListAttr(), attrAccessType,
+ attr.getCompilerAnnotation());
}
return getJavaAttributeDefinition(
@@ -1616,13 +1583,14 @@
typeInfo.setPkgInfo(info.getPackage().toLowerCase() + PERIOD +
getCapitalCase(info.getJavaName()));
String curNodeName = getCapitalCase(curInfo.getJavaName());
+ boolean isQualified = false;
if (!(curNode instanceof RpcNotificationContainer)) {
- javaImportData.addImportInfo(typeInfo, curNodeName, curInfo
- .getPackage());
+ isQualified = javaImportData.addImportInfo(typeInfo, curNodeName,
+ curInfo.getPackage());
}
JavaAttributeInfo attributeInfo =
getAttributeInfoForTheData(typeInfo, YANG + curNodeName +
- OPERATION_TYPE_ATTRIBUTE, null, false, false);
+ OPERATION_TYPE_ATTRIBUTE, null, isQualified, false);
addJavaSnippetInfoToApplicableTempFiles(attributeInfo, config);
}
@@ -1692,22 +1660,54 @@
/**
* Adds value leaf flag to temp files.
*
- * @param config YANG plugin config
+ * @param config YANG plugin config
+ * @param curNode current yang node
* @throws IOException IO exception
*/
- protected void addYangAugmentedMap(YangPluginConfig config)
+ protected void addYangAugmentedMap(YangPluginConfig config, YangNode curNode)
throws IOException {
+ JavaFileInfoTranslator info = ((JavaCodeGeneratorInfo) curNode)
+ .getJavaFileInfo();
JavaQualifiedTypeInfoTranslator typeInfo =
new JavaQualifiedTypeInfoTranslator();
typeInfo.setClassInfo(AUGMENT_MAP_TYPE);
//Fix for add yangAugmentedInfo in equals/hashcode/and to string method.
typeInfo.setPkgInfo(null);
+ typeInfo.setForInterface(false);
JavaAttributeInfo attributeInfo =
getAttributeInfoForTheData(typeInfo, YANG_AUGMENTED_INFO_MAP,
null, false, false);
+ //MAP
+ addImportInfoOfNode(MAP, COLLECTION_IMPORTS,
+ getCapitalCase(info.getJavaName()),
+ info.getPackage(), true);
+ //HASH map
+ addImportInfoOfNode(HASH_MAP, COLLECTION_IMPORTS,
+ getCapitalCase(info.getJavaName()),
+ info.getPackage(), false);
+
+ if (curNode.isOpTypeReq()) {
+ //exception
+ addImportInfoOfNode(INVOCATION_TARGET_EXCEPTION, REFLECT_IMPORTS,
+ getCapitalCase(info.getJavaName()),
+ info.getPackage(), false);
+ }
addJavaSnippetInfoToApplicableTempFiles(attributeInfo, config);
}
+ private JavaQualifiedTypeInfoTranslator addImportInfoOfNode(
+ String cls, String pkg, String nodeName, String nodePkg,
+ boolean isForInterface) {
+ JavaQualifiedTypeInfoTranslator typeInfo =
+ new JavaQualifiedTypeInfoTranslator();
+ typeInfo.setClassInfo(cls);
+ typeInfo.setPkgInfo(pkg);
+ typeInfo.setForInterface(isForInterface);
+
+ getJavaImportData().addImportInfo(typeInfo, nodeName, nodePkg);
+ return typeInfo;
+ }
+
/**
* Adds the new attribute info to the target generated temporary files.
*
@@ -1845,11 +1845,25 @@
*/
public void generateJavaFile(int fileType, YangNode curNode)
throws IOException {
- List<String> imports =
- getBeanFiles(curNode).getJavaImportData().getImports();
- if (curNode instanceof YangAugmentableNode) {
- addImportsForAugmentableClass(imports, true, true, curNode);
+
+ if (curNode.isOpTypeReq()) {
+ addImportInfoOfNode(BIT_SET, JAVA_UTIL_PKG, getGeneratedJavaClassName(),
+ getJavaFileInfo().getPackage(), false);
}
+ if (isAttributePresent) {
+ //Object utils
+ addImportInfoOfNode(JAVA_UTIL_OBJECTS_IMPORT_CLASS, JAVA_UTIL_PKG,
+ getGeneratedJavaClassName(),
+ getJavaFileInfo().getPackage(), false);
+ //more objects.
+ addImportInfoOfNode(GOOGLE_MORE_OBJECT_IMPORT_CLASS,
+ GOOGLE_MORE_OBJECT_IMPORT_PKG,
+ getGeneratedJavaClassName(),
+ getJavaFileInfo().getPackage(), false);
+ }
+
+ List<String> imports =
+ getBeanFiles(curNode).getJavaImportData().getImports(true);
createPackage(curNode);
//Generate java code.
@@ -1882,35 +1896,16 @@
insertDataIntoJavaFile(interfaceJavaFileHandle, CLOSE_CURLY_BRACKET);
validateLineLength(interfaceJavaFileHandle);
- if (curNode instanceof YangAugmentableNode) {
- addImportsForAugmentableClass(imports, false, true, curNode);
- }
}
- if (curNode.isOpTypeReq()) {
- if (curNode instanceof YangAugmentableNode) {
- addImportsForSubTreeFilterAug(imports);
- }
- addSubTreeImportStrings(imports);
- } else {
+ //add imports for default class.
+ imports = getBeanFiles(curNode).getJavaImportData().getImports(false);
+ if (!curNode.isOpTypeReq()) {
removeCaseParentImport(curNode, imports);
}
if ((fileType & BUILDER_CLASS_MASK) != 0 ||
(fileType & DEFAULT_CLASS_MASK) != 0) {
- if (isAttributePresent) {
- addImportsToStringAndHasCodeMethods(imports, true);
- addArrayListImport(imports);
- }
-
- addBitsAndBase64Imports(curNode, imports);
- if (curNode instanceof YangAugmentableNode) {
- addImportsForAugmentableClass(imports, true, false, curNode);
- if (curNode.isOpTypeReq()) {
- addInvocationExceptionImport(imports);
- }
- }
- sortImports(imports);
//Create impl class file.
implClassJavaFileHandle =
@@ -1939,6 +1934,7 @@
}
if (curNode instanceof YangList) {
+ File keyClassJavaFileHandle;
YangList list = (YangList) curNode;
YangDataStructure data = getYangDataStructure(
list.getCompilerAnnotation());
@@ -1946,8 +1942,7 @@
keyClassJavaFileHandle =
getJavaFileHandle(getJavaClassName(
KEY_CLASS_FILE_NAME_SUFFIX));
- keyClassJavaFileHandle =
- generateKeyClassFile(keyClassJavaFileHandle, curNode);
+ generateKeyClassFile(keyClassJavaFileHandle, curNode);
}
}
@@ -1964,93 +1959,6 @@
imports.remove(impt);
}
- private void addImportsForSubTreeFilterAug(List<String> imports) {
- if (!imports.contains(SET_IMPORT)) {
- imports.add(SET_IMPORT);
- }
- if (!imports.contains(METHOD_IMPORT)) {
- imports.add(METHOD_IMPORT);
- }
- if (!imports.contains(ITR_IMPORT)) {
- imports.add(ITR_IMPORT);
- }
- }
-
- //Adds import for array list.
- private void addArrayListImport(List<String> imports) {
- if (imports.contains(javaImportData.getImportForList())) {
- imports.add(ARRAY_LIST_IMPORT);
- }
- }
-
- //Adds import for bitset and base64 list.
- private void addBitsAndBase64Imports(YangNode curNode, List<String> imports) {
- if (curNode.isOpTypeReq()) {
- String impt = getJavaImportData().getImportForToBitSet();
- if (!imports.contains(impt)) {
- imports.add(getJavaImportData().getImportForToBitSet());
- }
- }
- }
-
- /**
- * Adds imports for ToString and HashCodeMethod.
- *
- * @param imports import list
- * @param operation add or remove
- */
- protected void addImportsToStringAndHasCodeMethods(List<String> imports,
- boolean operation) {
- if (operation) {
- imports.add(javaImportData.getImportForHashAndEquals());
- imports.add(javaImportData.getImportForToString());
- } else {
- imports.remove(javaImportData.getImportForHashAndEquals());
- imports.remove(javaImportData.getImportForToString());
- }
- // TODO change boolean to OPERATION, in all related places.
- }
-
- /**
- * Adds import for map and hash map.
- *
- * @param imports import list
- * @param operations true for adding and false for deletion
- * @param isInterfaceFile if need to add in interface file
- * @param curNode current node
- */
- private void addImportsForAugmentableClass(List<String> imports,
- boolean operations,
- boolean isInterfaceFile,
- YangNode curNode) {
- if (operations) {
- if (!isInterfaceFile) {
- imports.add(javaImportData.getHashMapImport());
- }
- // Add import for hash map only if node is not a YANG choice.
- if (!(curNode instanceof YangChoice)) {
- imports.add(javaImportData.getMapImport());
- }
- } else {
- if (!isInterfaceFile) {
- imports.remove(javaImportData.getHashMapImport());
- }
- imports.remove(javaImportData.getMapImport());
- }
- sortImports(imports);
- }
-
- /**
- * Adds invocation exception import.
- *
- * @param imports list of imports
- */
- private void addInvocationExceptionImport(List<String> imports) {
- if (!imports.contains(INVOCATION_TARGET_EXCEPTION_IMPORT)) {
- imports.add(INVOCATION_TARGET_EXCEPTION_IMPORT);
- }
- }
-
/**
* Removes all temporary file handles.
*
@@ -2231,24 +2139,6 @@
}
/**
- * Sets true if binary type is there for leaf/leaf-list.
- *
- * @param binary true if binary type is there for leaf/leaf-list
- */
- public void setBinary(boolean binary) {
- isBinary = binary;
- }
-
- /**
- * Returns true if binary type is there for leaf/leaf-list.
- *
- * @return true if binary type is there for leaf/leaf-list
- */
- public boolean isBinary() {
- return isBinary;
- }
-
- /**
* Sets attribute's node.
*
* @param attrNode attribute's node
@@ -2257,33 +2147,4 @@
this.attrNode = attrNode;
}
- /**
- * Adds info to sub tree import list.
- *
- * @param info import info
- */
- public void addToSubTreeImports(JavaQualifiedTypeInfoTranslator
- info) {
- boolean isAdded = false;
- for (JavaQualifiedTypeInfoTranslator imports : subTreeImports) {
- if (imports.getClassInfo().equals(info.getClassInfo())) {
- isAdded = true;
- }
- }
- if (!isAdded) {
- subTreeImports.add(info);
- }
- }
-
- private void addSubTreeImportStrings(List<String> imports) {
- for (JavaQualifiedTypeInfoTranslator impt : subTreeImports) {
- String imp = getImportString(impt.getPkgInfo(), impt
- .getClassInfo());
- if (!imports.contains(imp)) {
- imports.add(imp);
- }
- }
- sortImports(imports);
- }
-
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
index 0cb63e1..50dda06 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
@@ -116,7 +116,7 @@
addResolvedAugmentedDataNodeImports(curNode);
List<String> imports = ((JavaCodeGeneratorInfo) curNode)
.getTempJavaCodeFragmentFiles().getServiceTempFiles()
- .getJavaImportData().getImports();
+ .getJavaImportData().getImports(true);
createPackage(curNode);
boolean notification = false;
if (curNode instanceof YangJavaModuleTranslator) {
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
index b0145a8..cb44ca3 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
@@ -18,6 +18,7 @@
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.YangTypeDef;
import org.onosproject.yangutils.datamodel.YangTypeHolder;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.exception.TranslatorException;
@@ -54,7 +55,9 @@
import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.SHORT_TYPE_CONFLICT;
import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.HOLDER_TYPE_DEF;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.LAST;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -159,6 +162,8 @@
private List<YangType<?>> local = new ArrayList<>();
+ private List<JavaAttributeInfo> attrs = new ArrayList<>();
+
/**
* Creates an instance of temporary java code fragment.
*
@@ -264,6 +269,11 @@
}
JavaAttributeInfo javaAttributeInfo = getAttributeForType(type,
config);
+ if (yangTypeHolder instanceof YangTypeDef) {
+ javaAttributeInfo.setCurHolderOrCount(HOLDER_TYPE_DEF);
+ } else if (types.indexOf(type) == types.size() - 1) {
+ javaAttributeInfo.setCurHolderOrCount(LAST);
+ }
if (type.getDataType() == BITS) {
addBitsHandler(javaAttributeInfo, type, this);
}
@@ -281,6 +291,9 @@
}
addTypeConstructor();
addMethodsInConflictCase(config);
+ for (JavaAttributeInfo attr : attrs) {
+ super.addJavaSnippetInfoToApplicableTempFiles(attr, config);
+ }
}
}
@@ -341,7 +354,12 @@
} else {
addMethodsWhenNoConflictingTypes(attr, config, types);
}
- super.addJavaSnippetInfoToApplicableTempFiles(attr, config);
+ String attrHolder = attr.getCurHolderOrCount();
+ if (attrHolder != null && !attrHolder.equals(HOLDER_TYPE_DEF)) {
+ attrs.add(attr);
+ } else {
+ super.addJavaSnippetInfoToApplicableTempFiles(attr, config);
+ }
}
@@ -394,12 +412,17 @@
if (attr != null) {
if (attr.isIntConflict()) {
if (getIntIndex() < getUIntIndex()) {
+ getIntAttribute().setCurHolderOrCount(
+ getUIntAttribute().getCurHolderOrCount());
appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getIntAttribute(),
getGeneratedJavaClassName())
+ NEW_LINE);
addGetterImpl(getIntAttribute());
+
addFromStringMethod(getIntAttribute(), pluginConfig);
} else {
+ getUIntAttribute().setCurHolderOrCount(
+ getIntAttribute().getCurHolderOrCount());
appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getUIntAttribute(),
getGeneratedJavaClassName())
+ NEW_LINE);
@@ -415,12 +438,16 @@
if (attr != null) {
if (attr.isLongConflict()) {
if (getLongIndex() < getULongIndex()) {
+ getLongAttribute().setCurHolderOrCount(
+ getULongAttribute().getCurHolderOrCount());
appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getLongAttribute(),
getGeneratedJavaClassName())
+ NEW_LINE);
addGetterImpl(getLongAttribute());
addFromStringMethod(getLongAttribute(), pluginConfig);
} else {
+ getULongAttribute().setCurHolderOrCount(
+ getLongAttribute().getCurHolderOrCount());
appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getULongAttribute(),
getGeneratedJavaClassName())
+ NEW_LINE);
@@ -437,12 +464,16 @@
if (attr != null) {
if (attr.isShortConflict()) {
if (getShortIndex() < getUInt8Index()) {
+ getShortAttribute().setCurHolderOrCount(
+ getUInt8Attribute().getCurHolderOrCount());
appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getShortAttribute(),
getGeneratedJavaClassName())
+ NEW_LINE);
addGetterImpl(getShortAttribute());
addFromStringMethod(getShortAttribute(), pluginConfig);
} else {
+ getUInt8Attribute().setCurHolderOrCount(
+ getShortAttribute().getCurHolderOrCount());
appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getUInt8Attribute(),
getGeneratedJavaClassName())
+ NEW_LINE);
@@ -611,7 +642,7 @@
throws IOException {
List<String> imports = new ArrayList<>();
if (isAttributePresent()) {
- imports = getJavaImportData().getImports();
+ imports = getJavaImportData().getImports(true);
}
createPackage(curNode);
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
index 8514291..affda3e 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
@@ -433,7 +433,7 @@
generateCodeOfNode(info, config);
TempJavaBeanFragmentFiles tempFiles = getBeanFiles(info);
if (!(info instanceof YangChoice)) {
- tempFiles.addYangAugmentedMap(config);
+ tempFiles.addYangAugmentedMap(config, (YangNode) info);
}
if (info instanceof YangCase) {
YangNode parent = ((YangCase) info).getParent();
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
index 9051d17..793c90b 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
@@ -154,7 +154,7 @@
isQualified = importData.addImportInfo(basePkgInfo, className,
javaFileInfo.getPackage());
if (!isQualified) {
- imports = importData.getImports();
+ imports = importData.getImports(true);
}
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
index 74e1931..ea376ff 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
@@ -163,7 +163,9 @@
}
if (!isRootNodesCodeGenRequired(this)) {
- generateInterfaceFileForNonDataNodes(this);
+ if (getChild() != null) {
+ generateInterfaceFileForNonDataNodes(this);
+ }
} else {
getTempJavaCodeFragmentFiles()
.generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
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" +
diff --git a/generator/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/generator/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index c289e77..ecc70b6 100644
--- a/generator/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/generator/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -1224,7 +1224,8 @@
"short", "static", "strictfp", "super", "switch",
"synchronized", "this", "throw", "throws", "transient",
"true", "try", "void", "volatile", "while", "list",
- "map", "arrayList", "hashMap", "linkedList",
+ "map", "arrayList", "hashMap", "linkedList", "notify",
+ "notifyAll", "Method",
"collections");
/**
@@ -1727,17 +1728,10 @@
*/
public static final String INVOCATION_TARGET_EXCEPTION =
"InvocationTargetException";
-
- /**
- * Static attribute for InvocationTargetException.
- */
- public static final String INVOCATION_TARGET_EXCEPTION_IMPORT = "import" +
- " java.lang.reflect.InvocationTargetException;\n";
-
/**
* Static attribute for arrayList.
*/
- public static final String ARRAY_LIST = "ArrayList<>()";
+ public static final String ARRAY_LIST_INIT = "ArrayList<>()";
/**
* Static attribute for arrayList import.
@@ -1746,23 +1740,6 @@
IMPORT + COLLECTION_IMPORTS + ".ArrayList;\n";
/**
- * Static attribute for set collection import.
- */
- public static final String SET_IMPORT = IMPORT + COLLECTION_IMPORTS +
- PERIOD + SET + SEMI_COLON + NEW_LINE;
-
- /**
- * Static attribute for reflect method import.
- */
- public static final String METHOD_IMPORT = IMPORT + REFLECT_IMPORTS +
- PERIOD + METHOD + SEMI_COLON + NEW_LINE;
-
- /**
- * Static attribute for collection iterator import.
- */
- public static final String ITR_IMPORT = IMPORT + COLLECTION_IMPORTS +
- PERIOD + "Iterator;\n";
- /**
* Static attribute for unused keyword.
*/
public static final String UNUSED = "UNUSED";
@@ -1918,6 +1895,16 @@
//File type extension for java classes.
public static final String JAVA_FILE_EXTENSION = ".java";
+ /**
+ * Static param for typedef.
+ */
+ public static final String HOLDER_TYPE_DEF = "typedef";
+
+ /**
+ * Static param for last.
+ */
+ public static final String LAST = "last";
+
// No instantiation.
private UtilConstants() {
}
diff --git a/plugin/maven/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileIdentityLinkingTest.java b/plugin/maven/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileIdentityLinkingTest.java
index fe46f72..19610b1 100644
--- a/plugin/maven/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileIdentityLinkingTest.java
+++ b/plugin/maven/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileIdentityLinkingTest.java
@@ -159,6 +159,7 @@
utilManager.translateToJava(yangPluginConfig);
compileCode(System.getProperty("user.dir") + File
.separator + "target/identityTranslator/");
+ deleteDirectory("target/identityTranslator/");
}
/**
diff --git a/plugin/maven/src/test/java/org/onosproject/yangutils/plugin/manager/TypeDefTranslatorTest.java b/plugin/maven/src/test/java/org/onosproject/yangutils/plugin/manager/TypeDefTranslatorTest.java
index 1c5c56c..a7320de 100644
--- a/plugin/maven/src/test/java/org/onosproject/yangutils/plugin/manager/TypeDefTranslatorTest.java
+++ b/plugin/maven/src/test/java/org/onosproject/yangutils/plugin/manager/TypeDefTranslatorTest.java
@@ -105,6 +105,6 @@
yangPluginConfig.setCodeGenDir(DIR);
utilManager.translateToJava(yangPluginConfig);
compileCode(DIR1);
- deleteDirectory(DIR);
+ //deleteDirectory(DIR);
}
}
diff --git a/plugin/maven/src/test/resources/identityTranslator/test.yang b/plugin/maven/src/test/resources/identityTranslator/test.yang
index e8c1889..f4f61bd 100644
--- a/plugin/maven/src/test/resources/identityTranslator/test.yang
+++ b/plugin/maven/src/test/resources/identityTranslator/test.yang
@@ -31,6 +31,17 @@
base ipv4-address-family;
}
}
+
+ container ip {
+ container ipv4-address-family {
+ leaf tunnel1 {
+ type identityref {
+ base ipv4-address-family;
+ }
+ }
+ }
+ }
+
typedef type3 {
type union {
type type2;