[ONOS-4303, ONOS-4508, ONOS-4509, ONOS-4510, ONOS-4351]notification,rpc,union,sub-module,augment
Change-Id: Ibeed9ff965c13fd66743c1080cb1350d93a3a435
diff --git a/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index eeee061..965367c 100644
--- a/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -41,6 +41,18 @@
public static final String INTERFACE_JAVA_DOC = " * Abstraction of an entity which represents the"
+ " functionality of ";
+
+ /**
+ * JavaDocs for event.
+ */
+ public static final String EVENT_JAVA_DOC = " * Represents event implementation of ";
+
+ /**
+ * JavaDocs for event listener.
+ */
+ public static final String EVENT_LISTENER_JAVA_DOC = " * Abstraction for event listener of ";
+
+
/**
* JavaDocs for builder interface class.
*/
@@ -97,6 +109,11 @@
public static final String JAVA_DOC_SETTERS = " * Returns the builder object of ";
/**
+ * JavaDocs's description for setter method.
+ */
+ public static final String JAVA_DOC_MANAGER_SETTERS = " * Sets the value to attribute ";
+
+ /**
* JavaDocs's description for OF method.
*/
public static final String JAVA_DOC_OF = " * Returns the object of ";
@@ -677,6 +694,17 @@
public static final String BUILDER = "Builder";
/**
+ * Static attribute for manager syntax.
+ */
+ public static final String MANAGER = "Manager";
+
+ /**
+ * Static attribute for service syntax.
+ */
+ public static final String SERVICE = "Service";
+
+
+ /**
* Static attribute for interface syntax.
*/
public static final String INTERFACE = "interface";
@@ -742,6 +770,16 @@
public static final String SERVICE_METHOD_STRING = "Service";
/**
+ * For event file generation.
+ */
+ public static final String EVENT_STRING = "Event";
+
+ /**
+ * For event listener file generation.
+ */
+ public static final String EVENT_LISTENER_STRING = "Listener";
+
+ /**
* Static attribute for impl syntax.
*/
public static final String IMPL = "Impl";
@@ -837,6 +875,11 @@
public static final String ARRAY_LIST = "ArrayList";
/**
+ * comment to be added for autogenerated impl methods.
+ */
+ public static final String YANG_UTILS_TODO = "//TODO: YANG utils generated code";
+
+ /**
* Creates an instance of util constants.
*/
private UtilConstants() {
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 c259a7f..1dced05 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
@@ -23,17 +23,24 @@
import java.io.IOException;
import java.io.PrintWriter;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getJavaPackageFromPackagePath;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getParentNodeInGenCode;
import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.MULTIPLE_NEW_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC_OF_CHILD;
import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.addPackageInfo;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.createDirectories;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
/**
* Represents utility to handle file system operations.
@@ -61,15 +68,29 @@
/**
* Creates a package structure with package info java file if not present.
*
- * @param pkg java package string
- * @param pkgInfo description of package
+ * @param yangNode YANG node for which code is being generated
* @throws IOException any IO exception
*/
- public static void createPackage(String pkg, String pkgInfo) throws IOException {
- if (!doesPackageExist(pkg)) {
+ public static void createPackage(YangNode yangNode)
+ throws IOException {
+
+ YangNode parent = getParentNodeInGenCode(yangNode);
+ JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo();
+ String absolutePath = getAbsolutePackagePath(javaFileInfo.getBaseCodeGenPath(),
+ javaFileInfo.getPackageFilePath());
+
+ String pkgInfo;
+ if (parent != null) {
+ pkgInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName()
+ + PACKAGE_INFO_JAVADOC_OF_CHILD;
+ } else {
+ pkgInfo = javaFileInfo.getJavaName();
+ }
+
+ if (!doesPackageExist(absolutePath)) {
try {
- File pack = createDirectories(pkg);
- addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg));
+ File pack = createDirectories(absolutePath);
+ addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(absolutePath));
} catch (IOException e) {
throw new IOException("failed to create package-info file");
}
@@ -81,12 +102,13 @@
* file.
*
* @param toAppend destination file in which the contents of source file is
- * appended
+ * appended
* @param srcFile source file from which data is read and added to to append
- * file
+ * file
* @throws IOException any IO errors
*/
- public static void appendFileContents(File toAppend, File srcFile) throws IOException {
+ public static void appendFileContents(File toAppend, File srcFile)
+ throws IOException {
updateFileHandle(srcFile, NEW_LINE + readAppendFile(toAppend.toString(), FOUR_SPACE_INDENTATION), false);
}
@@ -98,7 +120,8 @@
* @return string of file
* @throws IOException when fails to convert to string
*/
- public static String readAppendFile(String toAppend, String spaces) throws IOException {
+ public static String readAppendFile(String toAppend, String spaces)
+ throws IOException {
FileReader fileReader = new FileReader(toAppend);
BufferedReader bufferReader = new BufferedReader(fileReader);
try {
@@ -131,9 +154,10 @@
* @param contentTobeAdded content to be appended to the file
* @param isClose when close of file is called.
* @throws IOException if the named file exists but is a directory rather than a regular file,
- * does not exist but cannot be created, or cannot be opened for any other reason
+ * does not exist but cannot be created, or cannot be opened for any other reason
*/
- public static void updateFileHandle(File inputFile, String contentTobeAdded, boolean isClose) throws IOException {
+ public static void updateFileHandle(File inputFile, String contentTobeAdded, boolean isClose)
+ throws IOException {
FileWriter fileWriter = new FileWriter(inputFile, true);
PrintWriter outputPrintWriter = new PrintWriter(fileWriter, true);
if (!isClose) {
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 e2fe7fd..fdf876d 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
@@ -26,6 +26,8 @@
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_OBJECT;
import static org.onosproject.yangutils.utils.UtilConstants.ENUM_ATTRIBUTE_JAVADOC;
import static org.onosproject.yangutils.utils.UtilConstants.ENUM_CLASS_JAVADOC;
+import static org.onosproject.yangutils.utils.UtilConstants.EVENT_JAVA_DOC;
+import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_JAVA_DOC;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
@@ -39,6 +41,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_END_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_FIRST_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_GETTERS;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_MANAGER_SETTERS;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_PARAM;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RETURN;
@@ -110,6 +113,16 @@
RPC_INTERFACE,
/**
+ * For event.
+ */
+ EVENT,
+
+ /**
+ * For event listener.
+ */
+ EVENT_LISTENER,
+
+ /**
* For setters.
*/
SETTER_METHOD,
@@ -157,14 +170,19 @@
/**
* For enum's attributes.
*/
- ENUM_ATTRIBUTE
+ ENUM_ATTRIBUTE,
+
+ /**
+ * For manager setters.
+ */
+ MANAGER_SETTER_METHOD
}
/**
* Returns java docs.
*
- * @param type java doc type
- * @param name name of the YangNode
+ * @param type java doc type
+ * @param name name of the YangNode
* @param isList is list attribute
* @return javadocs.
*/
@@ -196,6 +214,9 @@
case SETTER_METHOD: {
return generateForSetters(name, isList);
}
+ case MANAGER_SETTER_METHOD: {
+ return generateForManagerSetters(name, isList);
+ }
case OF_METHOD: {
return generateForOf(name);
}
@@ -220,6 +241,12 @@
case RPC_INTERFACE: {
return generateForRpcInterface(name);
}
+ case EVENT: {
+ return generateForEvent(name);
+ }
+ case EVENT_LISTENER: {
+ return generateForEventListener(name);
+ }
default: {
return generateForConstructors(name);
}
@@ -240,8 +267,8 @@
/**
* Generates javaDocs for rpc method.
*
- * @param rpcName name of the rpc
- * @param inputName name of input
+ * @param rpcName name of the rpc
+ * @param inputName name of input
* @param outputName name of output
* @return javaDocs of rpc method
*/
@@ -260,7 +287,7 @@
* Returns output string of rpc.
*
* @param outputName name of output
- * @param rpcName name of rpc
+ * @param rpcName name of rpc
* @return javaDocs for output string of rpc
*/
private static String getOutputString(String outputName, String rpcName) {
@@ -271,7 +298,7 @@
* Returns input string of rpc.
*
* @param inputName name of input
- * @param rpcName name of rpc
+ * @param rpcName name of rpc
* @return javaDocs for input string of rpc
*/
private static String getInputString(String inputName, String rpcName) {
@@ -294,10 +321,32 @@
}
/**
+ * Generates javaDoc for the event.
+ *
+ * @param eventClassName event class name
+ * @return javaDocs
+ */
+ private static String generateForEvent(String eventClassName) {
+ return NEW_LINE + JAVA_DOC_FIRST_LINE + EVENT_JAVA_DOC + eventClassName + PERIOD + NEW_LINE
+ + JAVA_DOC_END_LINE;
+ }
+
+ /**
+ * Generates javaDoc for the event listener.
+ *
+ * @param eventListenerInterfaceName event class name
+ * @return javaDocs
+ */
+ private static String generateForEventListener(String eventListenerInterfaceName) {
+ return NEW_LINE + JAVA_DOC_FIRST_LINE + EVENT_LISTENER_JAVA_DOC + eventListenerInterfaceName
+ + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
+ }
+
+ /**
* Generates javaDocs for getter method.
*
* @param attribute attribute
- * @param isList is list attribute
+ * @param isList is list attribute
* @return javaDocs
*/
private static String generateForGetters(String attribute, boolean isList) {
@@ -320,7 +369,7 @@
* Generates javaDocs for setter method.
*
* @param attribute attribute
- * @param isList is list attribute
+ * @param isList is list attribute
* @return javaDocs
*/
private static String generateForSetters(String attribute, boolean isList) {
@@ -340,6 +389,29 @@
}
/**
+ * Generates javaDocs for setter method.
+ *
+ * @param attribute attribute
+ * @param isList is list attribute
+ * @return javaDocs
+ */
+ private static String generateForManagerSetters(String attribute, boolean isList) {
+
+ String setter = NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION
+ + JAVA_DOC_MANAGER_SETTERS + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
+ + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + attribute + SPACE;
+ if (isList) {
+ String listAttribute = LIST.toLowerCase() + SPACE + OF + SPACE;
+ setter = setter + listAttribute;
+ } else {
+ setter = setter + VALUE + SPACE + OF + SPACE;
+ }
+ setter = setter + attribute
+ + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
+ return setter;
+ }
+
+ /**
* Generates javaDocs for of method.
*
* @param attribute attribute
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 51ca81c..192df4e 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
@@ -25,12 +25,12 @@
import java.util.ArrayList;
import java.util.List;
+import org.apache.commons.io.FileUtils;
import org.apache.maven.model.Resource;
import org.apache.maven.project.MavenProject;
import org.slf4j.Logger;
import org.sonatype.plexus.build.incremental.BuildContext;
-import static org.apache.commons.io.FileUtils.deleteDirectory;
import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
@@ -113,11 +113,11 @@
* @param dir generated directory in previous build
* @throws IOException when failed to delete directory
*/
- public static void clean(String dir) throws IOException {
+ public static void deleteDirectory(String dir) throws IOException {
File generatedDirectory = new File(dir);
if (generatedDirectory.exists()) {
try {
- deleteDirectory(generatedDirectory);
+ FileUtils.deleteDirectory(generatedDirectory);
} catch (IOException e) {
throw new IOException("Failed to delete the generated files in " + generatedDirectory + " directory");
}