[ONOS-4527,ONOS-4524,ONOS-4536,ONOS-4541,ONOS-4549,ONOS-4550,ONOS-4557
,ONOS-4558,ONOS-4545,ONOS-4543,ONOS-4546]
Checkstyle error in generated code handled and defect fixed.
Change-Id: Ifef5a22f91d4ee21767f1e2c6d0dd5b5b0b8cfcc
diff --git a/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java b/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
index 7d8fd84..cef7706 100644
--- a/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
+++ b/src/main/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtil.java
@@ -22,6 +22,8 @@
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.translator.exception.TranslatorException;
@@ -84,10 +86,12 @@
YangNode parent = getParentNodeInGenCode(yangNode);
if (parent != null) {
pkgInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName();
- addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), true);
+ addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), true,
+ ((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig());
} else {
pkgInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getJavaName();
- addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), false);
+ addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), false,
+ ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getPluginConfig());
}
} catch (IOException e) {
throw new IOException("failed to create package-info file");
@@ -120,6 +124,7 @@
*/
public static String readAppendFile(String toAppend, String spaces)
throws IOException {
+
FileReader fileReader = new FileReader(toAppend);
BufferedReader bufferReader = new BufferedReader(fileReader);
try {
@@ -156,15 +161,22 @@
*/
public static void updateFileHandle(File inputFile, String contentTobeAdded, boolean isClose)
throws IOException {
+
+ List<FileWriter> fileWriterStore = new ArrayList<>();
+
FileWriter fileWriter = new FileWriter(inputFile, true);
+ fileWriterStore.add(fileWriter);
PrintWriter outputPrintWriter = new PrintWriter(fileWriter, true);
if (!isClose) {
outputPrintWriter.write(contentTobeAdded);
outputPrintWriter.flush();
outputPrintWriter.close();
} else {
- fileWriter.flush();
- fileWriter.close();
+ for (FileWriter curWriter : fileWriterStore) {
+ curWriter.flush();
+ curWriter.close();
+ curWriter = null;
+ }
}
}
}
diff --git a/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
index 335de7f..218f56d 100644
--- a/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
+++ b/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -17,6 +17,7 @@
package org.onosproject.yangutils.utils.io.impl;
import org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax;
+import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
@@ -181,7 +182,12 @@
/**
* For manager setters.
*/
- MANAGER_SETTER_METHOD
+ MANAGER_SETTER_METHOD,
+
+ /**
+ * For event subject.
+ */
+ EVENT_SUBJECT_CLASS
}
/**
@@ -190,14 +196,15 @@
* @param type java doc type
* @param name name of the YangNode
* @param isList is list attribute
+ * @param pluginConfig plugin configurations
* @return javadocs.
*/
- public static String getJavaDoc(JavaDocType type, String name, boolean isList) {
+ public static String getJavaDoc(JavaDocType type, String name, boolean isList, YangPluginConfig pluginConfig) {
- name = JavaIdentifierSyntax.getSmallCase(getCamelCase(name, null));
+ name = JavaIdentifierSyntax.getSmallCase(getCamelCase(name, pluginConfig.getConflictResolver()));
switch (type) {
case IMPL_CLASS: {
- return generateForImplClass(name);
+ return generateForClass(name);
}
case BUILDER_CLASS: {
return generateForBuilderClass(name);
@@ -248,7 +255,7 @@
return generateForRpcService(name);
}
case RPC_MANAGER: {
- return generateForImplClass(name);
+ return generateForClass(name);
}
case EVENT: {
return generateForEvent(name);
@@ -256,6 +263,9 @@
case EVENT_LISTENER: {
return generateForEventListener(name);
}
+ case EVENT_SUBJECT_CLASS: {
+ return generateForClass(name);
+ }
default: {
return generateForConstructors(name);
}
@@ -279,14 +289,17 @@
* @param rpcName name of the rpc
* @param inputName name of input
* @param outputName name of output
+ * @param pluginConfig plugin configurations
* @return javaDocs of rpc method
*/
- public static String generateJavaDocForRpc(String rpcName, String inputName, String outputName) {
- rpcName = getCamelCase(rpcName, null);
+ public static String generateJavaDocForRpc(String rpcName, String inputName, String outputName,
+ YangPluginConfig pluginConfig) {
+ rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
- String javadoc = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RPC
- + rpcName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
- + getInputString(inputName, rpcName);
+ String javadoc =
+ NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RPC
+ + rpcName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
+ + getInputString(inputName, rpcName);
if (!outputName.equals(VOID)) {
javadoc = javadoc + getOutputString(outputName, rpcName);
}
@@ -470,7 +483,7 @@
* @param className class name
* @return javaDocs
*/
- private static String generateForImplClass(String className) {
+ private static String generateForClass(String className) {
return NEW_LINE + JAVA_DOC_FIRST_LINE + IMPL_CLASS_JAVA_DOC + className + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
}
diff --git a/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java b/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
index 4a3f847..ff2e3e7 100644
--- a/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
+++ b/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
@@ -60,8 +60,8 @@
* operations
*/
public static List<String> getYangFiles(String root) throws IOException {
- List<String> yangFiles = getFiles(root, YANG_FILE_EXTENTION);
- return yangFiles;
+
+ return getFiles(root, YANG_FILE_EXTENTION);
}
/**
diff --git a/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java b/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
index 835b675..b505111 100644
--- a/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
+++ b/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
@@ -16,32 +16,38 @@
package org.onosproject.yangutils.utils.io.impl;
+import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Iterator;
-import java.util.List;
import java.util.LinkedList;
-import java.util.Stack;
+import java.util.List;
import java.util.Set;
+import java.util.Stack;
+import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
import org.apache.maven.model.Resource;
import org.apache.maven.project.MavenProject;
import org.onosproject.yangutils.plugin.manager.YangFileInfo;
-
+import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
import org.slf4j.Logger;
import org.sonatype.plexus.build.incremental.BuildContext;
import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.HASH;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
import static org.onosproject.yangutils.utils.UtilConstants.ORG;
import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE;
+import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
@@ -61,6 +67,9 @@
private static final Logger log = getLogger(YangIoUtils.class);
private static final String TARGET_RESOURCE_PATH = SLASH + TEMP + SLASH + YANG_RESOURCES + SLASH;
+ private static final int LINE_SIZE = 116;
+ private static final int SUB_LINE_SIZE = 112;
+ private static final int ZERO = 0;
/**
* Creates an instance of YANG io utils.
@@ -83,19 +92,19 @@
/**
* Adds package info file for the created directory.
*
- * @param path directory path
- * @param classInfo class info for the package
- * @param pack package of the directory
+ * @param path directory path
+ * @param classInfo class info for the package
+ * @param pack package of the directory
* @param isChildNode is it a child node
+ * @param pluginConfig plugin configurations
* @throws IOException when fails to create package info file
*/
- public static void addPackageInfo(File path, String classInfo, String pack, boolean isChildNode)
+ public static void addPackageInfo(File path, String classInfo, String pack, boolean isChildNode,
+ YangPluginConfig pluginConfig)
throws IOException {
- if (pack.contains(ORG)) {
- String[] strArray = pack.split(ORG);
- pack = ORG + strArray[1];
- }
+ pack = parsePkg(pack);
+
try {
File packageInfo = new File(path + SLASH + "package-info.java");
@@ -105,9 +114,12 @@
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(CopyrightHeader.getCopyrightHeader());
- bufferedWriter.write(getJavaDoc(PACKAGE_INFO, classInfo, isChildNode));
- bufferedWriter.write(PACKAGE + SPACE + pack + SEMI_COLAN);
-
+ bufferedWriter.write(getJavaDoc(PACKAGE_INFO, classInfo, isChildNode, pluginConfig));
+ String pkg = PACKAGE + SPACE + pack + SEMI_COLAN;
+ if (pkg.length() > LINE_SIZE) {
+ pkg = whenDelimiterIsPersent(pkg, LINE_SIZE);
+ }
+ bufferedWriter.write(pkg);
bufferedWriter.close();
fileWriter.close();
} catch (IOException e) {
@@ -116,6 +128,32 @@
}
/**
+ * Parses package and returns updated package.
+ *
+ * @param pack package needs to be updated
+ * @return updated package
+ */
+ public static String parsePkg(String pack) {
+
+ if (pack.contains(ORG)) {
+ String[] strArray = pack.split(ORG);
+ if (strArray.length >= 3) {
+ for (int i = 1; i < strArray.length; i++) {
+ if (i == 1) {
+ pack = ORG + strArray[1];
+ } else {
+ pack = pack + ORG + strArray[i];
+ }
+ }
+ } else {
+ pack = ORG + strArray[1];
+ }
+ }
+
+ return pack;
+ }
+
+ /**
* Cleans the generated directory if already exist in source folder.
*
* @param dir generated directory in previous build
@@ -169,7 +207,7 @@
/**
* Adds generated source directory to the compilation root.
*
- * @param source directory
+ * @param source directory
* @param project current maven project
* @param context current build context
*/
@@ -182,7 +220,7 @@
/**
* Removes extra char from the string.
*
- * @param valueString string to be trimmed
+ * @param valueString string to be trimmed
* @param removealStirng extra chars
* @return new string
*/
@@ -217,8 +255,8 @@
* Returns the directory path of the package in canonical form.
*
* @param baseCodeGenPath base path where the generated files needs to be
- * put
- * @param pathOfJavaPkg java package of the file being generated
+ * put
+ * @param pathOfJavaPkg java package of the file being generated
* @return absolute path of the package in canonical form
*/
public static String getDirectory(String baseCodeGenPath, String pathOfJavaPkg) {
@@ -238,8 +276,8 @@
* Returns the absolute path of the package in canonical form.
*
* @param baseCodeGenPath base path where the generated files needs to be
- * put
- * @param pathOfJavaPkg java package of the file being generated
+ * put
+ * @param pathOfJavaPkg java package of the file being generated
* @return absolute path of the package in canonical form
*/
public static String getAbsolutePackagePath(String baseCodeGenPath, String pathOfJavaPkg) {
@@ -249,9 +287,9 @@
/**
* Copies YANG files to the current project's output directory.
*
- * @param yangFileInfo set of YANG files
- * @param outputDir project's output directory
- * @param project maven project
+ * @param yangFileInfo list of YANG files
+ * @param outputDir project's output directory
+ * @param project maven project
* @throws IOException when fails to copy files to destination resource directory
*/
public static void copyYangFilesToTarget(Set<YangFileInfo> yangFileInfo, String outputDir, MavenProject project)
@@ -318,4 +356,113 @@
throw new IOException("Failed to insert in " + file + "file");
}
}
+
+ /**
+ * Validates a line size in given file whether it is having more then 120 characters.
+ * If yes it will update and give a new file.
+ *
+ * @param dataFile file in which need to verify all lines.
+ * @return updated file
+ * @throws IOException when fails to do IO operations.
+ */
+ public static File validateLineLength(File dataFile) throws IOException {
+ File tempFile = dataFile;
+ FileReader fileReader = new FileReader(dataFile);
+ BufferedReader bufferReader = new BufferedReader(fileReader);
+ try {
+ StringBuilder stringBuilder = new StringBuilder();
+ String line = bufferReader.readLine();
+
+ while (line != null) {
+ if (line.length() > LINE_SIZE) {
+ if (line.contains(PERIOD)) {
+ line = whenDelimiterIsPersent(line, LINE_SIZE);
+ } else if (line.contains(SPACE)) {
+ line = whenSpaceIsPresent(line, LINE_SIZE);
+ }
+ stringBuilder.append(line);
+ } else {
+ stringBuilder.append(line + NEW_LINE);
+ }
+ line = bufferReader.readLine();
+ }
+ FileWriter writer = new FileWriter(tempFile);
+ writer.write(stringBuilder.toString());
+ writer.close();
+ return tempFile;
+ } finally {
+ fileReader.close();
+ bufferReader.close();
+ }
+ }
+
+ /*When delimiters are present in the given line.*/
+ private static String whenDelimiterIsPersent(String line, int lineSize) {
+ StringBuilder stringBuilder = new StringBuilder();
+
+ if (line.length() > lineSize) {
+ String[] strArray = line.split(Pattern.quote(PERIOD));
+ stringBuilder = updateString(strArray, stringBuilder, PERIOD, lineSize);
+ } else {
+ stringBuilder.append(line + NEW_LINE);
+ }
+ String[] strArray = stringBuilder.toString().split(NEW_LINE);
+ StringBuilder tempBuilder = new StringBuilder();
+ for (String str : strArray) {
+ if (str.length() > SUB_LINE_SIZE) {
+ if (line.contains(PERIOD) && !line.contains(PERIOD + HASH + OPEN_PARENTHESIS)) {
+ String[] strArr = str.split(Pattern.quote(PERIOD));
+ tempBuilder = updateString(strArr, tempBuilder, PERIOD, SUB_LINE_SIZE);
+ } else if (str.contains(SPACE)) {
+ tempBuilder.append(whenSpaceIsPresent(str, SUB_LINE_SIZE));
+ }
+ } else {
+ tempBuilder.append(str + NEW_LINE);
+ }
+ }
+ return tempBuilder.toString();
+
+ }
+
+ /*When spaces are present in the given line.*/
+ private static String whenSpaceIsPresent(String line, int lineSize) {
+ StringBuilder stringBuilder = new StringBuilder();
+ if (line.length() > lineSize) {
+ String[] strArray = line.split(SPACE);
+ stringBuilder = updateString(strArray, stringBuilder, SPACE, lineSize);
+ } else {
+ stringBuilder.append(line + NEW_LINE);
+ }
+ return stringBuilder.toString();
+ }
+
+ /*Updates the given line with the given size conditions.*/
+ private static StringBuilder updateString(String[] strArray, StringBuilder stringBuilder, String string,
+ int lineSize) {
+
+ StringBuilder tempBuilder = new StringBuilder();
+ for (String str : strArray) {
+ tempBuilder.append(str + string);
+ if (tempBuilder.length() > lineSize) {
+ String tempString = stringBuilder.toString();
+ stringBuilder.delete(ZERO, stringBuilder.length());
+ tempString = trimAtLast(tempString, string);
+ stringBuilder.append(tempString);
+ if (string.equals(PERIOD)) {
+ stringBuilder.append(NEW_LINE + TWELVE_SPACE_INDENTATION + PERIOD + str + string);
+ } else {
+ stringBuilder.append(NEW_LINE + TWELVE_SPACE_INDENTATION + str + string);
+ }
+ tempBuilder.delete(ZERO, tempBuilder.length());
+ tempBuilder.append(TWELVE_SPACE_INDENTATION);
+ } else {
+ stringBuilder.append(str + string);
+ }
+ }
+ String tempString = stringBuilder.toString();
+ tempString = trimAtLast(tempString, string);
+ stringBuilder.delete(ZERO, stringBuilder.length());
+ stringBuilder.append(tempString + NEW_LINE);
+ return stringBuilder;
+ }
}