[ONOS-4351][ONOS-4524] Augment linking and defect fixed.
Change-Id: I7c8e8c90579eea4631e014c4906a543a3c249427
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index 4f363d8..6ebc453 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -20,8 +20,10 @@
import java.io.IOException;
import java.util.List;
+import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
@@ -55,7 +57,7 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefStart;
+import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getJavaPackageFromPackagePath;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
@@ -226,6 +228,27 @@
}
/**
+ * Initiates generation of file based on generated file type.
+ *
+ * @param file generated file
+ * @param type generated file type
+ * @param imports imports for the file
+ * @param curNode current YANG node
+ * @param className class name
+ * @throws IOException when fails to generate a file
+ */
+ public static void initiateJavaFileGeneration(File file, int type, List<String> imports,
+ YangNode curNode, String className) throws IOException {
+
+ try {
+ file.createNewFile();
+ appendContents(file, type, imports, curNode, className);
+ } catch (IOException e) {
+ throw new IOException("Failed to create " + file.getName() + " class file.");
+ }
+ }
+
+ /**
* Appends all the contents into a generated java file.
*
* @param file generated file
@@ -235,40 +258,76 @@
* @param importsList list of java imports.
* @throws IOException when fails to append contents
*/
- private static void appendContents(File file, String fileName, int type, List<String> importsList,
- String pkg)
+ private static void appendContents(File file, int type, List<String> importsList, YangNode curNode,
+ String className) throws IOException {
+
+ JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+
+ String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
+ String pkgString = parsePackageString(path, importsList);
+
+ switch (type) {
+ case INTERFACE_MASK:
+ appendHeaderContents(file, pkgString, importsList);
+ write(file, type, INTERFACE, curNode, className);
+ break;
+ case GENERATE_SERVICE_AND_MANAGER:
+ appendHeaderContents(file, pkgString, importsList);
+ write(file, type, RPC_INTERFACE, curNode, className);
+ break;
+ case GENERATE_EVENT_CLASS:
+ appendHeaderContents(file, pkgString, importsList);
+ write(file, type, EVENT, curNode, className);
+ break;
+ default:
+ break;
+ }
+ }
+
+ /**
+ * Appends all the contents into a generated java file.
+ *
+ * @param file generated file
+ * @param fileName generated file name
+ * @param type generated file type
+ * @param pkg generated file package
+ * @param importsList list of java imports.
+ * @throws IOException when fails to append contents
+ */
+ private static void appendContents(File file, String fileName, int type, List<String> importsList, String pkg)
throws IOException {
String pkgString = parsePackageString(pkg, importsList);
- if ((type & IMPL_CLASS_MASK) != 0) {
+ switch (type) {
+ case IMPL_CLASS_MASK:
write(file, fileName, type, IMPL_CLASS);
- } else if ((type & BUILDER_INTERFACE_MASK) != 0) {
+ break;
+ case BUILDER_INTERFACE_MASK:
write(file, fileName, type, BUILDER_INTERFACE);
- } else if ((type & GENERATE_TYPEDEF_CLASS) != 0) {
+ break;
+ case GENERATE_TYPEDEF_CLASS:
appendHeaderContents(file, pkgString, importsList);
write(file, fileName, type, IMPL_CLASS);
- } else if ((type & INTERFACE_MASK) != 0) {
- appendHeaderContents(file, pkgString, importsList);
- write(file, fileName, type, INTERFACE);
- } else if ((type & BUILDER_CLASS_MASK) != 0) {
+ break;
+ case BUILDER_CLASS_MASK:
appendHeaderContents(file, pkgString, importsList);
write(file, fileName, type, BUILDER_CLASS);
- } else if ((type & GENERATE_UNION_CLASS) != 0) {
+ break;
+ case GENERATE_UNION_CLASS:
appendHeaderContents(file, pkgString, importsList);
write(file, fileName, type, IMPL_CLASS);
- } else if ((type & GENERATE_ENUM_CLASS) != 0) {
+ break;
+ case GENERATE_ENUM_CLASS:
appendHeaderContents(file, pkgString, importsList);
write(file, fileName, type, ENUM_CLASS);
- } else if ((type & GENERATE_SERVICE_AND_MANAGER) != 0) {
- appendHeaderContents(file, pkgString, importsList);
- write(file, fileName, type, RPC_INTERFACE);
- } else if ((type & GENERATE_EVENT_CLASS) != 0) {
- appendHeaderContents(file, pkgString, importsList);
- write(file, fileName, type, EVENT);
- } else if ((type & GENERATE_EVENT_LISTENER_INTERFACE) != 0) {
+ break;
+ case GENERATE_EVENT_LISTENER_INTERFACE:
appendHeaderContents(file, pkgString, importsList);
write(file, fileName, type, EVENT_LISTENER);
+ break;
+ default:
+ break;
}
}
@@ -333,8 +392,9 @@
* @param javaDocType java doc type
* @throws IOException when fails to write into a file
*/
- private static void write(File file, String fileName, int genType, JavaDocType javaDocType)
+ private static void write(File file, int genType, JavaDocType javaDocType, YangNode curNode, String fileName)
throws IOException {
+
if ((genType & GENERATE_SERVICE_AND_MANAGER) != 0) {
if (!fileName.contains(SERVICE)) {
insertDataIntoJavaFile(file, getJavaDoc(RPC_MANAGER, fileName + MANAGER, false));
@@ -344,7 +404,22 @@
} else {
insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
}
- insertDataIntoJavaFile(file, getJavaClassDefStart(genType, fileName));
+ insertDataIntoJavaFile(file, generateClassDefinition(genType, fileName, curNode));
+ }
+
+ /**
+ * Writes data to the specific generated file.
+ *
+ * @param file generated file
+ * @param fileName file name
+ * @param genType generated file type
+ * @param javaDocType java doc type
+ * @throws IOException when fails to write into a file
+ */
+ private static void write(File file, String fileName, int genType, JavaDocType javaDocType)
+ throws IOException {
+ insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
+ insertDataIntoJavaFile(file, generateClassDefinition(genType, fileName));
}
/**
@@ -354,8 +429,8 @@
* @return enum's attribute
*/
public static String getEnumsValueAttribute(String className) {
- return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + INT + SPACE + getSmallCase(className) + SEMI_COLAN
- + NEW_LINE;
+ return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + INT + SPACE + getSmallCase(className)
+ + SEMI_COLAN + NEW_LINE;
}
}