[ONOS-4303, ONOS-4508, ONOS-4509, ONOS-4510, ONOS-4351]notification,rpc,union,sub-module,augment
Change-Id: Ibeed9ff965c13fd66743c1080cb1350d93a3a435
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index 9fa13d4..5cfb777 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -19,7 +19,9 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_RPC_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
@@ -35,10 +37,12 @@
import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
import static org.onosproject.yangutils.utils.UtilConstants.IMPLEMENTS;
import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
+import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
+import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
@@ -58,7 +62,7 @@
* / interface definition start.
*
* @param genFileTypes generated file type
- * @param yangName class name
+ * @param yangName class name
* @return class definition
*/
public static String generateClassDefinition(int genFileTypes, String yangName) {
@@ -70,7 +74,7 @@
if ((genFileTypes & INTERFACE_MASK) != 0) {
return getInterfaceDefinition(yangName);
} else if ((genFileTypes & BUILDER_CLASS_MASK) != 0) {
- return getBuilderClassDefinition(yangName);
+ return getBuilderClassDefinition(yangName, genFileTypes);
} else if ((genFileTypes & IMPL_CLASS_MASK) != 0) {
return getImplClassDefinition(yangName);
} else if ((genFileTypes & BUILDER_INTERFACE_MASK) != 0) {
@@ -81,8 +85,12 @@
return getTypeClassDefinition(yangName);
} else if ((genFileTypes & GENERATE_ENUM_CLASS) != 0) {
return getEnumClassDefinition(yangName);
- } else if ((genFileTypes & GENERATE_RPC_INTERFACE) != 0) {
+ } else if ((genFileTypes & GENERATE_SERVICE_AND_MANAGER) != 0) {
return getRpcInterfaceDefinition(yangName);
+ } else if ((genFileTypes & GENERATE_EVENT_CLASS) != 0) {
+ return getEventDefinition(yangName);
+ } else if ((genFileTypes & GENERATE_EVENT_LISTENER_INTERFACE) != 0) {
+ return getEventListenerDefinition(yangName);
}
return null;
}
@@ -120,7 +128,7 @@
* Returns builder interface file class definition.
*
* @param yangName java class name, corresponding to which the builder class
- * is being generated
+ * is being generated
* @return definition
*/
private static String getBuilderInterfaceDefinition(String yangName) {
@@ -131,11 +139,17 @@
* Returns builder file class definition.
*
* @param yangName file name
+ * @param genFileTypes
* @return definition
*/
- private static String getBuilderClassDefinition(String yangName) {
- return PUBLIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE + IMPLEMENTS + SPACE + yangName + PERIOD
- + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ private static String getBuilderClassDefinition(String yangName, int genFileTypes) {
+ if ((genFileTypes & GENERATE_SERVICE_AND_MANAGER) != 0) {
+ return PUBLIC + SPACE + CLASS + SPACE + yangName + MANAGER + SPACE + IMPLEMENTS + SPACE + yangName +
+ SERVICE + PERIOD + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ } else {
+ return PUBLIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE + IMPLEMENTS + SPACE + yangName + PERIOD
+ + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ }
}
/**
@@ -168,4 +182,40 @@
private static String getRpcInterfaceDefinition(String yangName) {
return INTERFACE + SPACE + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
}
+
+ /**
+ * Returns event class definition.
+ *
+ * @param javaName file name
+ * @return definition
+ */
+ private static String getEventDefinition(String javaName) {
+ String classDef = PUBLIC + SPACE + CLASS + SPACE + javaName + SPACE + "extends AbstractEvent<"
+ + javaName + ".Type, " + javaName;
+ if (classDef.length() < 5) {
+ throw new RuntimeException("Event class name is error");
+ }
+ classDef = classDef.substring(0, (classDef.length() - 5));
+ classDef = classDef + ">" + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+
+ return classDef;
+ }
+
+ /**
+ * Returns event listener interface definition.
+ *
+ * @param javaName file name
+ * @return definition
+ */
+ private static String getEventListenerDefinition(String javaName) {
+ String intfDef = PUBLIC + SPACE + INTERFACE + SPACE + javaName + SPACE + "extends EventListener<"
+ + javaName;
+ if (intfDef.length() < 8) {
+ throw new RuntimeException("Event listener interface name is error");
+ }
+ intfDef = intfDef.substring(0, (intfDef.length() - 8));
+ intfDef = intfDef + "Event>" + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+
+ return intfDef;
+ }
}
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index 1582616..26487d8 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -30,7 +30,9 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_RPC_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
@@ -46,6 +48,7 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.OF_STRING_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK;
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;
@@ -76,9 +79,12 @@
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
import static org.onosproject.yangutils.utils.UtilConstants.INT;
+import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
@@ -319,6 +325,69 @@
}
/**
+ * Returns generated manager class file for current node.
+ *
+ * @param file file
+ * @param imports imports for the file
+ * @param curNode current YANG node
+ * @param isAttrPresent if any attribute is present or not
+ * @return builder class file
+ * @throws IOException when fails to write in file
+ */
+ public static File generateManagerClassFile(File file, List<String> imports, YangNode curNode,
+ boolean isAttrPresent)
+ throws IOException {
+
+ JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+
+ String className = getCaptialCase(javaFileInfo.getJavaName()) + MANAGER;
+ String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
+
+ initiateJavaFileGeneration(file, className, GENERATE_SERVICE_AND_MANAGER, imports, path);
+
+ List<String> methods = new ArrayList<>();
+
+ if (isAttrPresent) {
+
+ try {
+ /**
+ * Getter methods.
+ */
+ methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getServiceTempFiles()));
+ /**
+ * Setter methods.
+ */
+ methods.add(getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK,
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getServiceTempFiles()) +
+ NEW_LINE);
+
+ JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
+ /**
+ * Rpc methods
+ */
+ methods.add(getDataFromTempFileHandle(RPC_IMPL_MASK, javaGeninfo.getTempJavaCodeFragmentFiles()
+ .getServiceTempFiles()));
+ } catch (IOException e) {
+ throw new IOException("No data found in temporary java code fragment files for " + className
+ + " while manager class file generation");
+ }
+ } else {
+ insertDataIntoJavaFile(file, NEW_LINE);
+ }
+
+ /**
+ * Add methods in builder class.
+ */
+ for (String method : methods) {
+ insertDataIntoJavaFile(file, method);
+ }
+ return file;
+ }
+
+ /**
* Returns generated impl class file for current node.
*
* @param file file
@@ -685,8 +754,8 @@
* Add a getter method for enum.
*/
insertDataIntoJavaFile(file,
- getJavaDoc(GETTER_METHOD, getSmallCase(className), false) + getGetter(INT, getSmallCase(className))
- + NEW_LINE);
+ getJavaDoc(GETTER_METHOD, getSmallCase(className), false)
+ + getGetter(INT, getSmallCase(className), GENERATE_SERVICE_AND_MANAGER) + NEW_LINE);
insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
@@ -699,10 +768,12 @@
* @param file generated file
* @param curNode current YANG node
* @param imports imports for file
- * @return type def class file
+ * @param isAttributePresent is attribute present
+ * @return rpc class file
* @throws IOException when fails to generate class file
*/
- public static File generateRpcInterfaceFile(File file, YangNode curNode, List<String> imports)
+ public static File generateServiceInterfaceFile(File file, YangNode curNode, List<String> imports,
+ boolean isAttributePresent)
throws IOException {
JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -710,17 +781,35 @@
String className = getCaptialCase(javaFileInfo.getJavaName()) + SERVICE_METHOD_STRING;
String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
- initiateJavaFileGeneration(file, className, GENERATE_RPC_INTERFACE, imports, path);
+ initiateJavaFileGeneration(file, className, GENERATE_SERVICE_AND_MANAGER, imports, path);
List<String> methods = new ArrayList<>();
+
try {
+ if (isAttributePresent) {
+
+ /**
+ * Getter methods.
+ */
+ methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getServiceTempFiles()));
+ /**
+ * Setter methods.
+ */
+ methods.add(NEW_LINE);
+ methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK,
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getServiceTempFiles()));
+ }
+
JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
/**
* Rpc methods
*/
- methods.add(getDataFromTempFileHandle(RPC_IMPL_MASK, javaGeninfo.getTempJavaCodeFragmentFiles()
+ methods.add(getDataFromTempFileHandle(RPC_INTERFACE_MASK, javaGeninfo.getTempJavaCodeFragmentFiles()
.getServiceTempFiles()));
} catch (IOException e) {
@@ -735,4 +824,78 @@
return file;
}
+
+ /**
+ * Generates event file.
+ *
+ * @param file generated file
+ * @param curNode current YANG node
+ * @param imports imports for file
+ * @throws IOException when fails to generate class file
+ */
+ public static void generateEventFile(File file, YangNode curNode, List<String> imports)
+ throws IOException {
+
+ JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+
+ String className = getCaptialCase(javaFileInfo.getJavaName()) + EVENT_STRING;
+ String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
+
+ initiateJavaFileGeneration(file, className, GENERATE_EVENT_CLASS, imports, path);
+
+ insertDataIntoJavaFile(file, getEventFileContents(className, javaFileInfo.getJavaName()));
+ insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
+ }
+
+ private static String getEventFileContents(String eventClassname, String classname) {
+ return "\n" +
+ " public enum Type {\n" +
+ " /**\n" +
+ " * " + eventClassname + "notification.\n" +
+ " */\n" +
+ " " + classname.toUpperCase() + "_EVENT\n" +
+ " }\n" +
+ "\n" +
+ " /**\n" +
+ " * Creates " + classname + " event with type and subject.\n" +
+ " *\n" +
+ " * @param type event type\n" +
+ " * @param subject subject interface\n" +
+ " */\n" +
+ " public " + eventClassname + "(Type type, Interface subject) {\n" +
+ " super(type, subject);\n" +
+ " }\n" +
+ "\n" +
+ " /**\n" +
+ " * Creates " + classname + " event with type, subject and time.\n" +
+ " *\n" +
+ " * @param type event type\n" +
+ " * @param subject subject interface\n" +
+ " * @param time time of event\n" +
+ " */\n" +
+ " public " + eventClassname + "(Type type, Interface subject, long time) {\n" +
+ " super(type, subject, time);\n" +
+ " }\n" +
+ "\n";
+ }
+
+ /**
+ * Generates event listener file.
+ *
+ * @param file generated file
+ * @param curNode current YANG node
+ * @param imports imports for file
+ * @throws IOException when fails to generate class file
+ */
+ public static void generateEventListenerFile(File file, YangNode curNode, List<String> imports)
+ throws IOException {
+
+ JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+
+ String className = getCaptialCase(javaFileInfo.getJavaName()) + EVENT_LISTENER_STRING;
+ String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
+
+ initiateJavaFileGeneration(file, className, GENERATE_EVENT_LISTENER_INTERFACE, imports, path);
+ insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
+ }
}
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 c43346a..1304706 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,20 +20,25 @@
import java.io.IOException;
import java.util.List;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
+import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
+import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
import org.onosproject.yangutils.utils.io.impl.CopyrightHeader;
import org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_RPC_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ATTRIBUTES_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_FOR_TYPE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
@@ -44,6 +49,7 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.OF_STRING_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK;
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;
@@ -62,6 +68,8 @@
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_CLASS;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_INTERFACE;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_CLASS;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT_LISTENER;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.IMPL_CLASS;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.INTERFACE;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_INTERFACE;
@@ -106,11 +114,25 @@
TempJavaFragmentFiles tempJavaFragmentFiles)
throws IOException {
+ TempJavaTypeFragmentFiles typeFragmentFiles = null;
- if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) {
- return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAttributesTempFileHandle());
- } else if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
+ if (tempJavaFragmentFiles instanceof TempJavaTypeFragmentFiles) {
+ typeFragmentFiles = (TempJavaTypeFragmentFiles) tempJavaFragmentFiles;
+ }
+
+ TempJavaBeanFragmentFiles beanFragmentFiles = null;
+
+ if (tempJavaFragmentFiles instanceof TempJavaBeanFragmentFiles) {
+ beanFragmentFiles = (TempJavaBeanFragmentFiles) tempJavaFragmentFiles;
+ }
+
+ TempJavaServiceFragmentFiles serviceFragmentFiles = null;
+ if (tempJavaFragmentFiles instanceof TempJavaServiceFragmentFiles) {
+ serviceFragmentFiles = (TempJavaServiceFragmentFiles) tempJavaFragmentFiles;
+ }
+
+
+ if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
return tempJavaFragmentFiles
.getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterInterfaceTempFileHandle());
} else if ((generatedTempFiles & SETTER_FOR_INTERFACE_MASK) != 0) {
@@ -123,8 +145,11 @@
return tempJavaFragmentFiles
.getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterImplTempFileHandle());
} else if ((generatedTempFiles & CONSTRUCTOR_IMPL_MASK) != 0) {
- return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getConstructorImplTempFileHandle());
+ if (beanFragmentFiles == null) {
+ throw new TranslatorException("Required constructor info is missing.");
+ }
+ return beanFragmentFiles
+ .getTemporaryDataFromFileHandle(beanFragmentFiles.getConstructorImplTempFileHandle());
} else if ((generatedTempFiles & HASH_CODE_IMPL_MASK) != 0) {
return tempJavaFragmentFiles
.getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getHashCodeImplTempFileHandle());
@@ -134,22 +159,39 @@
} else if ((generatedTempFiles & TO_STRING_IMPL_MASK) != 0) {
return tempJavaFragmentFiles
.getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getToStringImplTempFileHandle());
- } else if ((generatedTempFiles & CONSTRUCTOR_FOR_TYPE_MASK) != 0) {
- return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles
- .getConstructorForTypeTempFileHandle());
} else if ((generatedTempFiles & OF_STRING_IMPL_MASK) != 0) {
- return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getOfStringImplTempFileHandle());
+ if (typeFragmentFiles == null) {
+ throw new TranslatorException("Required of string implementation info is missing.");
+ }
+ return typeFragmentFiles
+ .getTemporaryDataFromFileHandle(typeFragmentFiles.getOfStringImplTempFileHandle());
+ } else if ((generatedTempFiles & CONSTRUCTOR_FOR_TYPE_MASK) != 0) {
+ if (typeFragmentFiles == null) {
+ throw new TranslatorException("Required constructor implementation info is missing.");
+ }
+ return typeFragmentFiles
+ .getTemporaryDataFromFileHandle(typeFragmentFiles.getConstructorForTypeTempFileHandle());
} else if ((generatedTempFiles & FROM_STRING_IMPL_MASK) != 0) {
- return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getFromStringImplTempFileHandle());
+ if (typeFragmentFiles == null) {
+ throw new TranslatorException("Required from string info is missing.");
+ }
+ return typeFragmentFiles
+ .getTemporaryDataFromFileHandle(typeFragmentFiles.getFromStringImplTempFileHandle());
} else if ((generatedTempFiles & ENUM_IMPL_MASK) != 0) {
return tempJavaFragmentFiles
.getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getEnumClassTempFileHandle());
+ } else if ((generatedTempFiles & RPC_INTERFACE_MASK) != 0) {
+ if (serviceFragmentFiles == null) {
+ throw new TranslatorException("Required rpc interface info is missing.");
+ }
+ return serviceFragmentFiles
+ .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcInterfaceTempFileHandle());
} else if ((generatedTempFiles & RPC_IMPL_MASK) != 0) {
- return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getRpcInterfaceImplTempFileHandle());
+ if (serviceFragmentFiles == null) {
+ throw new TranslatorException("Required rpc implementation info is missing.");
+ }
+ return serviceFragmentFiles
+ .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcImplTempFileHandle());
}
return null;
}
@@ -211,9 +253,15 @@
} else if ((type & GENERATE_ENUM_CLASS) != 0) {
appendHeaderContents(file, pkgString, importsList);
write(file, fileName, type, ENUM_CLASS);
- } else if ((type & GENERATE_RPC_INTERFACE) != 0) {
+ } 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) {
+ appendHeaderContents(file, pkgString, importsList);
+ write(file, fileName, type, EVENT_LISTENER);
}
}
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index 6723ce5..c4da89a 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -17,7 +17,9 @@
package org.onosproject.yangutils.translator.tojava.utils;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
+import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.utils.AttributesJavaDataType.getParseFromStringMethod;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
@@ -88,11 +90,13 @@
import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
import static org.onosproject.yangutils.utils.UtilConstants.VOID;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.FROM_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
@@ -124,15 +128,16 @@
* Returns getter string.
*
* @param attr attribute info
+ * @param generatedJavaFiles generated java files
* @return getter string
*/
- public static String getGetterString(JavaAttributeInfo attr) {
+ public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles) {
String returnType = getReturnType(attr);
String attributeName = getSmallCase(attr.getAttributeName());
return getJavaDoc(GETTER_METHOD, attributeName, attr.isListAttr())
- + getGetterForInterface(attributeName, returnType, attr.isListAttr());
+ + getGetterForInterface(attributeName, returnType, attr.isListAttr(), generatedJavaFiles);
}
/**
@@ -140,15 +145,22 @@
*
* @param attr attribute info
* @param className java class name
+ * @param generatedJavaFiles generated java files
* @return setter string
*/
- public static String getSetterString(JavaAttributeInfo attr, String className) {
+ public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
String attrType = getReturnType(attr);
String attributeName = getSmallCase(attr.getAttributeName());
+ JavaDocGen.JavaDocType type;
+ if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
+ type = MANAGER_SETTER_METHOD;
+ } else {
+ type = SETTER_METHOD;
+ }
- return getJavaDoc(SETTER_METHOD, attributeName, attr.isListAttr())
- + getSetterForInterface(attributeName, attrType, className, attr.isListAttr());
+ return getJavaDoc(type, attributeName, attr.isListAttr())
+ + getSetterForInterface(attributeName, attrType, className, attr.isListAttr(), generatedJavaFiles);
}
/**
@@ -198,18 +210,19 @@
* Returns the getter method strings for class file.
*
* @param attr attribute info
+ * @param generatedJavaFiles for the type of java file being generated
* @return getter method for class
*/
- public static String getGetterForClass(JavaAttributeInfo attr) {
+ public static String getGetterForClass(JavaAttributeInfo attr, int generatedJavaFiles) {
String attrQuaifiedType = getReturnType(attr);
String attributeName = getSmallCase(attr.getAttributeName());
if (!attr.isListAttr()) {
- return getGetter(attrQuaifiedType, attributeName);
+ return getGetter(attrQuaifiedType, attributeName, generatedJavaFiles);
}
String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
- return getGetter(listAttr, attributeName);
+ return getGetter(listAttr, attributeName, generatedJavaFiles);
}
/**
@@ -217,12 +230,22 @@
*
* @param type return type
* @param name attribute name
+ * @param generatedJavaFiles generated java files
* @return getter for attribute
*/
- public static String getGetter(String type, String name) {
- return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCaptialCase(name)
- + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
- + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+ public static String getGetter(String type, String name, int generatedJavaFiles) {
+ if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
+ return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + GET_METHOD_PREFIX + getCaptialCase(name)
+ + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+ EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE + EIGHT_SPACE_INDENTATION +
+ RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+ } else {
+ return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + type + SPACE + name
+ + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+ EIGHT_SPACE_INDENTATION + RETURN + SPACE + name + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
+ + CLOSE_CURLY_BRACKET;
+ }
+
}
/**
@@ -230,17 +253,18 @@
*
* @param attr attribute info
* @param className name of the class
+ * @param generatedJavaFiles generated java files
* @return setter method for class
*/
- public static String getSetterForClass(JavaAttributeInfo attr, String className) {
+ public static String getSetterForClass(JavaAttributeInfo attr, String className, int generatedJavaFiles) {
String attrQuaifiedType = getReturnType(attr);
String attributeName = getSmallCase(attr.getAttributeName());
if (!attr.isListAttr()) {
- return getSetter(className, attributeName, attrQuaifiedType);
+ return getSetter(className, attributeName, attrQuaifiedType, generatedJavaFiles);
}
String listAttr = getListString() + attrQuaifiedType + DIAMOND_CLOSE_BRACKET;
- return getSetter(className, attributeName, listAttr);
+ return getSetter(className, attributeName, listAttr, generatedJavaFiles);
}
/**
@@ -251,12 +275,19 @@
* @param type return type
* @return setter for attribute
*/
- private static String getSetter(String className, String name, String type) {
- return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE + SET_METHOD_PREFIX
- + getCaptialCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
- + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL + SPACE
- + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS + SEMI_COLAN
- + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+ private static String getSetter(String className, String name, String type, int generatedJavaFiles) {
+ if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
+ return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
+ + getCaptialCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
+ OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO +
+ NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+ } else {
+ return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + BUILDER + SPACE +
+ name + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE
+ + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + THIS + PERIOD + name + SPACE + EQUAL +
+ SPACE + name + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + THIS +
+ SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+ }
}
/**
@@ -301,15 +332,17 @@
* @param yangName name of the attribute
* @param returnType return type of attribute
* @param isList is list attribute
+ * @param generatedJavaFiles generated java files
* @return getter method for interface
*/
- public static String getGetterForInterface(String yangName, String returnType, boolean isList) {
+ public static String getGetterForInterface(String yangName, String returnType, boolean isList,
+ int generatedJavaFiles) {
if (!isList) {
- return getGetterInterfaceString(returnType, yangName);
+ return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
}
String listAttr = getListString() + returnType + DIAMOND_CLOSE_BRACKET;
- return getGetterInterfaceString(listAttr, yangName);
+ return getGetterInterfaceString(listAttr, yangName, generatedJavaFiles);
}
/**
@@ -319,9 +352,15 @@
* @param yangName attribute name
* @return getter for interface
*/
- private static String getGetterInterfaceString(String returnType, String yangName) {
- return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCaptialCase(yangName)
- + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
+ private static String getGetterInterfaceString(String returnType, String yangName,
+ int generatedJavaFiles) {
+ if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
+ return FOUR_SPACE_INDENTATION + returnType + SPACE + GET_METHOD_PREFIX + getCaptialCase(yangName)
+ + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
+ } else {
+ return FOUR_SPACE_INDENTATION + returnType + SPACE + yangName
+ + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
+ }
}
/**
@@ -331,15 +370,17 @@
* @param attrType return type of attribute
* @param className name of the java class being generated
* @param isList is list attribute
+ * @param generatedJavaFiles generated java files
* @return setter method for interface
*/
- public static String getSetterForInterface(String attrName, String attrType, String className, boolean isList) {
+ public static String getSetterForInterface(String attrName, String attrType, String className,
+ boolean isList, int generatedJavaFiles) {
if (!isList) {
- return getSetterInterfaceString(className, attrName, attrType);
+ return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
}
String listAttr = getListString() + attrType + DIAMOND_CLOSE_BRACKET;
- return getSetterInterfaceString(className, attrName, listAttr);
+ return getSetterInterfaceString(className, attrName, listAttr, generatedJavaFiles);
}
/**
@@ -350,9 +391,16 @@
* @param attrType attribute type
* @return setter string
*/
- private static String getSetterInterfaceString(String className, String attrName, String attrType) {
- return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + SET_METHOD_PREFIX + getCaptialCase(attrName)
- + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
+ private static String getSetterInterfaceString(String className, String attrName, String attrType,
+ int generatedJavaFiles) {
+ if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
+
+ return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCaptialCase(attrName)
+ + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
+ } else {
+ return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
+ + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
+ }
}
/**
@@ -411,17 +459,26 @@
*
* @param yangName name of the class
* @param attr attribute info
+ * @param generatedJavaFiles generated java files
* @return constructor for class
*/
- public static String getConstructor(String yangName, JavaAttributeInfo attr) {
+ public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles) {
String attributeName = getSmallCase(attr.getAttributeName());
+ String constructor;
- String constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
- + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
- + getCaptialCase(getCamelCase(attributeName, null)) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
- + NEW_LINE;
-
+ if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
+ constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
+ + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
+ + getCaptialCase(getCamelCase(attributeName, null)) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
+ SEMI_COLAN
+ + NEW_LINE;
+ } else {
+ constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL
+ + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + getCamelCase(attributeName, null) +
+ OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
+ + NEW_LINE;
+ }
return constructor;
}
@@ -433,7 +490,7 @@
* @param outputName name of output
* @return rpc method string
*/
- public static String getRpcStringMethod(String rpcName, String inputName, String outputName) {
+ public static String getRpcServiceMethod(String rpcName, String inputName, String outputName) {
rpcName = getSmallCase(getCamelCase(rpcName, null));
inputName = getCaptialCase(inputName);
@@ -444,6 +501,32 @@
}
/**
+ * Returns the rpc strings for manager impl.
+ *
+ * @param rpcName name of the rpc
+ * @param inputName name of input
+ * @param outputName name of output
+ * @return rpc method string
+ */
+ public static String getRpcManagerMethod(String rpcName, String inputName, String outputName) {
+
+ rpcName = getSmallCase(getCamelCase(rpcName, null));
+ inputName = getCaptialCase(inputName);
+ outputName = getCaptialCase(outputName);
+
+ String method = getOverRideString() +
+ FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName + OPEN_PARENTHESIS
+ + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET
+ + NEW_LINE + EIGHT_SPACE_INDENTATION + YANG_UTILS_TODO + NEW_LINE;
+ if (!outputName.contentEquals(VOID)) {
+ method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE;
+ }
+ method += FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+
+ return method;
+ }
+
+ /**
* Returns the build method strings for class file.
*
* @param yangName class name
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
index 1e1982a..741274e 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
@@ -45,21 +45,6 @@
}
/**
- * Adds imports for ToString and HashCodeMethod.
- *
- * @param curNode current YANG node
- * @param imports import list
- * @return import list
- */
- public static List<String> addImportsToStringAndHasCodeMethods(YangNode curNode, List<String> imports) {
- if (curNode instanceof JavaImportDataContainer) {
- imports.add(((JavaImportDataContainer) curNode).getJavaImportData().getImportForHashAndEquals());
- imports.add(((JavaImportDataContainer) curNode).getJavaImportData().getImportForToString());
- }
- return imports;
- }
-
- /**
* Adds import for HasAugmentation class.
*
* @param curNode current YANG node
@@ -177,7 +162,8 @@
* @param toBeDeleted flag to indicate if file needs to be deleted
* @throws IOException when failed to close the file handle
*/
- public static void closeFile(File file, boolean toBeDeleted) throws IOException {
+ public static void closeFile(File file, boolean toBeDeleted)
+ throws IOException {
if (file != null) {
updateFileHandle(file, null, true);
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
index eb5d537..0597683 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
@@ -18,7 +18,7 @@
import java.io.IOException;
-import org.onosproject.yangutils.datamodel.YangTypeContainer;
+import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
@@ -29,12 +29,15 @@
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNotification;
import org.onosproject.yangutils.datamodel.YangOutput;
+import org.onosproject.yangutils.datamodel.YangTypeHolder;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
import org.onosproject.yangutils.translator.tojava.javamodel.JavaCodeGeneratorInfo;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumeration;
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.isRpcChildNodePresent;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.addCurNodeInfoInParentTempFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
@@ -59,18 +62,20 @@
* Updates YANG java file package information.
*
* @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPlugin YANG plugin config
+ * @param yangPluginConfig YANG plugin config
* @throws IOException IO operations fails
*/
- public static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin)
+ public static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
+ YangPluginConfig yangPluginConfig)
throws IOException {
javaCodeGeneratorInfo.getJavaFileInfo()
.setJavaName(getCaptialCase(
- getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(), yangPlugin.getConflictResolver())));
+ getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
+ yangPluginConfig.getConflictResolver())));
javaCodeGeneratorInfo.getJavaFileInfo().setPackage(getCurNodePackage((YangNode) javaCodeGeneratorInfo));
javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
- javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getCodeGenDir());
+ javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPluginConfig.getCodeGenDir());
}
/**
@@ -110,15 +115,40 @@
* @param javaCodeGeneratorInfo YANG java file info node
* @throws IOException IO operations fails
*/
- private static void updateTempFragmentFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo)
+ private static void updateTempFragmentFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
+ YangPluginConfig yangPluginConfig)
throws IOException {
- if (javaCodeGeneratorInfo instanceof YangLeavesHolder) {
+ if (javaCodeGeneratorInfo instanceof RpcNotificationContainer) {
+ /**
+ * Module / sub module node code generation.
+ */
javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
- .addCurNodeLeavesInfoToTempFiles((YangNode) javaCodeGeneratorInfo);
- } else if (javaCodeGeneratorInfo instanceof YangTypeContainer) {
+ .getServiceTempFiles().addCurNodeLeavesInfoToTempFiles(
+ (YangNode) javaCodeGeneratorInfo, yangPluginConfig);
+ } else if (javaCodeGeneratorInfo instanceof YangLeavesHolder) {
+ /**
+ * Container
+ * Case
+ * Grouping
+ * Input
+ * List
+ * Notification
+ * Output
+ */
javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
- .addTypeInfoToTempFiles((YangTypeContainer) javaCodeGeneratorInfo);
+ .getBeanTempFiles().addCurNodeLeavesInfoToTempFiles(
+ (YangNode) javaCodeGeneratorInfo, yangPluginConfig);
+ } else if (javaCodeGeneratorInfo instanceof YangTypeHolder) {
+ /**
+ * Typedef
+ * Union
+ */
+ javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
+ .addTypeInfoToTempFiles((YangTypeHolder) javaCodeGeneratorInfo);
} else if (javaCodeGeneratorInfo instanceof YangJavaEnumeration) {
+ /**
+ * Enumeration
+ */
javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
.addEnumAttributeToTempFiles((YangNode) javaCodeGeneratorInfo);
} else if (javaCodeGeneratorInfo instanceof YangChoice) {
@@ -134,18 +164,19 @@
* @param javaCodeGeneratorInfo YANG java file info node
* @throws IOException IO operations fails
*/
- private static void generateTempFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo, String codeGenDir)
+ private static void generateTempFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
+ YangPluginConfig yangPluginConfig)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
throw new TranslatorException("translation is not supported for the node");
}
createTempFragmentFile(javaCodeGeneratorInfo);
- updateTempFragmentFiles(javaCodeGeneratorInfo);
+ updateTempFragmentFiles(javaCodeGeneratorInfo, yangPluginConfig);
}
/**
- * Process generate code entry of YANG node.
+ * Generates code for the current ata model node and adds itself as an attribute in the parent.
*
* @param javaCodeGeneratorInfo YANG java file info node
* @param yangPlugin YANG plugin config
@@ -171,7 +202,7 @@
}
/**
- * Process generate code entry of YANG type.
+ * Generates code for the current data model node and adds support for it to be augmented.
*
* @param javaCodeGeneratorInfo YANG java file info node
* @param yangPlugin YANG plugin config
@@ -218,36 +249,43 @@
}
/**
- * Process generate code entry of YANG type.
+ * Generates code for the current data model node.
*
* @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPlugin YANG plugin config
+ * @param yangPluginConfig YANG plugin config
* @throws IOException IO operations fails
*/
- public static void generateCodeOfNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin)
+ public static void generateCodeOfNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
+ YangPluginConfig yangPluginConfig)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
// TODO:throw exception
}
- updatePackageInfo(javaCodeGeneratorInfo, yangPlugin);
- generateTempFiles(javaCodeGeneratorInfo, yangPlugin.getCodeGenDir());
+ updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig);
+ generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
}
/**
- * Process generate code entry of root node.
+ * Generates code for the root module/sub-module node.
*
* @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPlugin YANG plugin config
+ * @param yangPluginConfig YANG plugin config
* @param rootPkg package of the root node
* @throws IOException IO operations fails
*/
- public static void generateCodeOfRootNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin,
- String rootPkg)
+ public static void generateCodeOfRootNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
+ YangPluginConfig yangPluginConfig, String rootPkg)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
// TODO:throw exception
}
- updatePackageInfo(javaCodeGeneratorInfo, yangPlugin, rootPkg);
- generateTempFiles(javaCodeGeneratorInfo, yangPlugin.getCodeGenDir());
+ updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig, rootPkg);
+
+ if (isRpcChildNodePresent((YangNode) javaCodeGeneratorInfo)) {
+ javaCodeGeneratorInfo.getJavaFileInfo().addGeneratedFileTypes(GENERATE_SERVICE_AND_MANAGER);
+ }
+
+ generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
}
+
}