[ONOS-4411,ONOS-4413,ONOS-4526] Yang Enumeration Translator and Defect fixes.
Change-Id: Ie5b6b5d6d6df283a57ae06b1979f0d03022f3baf
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java
index ad2988d..afe3a02 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java
@@ -78,6 +78,8 @@
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
import static org.onosproject.yangutils.utils.YangConstructType.ENUM_DATA;
+import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
/**
* Represents listener based call back function corresponding to the "enum" rule
@@ -104,10 +106,18 @@
checkStackIsNotEmpty(listener, MISSING_HOLDER, ENUM_DATA, ctx.string().getText(), ENTRY);
YangEnum enumNode = new YangEnum();
- enumNode.setNamedValue(ctx.string().getText());
+ enumNode.setNamedValue(getValidNamedValue(ctx.string().getText()));
listener.getParsedDataStack().push(enumNode);
}
+ /* Removes quotes from the enum name if present.*/
+ private static String getValidNamedValue(String name) {
+ if (name.contains(QUOTES)) {
+ name = name.replace(QUOTES, EMPTY_STRING);
+ }
+ return name;
+ }
+
/**
* It is called when parser exits from grammar rule (enum), it perform
* validations and update the data model tree.
@@ -163,7 +173,8 @@
}
} else {
throw new ParserException(
- constructListenerErrorMessage(MISSING_CURRENT_HOLDER, ENUM_DATA, ctx.string().getText(), EXIT));
+ constructListenerErrorMessage(MISSING_CURRENT_HOLDER, ENUM_DATA, ctx.string().getText(),
+ EXIT));
}
}
}
diff --git a/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java b/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
index 9a4c6f4..bd214a6 100644
--- a/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
+++ b/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
@@ -158,6 +158,7 @@
logInfo = logInfo + NEW_LINE + e.getMessage();
}
getLog().info(logInfo);
+ throw e;
}
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java b/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
index 13eaf5f..958201b 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
@@ -147,7 +147,7 @@
}
}
- if (isListToImport) {
+ if (getIfListImported()) {
imports.add(getImportForList());
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfo.java b/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfo.java
index 370e0f6..6050f94 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfo.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfo.java
@@ -166,6 +166,7 @@
* @return return the import info for this attribute
*/
public static JavaQualifiedTypeInfo getQualifiedInfoOfFromString(JavaAttributeInfo referredTypesAttrInfo) {
+
/*
* Get the java qualified type information for the wrapper classes and
* set it in new java attribute information.
@@ -178,7 +179,6 @@
return qualifiedInfoOfFromString;
}
-
@Override
public int hashCode() {
return Objects.hash(pkgInfo, classInfo);
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
index 8f0f145..1620bc9 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
@@ -51,7 +51,6 @@
super(javaFileInfo);
-
/*
* Initialize getterImpl, attributes, constructor, hash code, equals and
* to strings when generation file type matches to impl class mask.
@@ -98,6 +97,7 @@
* files
* @throws IOException IO operation fail
*/
+ @Override
void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo newAttrInfo)
throws IOException {
super.addJavaSnippetInfoToApplicableTempFiles(newAttrInfo);
@@ -124,5 +124,4 @@
super.freeTemporaryResources(isErrorOccurred);
}
-
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
index f24391c..b1aa5d9 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
@@ -67,7 +67,6 @@
*/
private TempJavaEventListenerFragmentFiles eventListenerTempFiles;
-
/**
* Creates an instance of temporary java code fragment.
*
@@ -126,7 +125,6 @@
this.beanTempFiles = beanTempFiles;
}
-
/**
* Retrieves the temp file handle for data type file generation.
*
@@ -136,7 +134,6 @@
return typeTempFiles;
}
-
/**
* Sets temp file handle for data type file generation.
*
@@ -234,23 +231,29 @@
getBeanTempFiles().generateJavaFile(fileType, curNode);
}
- /**
+ /*
* Creates user defined data type class file.
*/
if ((fileType & GENERATE_TYPE_CLASS) != 0) {
getTypeTempFiles().generateJavaFile(fileType, curNode);
}
-
+ /*
+ * Creats service and manager class file.
+ */
if (fileType == GENERATE_SERVICE_AND_MANAGER) {
-
getServiceTempFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, curNode);
+ }
-
+ /*
+ * Creats enumeration class file.
+ */
+ if (fileType == GENERATE_ENUM_CLASS) {
+ getEnumerationTempFiles().generateJavaFile(GENERATE_ENUM_CLASS, curNode);
}
if ((fileType & GENERATE_EVENT_CLASS) != 0) {
- /**
+ /*
* Creates event class file.
*/
if (getEventTempFiles() != null) {
@@ -350,7 +353,6 @@
throw new TranslatorException("default constructor should not be added");
}
-
/**
* Adds build method's implementation for class.
*
@@ -397,22 +399,4 @@
}
}
-
- /**
- * Adds enum attributes to temporary files.
- *
- * @param curNode current YANG node
- * @throws IOException when fails to do IO operations
- */
- public void addEnumAttributeToTempFiles(YangNode curNode)
- throws IOException {
-
- if (getEnumerationTempFiles() != null) {
- getEnumerationTempFiles().addEnumAttributeToTempFiles(curNode);
- return;
- }
-
- throw new TranslatorException("build should not be added");
- }
-
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
index c18b002..1719886 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
@@ -15,14 +15,68 @@
*/
package org.onosproject.yangutils.translator.tojava;
+import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.onosproject.yangutils.datamodel.YangDataTypes;
+import org.onosproject.yangutils.datamodel.YangEnum;
+import org.onosproject.yangutils.datamodel.YangEnumeration;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaType;
+
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.generateEnumAttributeString;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEnumClassFile;
+import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
/**
* Represents implementation of java code fragments temporary implementations.
* Maintains the temp files required specific for enumeration java snippet generation.
*/
-public class TempJavaEnumerationFragmentFiles
- extends TempJavaFragmentFiles {
+public class TempJavaEnumerationFragmentFiles extends TempJavaFragmentFiles {
+
+ /**
+ * File name for temporary enum class.
+ */
+ private static final String ENUM_CLASS_TEMP_FILE_NAME = "EnumClass";
+
+ /**
+ * File name for enum class file name suffix.
+ */
+ private static final String ENUM_CLASS_FILE_NAME_SUFFIX = EMPTY_STRING;
+
+ /**
+ * Current enum's value.
+ */
+ private int enumValue;
+
+ /**
+ * Contains data of enumSet.
+ */
+ private Map<String, Integer> enumStringMap = new HashMap<>();
+
+ /**
+ * Contains data of enumSet.
+ */
+ private List<String> enumStringList;
+
+ /**
+ * Temporary file handle for enum class file.
+ */
+ private File enumClassTempFileHandle;
+
+ /**
+ * Java file handle for enum class.
+ */
+ private File enumClassJavaFileHandle;
/**
* Creates an instance of temporary java code fragment.
@@ -32,6 +86,212 @@
*/
public TempJavaEnumerationFragmentFiles(JavaFileInfo javaFileInfo)
throws IOException {
+
super(javaFileInfo);
+ setEnumSetJavaMap(new HashMap<>());
+ setEnumStringList(new ArrayList<>());
+ /*
+ * Initialize enum when generation file type matches to enum class mask.
+ */
+ addGeneratedTempFile(ENUM_IMPL_MASK);
+ setEnumClassTempFileHandle(getTemporaryFileHandle(ENUM_CLASS_TEMP_FILE_NAME));
+ }
+
+ /**
+ * Returns enum class java file handle.
+ *
+ * @return enum class java file handle
+ */
+ public File getEnumClassJavaFileHandle() {
+ return enumClassJavaFileHandle;
+ }
+
+ /**
+ * Sets enum class java file handle.
+ *
+ * @param enumClassJavaFileHandle enum class java file handle
+ */
+ private void setEnumClassJavaFileHandle(File enumClassJavaFileHandle) {
+ this.enumClassJavaFileHandle = enumClassJavaFileHandle;
+ }
+
+ /**
+ * Returns enum's value.
+ *
+ * @return enum's value
+ */
+ private int getEnumValue() {
+ return enumValue;
+ }
+
+ /**
+ * Sets enum's value.
+ *
+ * @param enumValue enum's value
+ */
+ private void setEnumValue(int enumValue) {
+ this.enumValue = enumValue;
+ }
+
+ /**
+ * Returns enum set java map.
+ *
+ * @return the enum set java map
+ */
+ public Map<String, Integer> getEnumSetJavaMap() {
+ return enumStringMap;
+ }
+
+ /**
+ * Sets enum set java map.
+ *
+ * @param map the enum set java map to set
+ */
+ private void setEnumSetJavaMap(Map<String, Integer> map) {
+ this.enumStringMap = map;
+ }
+
+ /**
+ * Returns temporary file handle for enum class file.
+ *
+ * @return temporary file handle for enum class file
+ */
+ public File getEnumClassTempFileHandle() {
+ return enumClassTempFileHandle;
+ }
+
+ /**
+ * Sets temporary file handle for enum class file.
+ *
+ * @param enumClassTempFileHandle temporary file handle for enum class file
+ */
+ private void setEnumClassTempFileHandle(File enumClassTempFileHandle) {
+ this.enumClassTempFileHandle = enumClassTempFileHandle;
+ }
+
+ /**
+ * Adds enum class attributes to temporary file.
+ *
+ * @param curEnumInfo current YANG enum
+ * @throws IOException when fails to do IO operations.
+ */
+ private void addAttributesForEnumClass(String curEnumName) throws IOException {
+ appendToFile(getEnumClassTempFileHandle(), generateEnumAttributeString(curEnumName, getEnumValue()));
+ }
+
+ /**
+ * Adds enum attributes to temporary files.
+ *
+ * @param curNode current YANG node
+ * @throws IOException when fails to do IO operations
+ */
+ public void addEnumAttributeToTempFiles(YangNode curNode) throws IOException {
+
+ super.addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeForEnum());
+ if (curNode instanceof YangEnumeration) {
+ YangEnumeration enumeration = (YangEnumeration) curNode;
+ for (YangEnum curEnum : enumeration.getEnumSet()) {
+ setEnumValue(curEnum.getValue());
+ addToEnumStringList(curEnum.getNamedValue());
+ addToEnumSetJavaMap(curEnum.getNamedValue(), curEnum.getValue());
+ addJavaSnippetInfoToApplicableTempFiles(curEnum.getNamedValue());
+ }
+ } else {
+ throw new TranslatorException("current node should be of enumeration type.");
+ }
+ }
+
+ /**
+ * Returns java attribute for enum class.
+ *
+ * @return java attribute
+ */
+ public JavaAttributeInfo getJavaAttributeForEnum() {
+ YangJavaType<?> javaType = new YangJavaType<>();
+ javaType.setDataType(YangDataTypes.INT32);
+ javaType.setDataTypeName("int");
+ javaType.updateJavaQualifiedInfo();
+ return getAttributeInfoForTheData(
+ javaType.getJavaQualifiedInfo(),
+ javaType.getDataTypeName(), javaType,
+ getIsQualifiedAccessOrAddToImportList(javaType.getJavaQualifiedInfo()),
+ false);
+ }
+
+ /**
+ * Adds current enum name to java list.
+ *
+ * @param curEnumName current enum name
+ */
+ private void addToEnumSetJavaMap(String curEnumName, int value) {
+ getEnumSetJavaMap().put(curEnumName.toUpperCase(), value);
+ }
+
+ /**
+ * Adds the new attribute info to the target generated temporary files.
+ *
+ * @param curEnumName the attribute name that needs to be added to temporary
+ * files
+ * @throws IOException IO operation fail
+ */
+ void addJavaSnippetInfoToApplicableTempFiles(String curEnumName) throws IOException {
+ addAttributesForEnumClass(curEnumName);
+ }
+
+ /**
+ * Constructs java code exit.
+ *
+ * @param fileType generated file type
+ * @param curNode current YANG node
+ * @throws IOException when fails to generate java files
+ */
+ @Override
+ public void generateJavaFile(int fileType, YangNode curNode) throws IOException {
+ createPackage(curNode);
+ setEnumClassJavaFileHandle(getJavaFileHandle(getJavaClassName(ENUM_CLASS_FILE_NAME_SUFFIX)));
+ setEnumClassJavaFileHandle(generateEnumClassFile(getEnumClassJavaFileHandle(), curNode));
+ freeTemporaryResources(false);
+ }
+
+ /**
+ * Removes all temporary file handles.
+ *
+ * @param isErrorOccurred when translator fails to generate java files we
+ * need to close all open file handles include temporary files
+ * and java files.
+ * @throws IOException when failed to delete the temporary files
+ */
+ @Override
+ public void freeTemporaryResources(boolean isErrorOccurred) throws IOException {
+ closeFile(getEnumClassJavaFileHandle(), isErrorOccurred);
+ closeFile(getEnumClassTempFileHandle(), true);
+ super.freeTemporaryResources(isErrorOccurred);
+ }
+
+ /**
+ * Adds to enum string list.
+ *
+ * @param curEnumValue current enum value
+ */
+ private void addToEnumStringList(String curEnumValue) {
+ getEnumStringList().add(curEnumValue.toUpperCase());
+ }
+
+ /**
+ * Returns enum string list.
+ *
+ * @return the enumStringList
+ */
+ public List<String> getEnumStringList() {
+ return enumStringList;
+ }
+
+ /**
+ * Sets enum string list.
+ *
+ * @param enumStringList the enumStringList to set
+ */
+ public void setEnumStringList(List<String> enumStringList) {
+ this.enumStringList = enumStringList;
}
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java
index 0eada3d..4f40ea9 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventFragmentFiles.java
@@ -56,7 +56,7 @@
setExtendsList(new ArrayList<>());
setJavaImportData(new JavaImportData());
setJavaFileInfo(javaFileInfo);
- clearGeneratedTempFileMask();
+
setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
getJavaFileInfo().getPackageFilePath()));
@@ -80,7 +80,6 @@
this.eventJavaFileHandle = eventJavaFileHandle;
}
-
/**
* Constructs java code exit.
*
@@ -88,6 +87,7 @@
* @param curNode current YANG node
* @throws IOException when fails to generate java files
*/
+ @Override
public void generateJavaFile(int fileType, YangNode curNode)
throws IOException {
@@ -113,6 +113,7 @@
* and java files.
* @throws IOException when failed to delete the temporary files
*/
+ @Override
public void freeTemporaryResources(boolean isErrorOccurred)
throws IOException {
boolean isError = isErrorOccurred;
@@ -122,5 +123,6 @@
closeFile(getEventJavaFileHandle(), isError);
super.freeTemporaryResources(isErrorOccurred);
+
}
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventListenerFragmentFiles.java b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventListenerFragmentFiles.java
index c6a297e..d1b0176 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventListenerFragmentFiles.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEventListenerFragmentFiles.java
@@ -56,7 +56,6 @@
setExtendsList(new ArrayList<>());
setJavaImportData(new JavaImportData());
setJavaFileInfo(javaFileInfo);
- clearGeneratedTempFileMask();
setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
getJavaFileInfo().getPackageFilePath()));
}
@@ -79,7 +78,6 @@
this.eventListenerJavaFileHandle = eventListenerJavaFileHandle;
}
-
/**
* Constructs java code exit.
*
@@ -87,6 +85,7 @@
* @param curNode current YANG node
* @throws IOException when fails to generate java files
*/
+ @Override
public void generateJavaFile(int fileType, YangNode curNode)
throws IOException {
@@ -112,6 +111,7 @@
* and java files.
* @throws IOException when failed to delete the temporary files
*/
+ @Override
public void freeTemporaryResources(boolean isErrorOccurred)
throws IOException {
boolean isError = isErrorOccurred;
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index 467ff8a..bcfdf80 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
@@ -19,12 +19,9 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangCase;
-import org.onosproject.yangutils.datamodel.YangEnum;
-import org.onosproject.yangutils.datamodel.YangEnumeration;
import org.onosproject.yangutils.datamodel.YangLeaf;
import org.onosproject.yangutils.datamodel.YangLeafList;
import org.onosproject.yangutils.datamodel.YangLeavesHolder;
@@ -41,8 +38,8 @@
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.ENUM_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EQUALS_IMPL_MASK;
+import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FROM_STRING_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
@@ -50,13 +47,12 @@
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.JavaAttributeInfo.getAttributeInfoForTheData;
+import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getQualifiedInfoOfFromString;
import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getQualifiedTypeInfoOfCurNode;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.generateEnumAttributeString;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefination;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefClose;
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.generateEnumClassFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateImplClassFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateInterfaceFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject;
@@ -68,6 +64,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuildString;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getDefaultConstructorString;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethod;
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;
@@ -81,11 +78,11 @@
import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addAugmentedInfoImport;
import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addHasAugmentationImport;
import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
+import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.detectCollisionBwParentAndChildForImport;
import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.isAugmentedInfoExtended;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils
- .isHasAugmentationExtended;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils
- .prepareJavaFileGeneratorForExtendsList;
+import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.isHasAugmentationExtended;
+import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.prepareJavaFileGeneratorForExtendsList;
+import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.sortImports;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
@@ -98,9 +95,9 @@
import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.readAppendFile;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.mergeJavaFiles;
@@ -110,35 +107,43 @@
* Manages the common temp file required for Java file(s) generated.
*/
public class TempJavaFragmentFiles {
+
/**
* Information about the java files being generated.
*/
private JavaFileInfo javaFileInfo;
+
/**
* Imported class info.
*/
private JavaImportData javaImportData;
+
/**
* The variable which guides the types of temporary files generated using
* the temporary generated file types mask.
*/
private int generatedTempFiles;
+
/**
* Absolute path where the target java file needs to be generated.
*/
private String absoluteDirPath;
+
/**
* Contains all the interface(s)/class name which will be extended by generated files.
*/
private List<String> extendsList = new ArrayList<>();
+
/**
* File type extension for java classes.
*/
private static final String JAVA_FILE_EXTENSION = ".java";
+
/**
* File type extension for temporary classes.
*/
private static final String TEMP_FILE_EXTENSION = ".tmp";
+
/**
* Folder suffix for temporary files folder.
*/
@@ -168,58 +173,62 @@
* File name for attributes.
*/
private static final String ATTRIBUTE_FILE_NAME = "Attributes";
+
/**
* File name for to string method.
*/
private static final String TO_STRING_METHOD_FILE_NAME = "ToString";
+
/**
* File name for hash code method.
*/
private static final String HASH_CODE_METHOD_FILE_NAME = "HashCode";
+
/**
* File name for equals method.
*/
private static final String EQUALS_METHOD_FILE_NAME = "Equals";
/**
- * File name for temporary enum class.
+ * File name for from string method.
*/
- private static final String ENUM_CLASS_TEMP_FILE_NAME = "EnumClass";
+ private static final String FROM_STRING_METHOD_FILE_NAME = "FromString";
/**
* File name for interface java file name suffix.
*/
private static final String INTERFACE_FILE_NAME_SUFFIX = EMPTY_STRING;
+
/**
* File name for builder interface file name suffix.
*/
private static final String BUILDER_INTERFACE_FILE_NAME_SUFFIX = BUILDER + INTERFACE;
+
/**
* File name for builder class file name suffix.
*/
private static final String BUILDER_CLASS_FILE_NAME_SUFFIX = BUILDER;
+
/**
* File name for impl class file name suffix.
*/
private static final String IMPL_CLASS_FILE_NAME_SUFFIX = IMPL;
/**
- * File name for enum class file name suffix.
- */
- private static final String ENUM_CLASS_FILE_NAME_SUFFIX = EMPTY_STRING;
-
- /**
* Java file handle for interface file.
*/
private File interfaceJavaFileHandle;
+
/**
* Java file handle for builder interface file.
*/
private File builderInterfaceJavaFileHandle;
+
/**
* Java file handle for builder class file.
*/
private File builderClassJavaFileHandle;
+
/**
* Java file handle for impl class file.
*/
@@ -254,18 +263,21 @@
* Temporary file handle for hash code method of class.
*/
private File hashCodeImplTempFileHandle;
+
/**
* Temporary file handle for equals method of class.
*/
private File equalsImplTempFileHandle;
+
/**
* Temporary file handle for to string method of class.
*/
private File toStringImplTempFileHandle;
+
/**
- * Temporary file handle for enum class file.
+ * Temporary file handle for from string method of class.
*/
- private File enumClassTempFileHandle;
+ private File fromStringImplTempFileHandle;
/**
* Import info for case.
@@ -275,56 +287,15 @@
/**
* Is attribute added.
*/
- private boolean isAttributePresent = false;
- /**
- * Current enum's value.
- */
- private int enumValue;
- /*
- * Java file handle for enum class.
- */
- private File enumClassJavaFileHandle;
+ private boolean isAttributePresent;
+ /**
+ * Creates an instance of temp java fragment files.
+ */
public TempJavaFragmentFiles() {
}
/**
- * Returns enum class java file handle.
- *
- * @return enum class java file handle
- */
- private File getEnumClassJavaFileHandle() {
- return enumClassJavaFileHandle;
- }
-
- /**
- * Sets enum class java file handle.
- *
- * @param enumClassJavaFileHandle enum class java file handle
- */
- private void setEnumClassJavaFileHandle(File enumClassJavaFileHandle) {
- this.enumClassJavaFileHandle = enumClassJavaFileHandle;
- }
-
- /**
- * Returns enum's value.
- *
- * @return enum's value
- */
- private int getEnumValue() {
- return enumValue;
- }
-
- /**
- * Sets enum's value.
- *
- * @param enumValue enum's value
- */
- private void setEnumValue(int enumValue) {
- this.enumValue = enumValue;
- }
-
- /**
* Retrieves the absolute path where the file needs to be generated.
*
* @return absolute path where the file needs to be generated
@@ -378,12 +349,22 @@
}
/**
- * Sets generated file files.
+ * Adds to generated temporary files.
*
* @param generatedTempFile generated file
*/
void addGeneratedTempFile(int generatedTempFile) {
generatedTempFiles |= generatedTempFile;
+ setGeneratedTempFiles(generatedTempFiles);
+ }
+
+ /**
+ * Sets generated file files.
+ *
+ * @param generatedTempFile generated file
+ */
+ void setGeneratedTempFiles(int fileType) {
+ generatedTempFiles = fileType;
}
/**
@@ -495,6 +476,25 @@
}
/**
+ * Returns from string method's temporary file handle.
+ *
+ * @return from string method's temporary file handle
+ */
+ public File getFromStringImplTempFileHandle() {
+ return fromStringImplTempFileHandle;
+ }
+
+ /**
+ * Sets from string method's temporary file handle.
+ *
+ * @param fromStringImplTempFileHandle from string method's temporary file
+ * handle
+ */
+ private void setFromStringImplTempFileHandle(File fromStringImplTempFileHandle) {
+ this.fromStringImplTempFileHandle = fromStringImplTempFileHandle;
+ }
+
+ /**
* Creates an instance of temporary java code fragment.
*
* @param javaFileInfo generated java file information
@@ -505,7 +505,6 @@
setExtendsList(new ArrayList<>());
setJavaImportData(new JavaImportData());
setJavaFileInfo(javaFileInfo);
- clearGeneratedTempFileMask();
setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
getJavaFileInfo().getPackageFilePath()));
@@ -557,9 +556,16 @@
addGeneratedTempFile(HASH_CODE_IMPL_MASK);
addGeneratedTempFile(EQUALS_IMPL_MASK);
addGeneratedTempFile(TO_STRING_IMPL_MASK);
+ addGeneratedTempFile(FROM_STRING_IMPL_MASK);
}
/*
+ * Initialize temp files to generate enum class.
+ */
+ if ((getGeneratedJavaFiles() & GENERATE_ENUM_CLASS) != 0) {
+ addGeneratedTempFile(FROM_STRING_IMPL_MASK);
+ }
+ /*
* Initialize getter and setter when generation file type matches to
* builder interface mask.
*/
@@ -571,13 +577,6 @@
}
/*
- * Initialize enum when generation file type matches to enum class mask.
- */
- if ((getGeneratedJavaFiles() & GENERATE_ENUM_CLASS) != 0) {
- addGeneratedTempFile(ENUM_IMPL_MASK);
- }
-
- /*
* Set temporary file handles.
*/
if ((getGeneratedTempFiles() & ATTRIBUTES_MASK) != 0) {
@@ -609,9 +608,10 @@
if ((getGeneratedTempFiles() & TO_STRING_IMPL_MASK) != 0) {
setToStringImplTempFileHandle(getTemporaryFileHandle(TO_STRING_METHOD_FILE_NAME));
}
- if ((getGeneratedTempFiles() & ENUM_IMPL_MASK) != 0) {
- setEnumClassTempFileHandle(getTemporaryFileHandle(ENUM_CLASS_TEMP_FILE_NAME));
+ if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
+ setFromStringImplTempFileHandle(getTemporaryFileHandle(FROM_STRING_METHOD_FILE_NAME));
}
+
}
/**
@@ -704,7 +704,6 @@
attributesTempFileHandle = attributeForClass;
}
-
/**
* Returns getter method's impl's temporary file handle.
*
@@ -723,7 +722,6 @@
getterImplTempFileHandle = getterImpl;
}
-
/**
* Returns hash code method's temporary file handle.
*
@@ -779,24 +777,6 @@
}
/**
- * Returns temporary file handle for enum class file.
- *
- * @return temporary file handle for enum class file
- */
- public File getEnumClassTempFileHandle() {
- return enumClassTempFileHandle;
- }
-
- /**
- * Sets temporary file handle for enum class file.
- *
- * @param enumClassTempFileHandle temporary file handle for enum class file
- */
- private void setEnumClassTempFileHandle(File enumClassTempFileHandle) {
- this.enumClassTempFileHandle = enumClassTempFileHandle;
- }
-
- /**
* Returns list of classes to be extended by generated files.
*
* @return list of classes to be extended by generated files
@@ -842,7 +822,8 @@
*/
private void addGetterForInterface(JavaAttributeInfo attr)
throws IOException {
- appendToFile(getGetterInterfaceTempFileHandle(), getGetterString(attr, getGeneratedJavaFiles()) + NEW_LINE);
+ appendToFile(getGetterInterfaceTempFileHandle(),
+ getGetterString(attr, getGeneratedJavaFiles()) + NEW_LINE);
}
/**
@@ -866,7 +847,8 @@
private void addSetterImpl(JavaAttributeInfo attr)
throws IOException {
appendToFile(getSetterImplTempFileHandle(),
- getOverRideString() + getSetterForClass(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles()) +
+ getOverRideString() + getSetterForClass(attr, getGeneratedJavaClassName(), getGeneratedJavaFiles())
+ +
NEW_LINE);
}
@@ -969,18 +951,19 @@
}
/**
- * Adds enum class attributes to temporary file.
+ * Adds from string method for union class.
*
- * @param curEnumInfo current YANG enum
- * @throws IOException when fails to do IO operations.
+ * @param javaAttributeInfo type attribute info
+ * @param fromStringAttributeInfo from string attribute info
+ * @throws IOException when fails to append to temporary file
*/
- private void addAttributesForEnumClass(JavaAttributeInfo curEnumInfo)
+ private void addFromStringMethod(JavaAttributeInfo javaAttributeInfo,
+ JavaAttributeInfo fromStringAttributeInfo)
throws IOException {
- appendToFile(getEnumClassTempFileHandle(),
- generateEnumAttributeString(curEnumInfo.getAttributeName(), getEnumValue()));
+ appendToFile(getFromStringImplTempFileHandle(), getFromStringMethod(javaAttributeInfo,
+ fromStringAttributeInfo) + NEW_LINE);
}
-
/**
* Returns a temporary file handle for the specific file type.
*
@@ -1009,9 +992,7 @@
* @return temporary file handle
* @throws IOException when fails to create new file handle
*/
- File getJavaFileHandle(String fileName)
- throws IOException {
-// createPackage(getAbsoluteDirPath(), getJavaFileInfo().getJavaName());
+ File getJavaFileHandle(String fileName) throws IOException {
return getFileObject(getDirPath(), fileName, JAVA_FILE_EXTENSION, getJavaFileInfo());
}
@@ -1055,7 +1036,8 @@
*/
String attributeName = getCamelCase(getSmallCase(attr.getAttributeName()), null);
if (attr.isQualifiedName()) {
- return getJavaAttributeDefination(attr.getImportInfo().getPkgInfo(), attr.getImportInfo().getClassInfo(),
+ return getJavaAttributeDefination(attr.getImportInfo().getPkgInfo(),
+ attr.getImportInfo().getClassInfo(),
attributeName, attr.isListAttr());
} else {
return getJavaAttributeDefination(null, attr.getImportInfo().getClassInfo(), attributeName,
@@ -1127,11 +1109,24 @@
throw new TranslatorException("Parent node does not have file info");
}
TempJavaFragmentFiles tempJavaFragmentFiles = getNodesInterfaceFragmentFiles(parentNode);
+ boolean isQualified = true;
JavaImportData parentImportData = tempJavaFragmentFiles.getJavaImportData();
- boolean isQualified = parentImportData.addImportInfo(qualifiedTypeInfo);
+ if (isListNode) {
+ parentImportData.setIfListImported(true);
+ }
+ if (!detectCollisionBwParentAndChildForImport(curNode, qualifiedTypeInfo)) {
+ parentImportData.addImportInfo(qualifiedTypeInfo);
+ isQualified = false;
+ }
return getAttributeInfoForTheData(qualifiedTypeInfo, curNodeName, null, isQualified, isListNode);
}
+ /**
+ * Returns interface fragment files for node.
+ *
+ * @param node YANG node
+ * @return interface fragment files for node
+ */
public static TempJavaFragmentFiles getNodesInterfaceFragmentFiles(YangNode node) {
TempJavaFragmentFiles tempJavaFragmentFiles;
if (node instanceof RpcNotificationContainer) {
@@ -1211,6 +1206,7 @@
}
JavaLeafInfoContainer javaLeaf = (JavaLeafInfoContainer) leafList;
javaLeaf.updateJavaQualifiedInfo();
+ getJavaImportData().setIfListImported(true);
JavaAttributeInfo javaAttributeInfo = getAttributeInfoForTheData(
javaLeaf.getJavaQualifiedInfo(),
javaLeaf.getJavaName(yangPluginConfig.getConflictResolver()),
@@ -1242,33 +1238,6 @@
}
/**
- * Adds enum attributes to temporary files.
- *
- * @param curNode current YANG node
- * @throws IOException when fails to do IO operations
- */
- public void addEnumAttributeToTempFiles(YangNode curNode)
- throws IOException {
- if (curNode instanceof YangEnumeration) {
- Set<YangEnum> enumSet = ((YangEnumeration) curNode).getEnumSet();
- /*
- * Get the import info corresponding to the attribute for import in
- * generated java files or qualified access
- */
- JavaQualifiedTypeInfo qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
- getJavaFileInfo().getJavaName());
- for (YangEnum curEnum : enumSet) {
- JavaAttributeInfo javaAttributeInfo = getAttributeInfoForTheData(qualifiedTypeInfo,
- curEnum.getNamedValue(), null, false, false);
- setEnumValue(curEnum.getValue());
- addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo);
- }
- } else {
- throw new TranslatorException("current node should be of type enum.");
- }
- }
-
- /**
* Adds the new attribute info to the target generated temporary files.
*
* @param newAttrInfo the attribute info that needs to be added to temporary
@@ -1306,8 +1275,19 @@
if ((getGeneratedTempFiles() & TO_STRING_IMPL_MASK) != 0) {
addToStringMethod(newAttrInfo);
}
- if ((getGeneratedTempFiles() & ENUM_IMPL_MASK) != 0) {
- addAttributesForEnumClass(newAttrInfo);
+
+ if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
+ JavaQualifiedTypeInfo qualifiedInfoOfFromString = getQualifiedInfoOfFromString(newAttrInfo);
+ /*
+ * Create a new java attribute info with qualified information of
+ * wrapper classes.
+ */
+ JavaAttributeInfo fromStringAttributeInfo = getAttributeInfoForTheData(qualifiedInfoOfFromString,
+ newAttrInfo.getAttributeName(),
+ newAttrInfo.getAttributeType(),
+ getIsQualifiedAccessOrAddToImportList(qualifiedInfoOfFromString), false);
+
+ addFromStringMethod(newAttrInfo, fromStringAttributeInfo);
}
}
@@ -1358,8 +1338,9 @@
* Adds import for case.
*/
if (curNode instanceof YangCase) {
- List<String> importData = ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles().getJavaImportData().getImports();
+ List<String> importData =
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getBeanTempFiles().getJavaImportData().getImports();
for (String importInfo : importData) {
if (!imports.contains(importInfo)) {
imports.add(importInfo);
@@ -1375,6 +1356,7 @@
if (isAugmentedInfoExtended(getExtendsList())) {
addAugmentedInfoImport(curNode, imports, true);
}
+ sortImports(imports);
/*
* Create interface file.
*/
@@ -1406,8 +1388,7 @@
removeCaseImport(imports);
}
}
- if (((fileType & GENERATE_SERVICE_AND_MANAGER) != 0)
- && ((fileType & BUILDER_CLASS_MASK) != 0 || (fileType & IMPL_CLASS_MASK) != 0)) {
+ if ((fileType & BUILDER_CLASS_MASK) != 0 || (fileType & IMPL_CLASS_MASK) != 0) {
if (isAttributePresent()) {
addImportsToStringAndHasCodeMethods(curNode, imports);
}
@@ -1415,12 +1396,14 @@
addAugmentedInfoImport(curNode, imports, true);
addArrayListImport(curNode, imports, true);
}
+ sortImports(imports);
/*
* Create builder class file.
*/
setBuilderClassJavaFileHandle(getJavaFileHandle(getJavaClassName(BUILDER_CLASS_FILE_NAME_SUFFIX)));
setBuilderClassJavaFileHandle(
- generateBuilderClassFile(getBuilderClassJavaFileHandle(), imports, curNode, isAttributePresent()));
+ generateBuilderClassFile(getBuilderClassJavaFileHandle(), imports, curNode,
+ isAttributePresent()));
/*
* Create impl class file.
*/
@@ -1437,14 +1420,6 @@
}
/*
- * Creates type enum class file.
- */
- if ((fileType & GENERATE_ENUM_CLASS) != 0) {
- setEnumClassJavaFileHandle(getJavaFileHandle(getJavaClassName(ENUM_CLASS_FILE_NAME_SUFFIX)));
- setEnumClassJavaFileHandle(generateEnumClassFile(getEnumClassJavaFileHandle(), curNode));
- }
-
- /*
* Close all the file handles.
*/
freeTemporaryResources(false);
@@ -1505,10 +1480,6 @@
closeFile(getImplClassJavaFileHandle(), true);
}
- if ((getGeneratedJavaFiles() & GENERATE_ENUM_CLASS) != 0) {
- closeFile(getEnumClassJavaFileHandle(), isError);
- }
-
/*
* Close all temporary file handles and delete the files.
*/
@@ -1527,8 +1498,8 @@
if ((getGeneratedTempFiles() & EQUALS_IMPL_MASK) != 0) {
closeFile(getEqualsImplTempFileHandle(), true);
}
- if ((getGeneratedTempFiles() & ENUM_IMPL_MASK) != 0) {
- closeFile(getEnumClassTempFileHandle(), true);
+ if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
+ closeFile(getFromStringImplTempFileHandle(), true);
}
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
index 9c0c571..288f640 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
@@ -33,9 +33,11 @@
import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addArrayListImport;
import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addAugmentedInfoImport;
import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils
- .isHasAugmentationExtended;
+import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.isHasAugmentationExtended;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
+import static org.onosproject.yangutils.utils.UtilConstants.VOID;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.createPackage;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateJavaDocForRpc;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
@@ -180,12 +182,13 @@
}
/**
- * Constructs java code exit.
+ * Generate java code.
*
* @param fileType generated file type
* @param curNode current YANG node
* @throws IOException when fails to generate java files
*/
+ @Override
public void generateJavaFile(int fileType, YangNode curNode)
throws IOException {
List<String> imports = new ArrayList<>();
@@ -199,9 +202,6 @@
setServiceInterfaceJavaFileHandle(getJavaFileHandle(getJavaClassName(SERVICE_FILE_NAME_SUFFIX)));
generateServiceInterfaceFile(getServiceInterfaceJavaFileHandle(), curNode, imports, isAttributePresent());
- if (isAttributePresent()) {
- addImportsToStringAndHasCodeMethods(curNode, imports);
- }
if (isHasAugmentationExtended(getExtendsList())) {
addAugmentedInfoImport(curNode, imports, true);
addArrayListImport(curNode, imports, true);
@@ -229,21 +229,20 @@
* @param rpcName name of the rpc function
* @throws IOException IO operation fail
*/
- private void addRpcString(JavaAttributeInfo javaAttributeInfoOfInput, JavaAttributeInfo javaAttributeInfoOfOutput,
- String rpcName)
- throws IOException {
- String rpcInput = "";
- String rpcOutput = "void";
+ private void addRpcString(JavaAttributeInfo javaAttributeInfoOfInput,
+ JavaAttributeInfo javaAttributeInfoOfOutput,
+ String rpcName) throws IOException {
+ String rpcInput = EMPTY_STRING;
+ String rpcOutput = VOID;
if (javaAttributeInfoOfInput != null) {
rpcInput = javaAttributeInfoOfInput.getAttributeName();
}
if (javaAttributeInfoOfOutput != null) {
rpcOutput = javaAttributeInfoOfOutput.getAttributeName();
}
- appendToFile(getRpcInterfaceTempFileHandle(), generateJavaDocForRpc(rpcName, rpcInput, rpcOutput) +
- getRpcServiceMethod(rpcName, rpcInput, rpcOutput) + NEW_LINE);
- appendToFile(getRpcImplTempFileHandle(),
- getRpcManagerMethod(rpcName, rpcInput, rpcOutput) + NEW_LINE);
+ appendToFile(getRpcInterfaceTempFileHandle(), generateJavaDocForRpc(rpcName, RPC_INPUT_VAR_NAME, rpcOutput)
+ + getRpcServiceMethod(rpcName, rpcInput, rpcOutput) + NEW_LINE);
+ appendToFile(getRpcImplTempFileHandle(), getRpcManagerMethod(rpcName, rpcInput, rpcOutput) + NEW_LINE);
}
/**
@@ -269,12 +268,17 @@
* and java files.
* @throws IOException when failed to delete the temporary files
*/
+ @Override
public void freeTemporaryResources(boolean isErrorOccurred)
throws IOException {
boolean isError = isErrorOccurred;
closeFile(getServiceInterfaceJavaFileHandle(), isError);
closeFile(getRpcInterfaceTempFileHandle(), true);
+ closeFile(getRpcImplTempFileHandle(), true);
+ closeFile(getGetterInterfaceTempFileHandle(), true);
+ closeFile(getSetterInterfaceTempFileHandle(), true);
+ closeFile(getSetterImplTempFileHandle(), true);
super.freeTemporaryResources(isErrorOccurred);
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
index 8af0ecd..d9a44d6 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
@@ -21,6 +21,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.onosproject.yangutils.datamodel.YangDataTypes;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.YangTypeHolder;
@@ -33,10 +34,9 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FROM_STRING_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.OF_STRING_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
-import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getQualifiedInfoOfFromString;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateTypeDefClassFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateUnionClassFile;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getFromStringMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOfMethodStringAndJavaDoc;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getTypeConstructorStringAndJavaDoc;
import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
@@ -60,10 +60,6 @@
* File name for construction for special type like union, typedef.
*/
private static final String CONSTRUCTOR_FOR_TYPE_FILE_NAME = "ConstructorForType";
- /**
- * File name for from string method.
- */
- private static final String FROM_STRING_METHOD_FILE_NAME = "FromString";
/**
* File name for typedef class file name suffix.
@@ -86,11 +82,6 @@
private File constructorForTypeTempFileHandle;
/**
- * Temporary file handle for from string method of class.
- */
- private File fromStringImplTempFileHandle;
-
- /**
* Java file handle for typedef class file.
*/
private File typedefClassJavaFileHandle;
@@ -118,10 +109,8 @@
addGeneratedTempFile(CONSTRUCTOR_FOR_TYPE_MASK);
addGeneratedTempFile(FROM_STRING_IMPL_MASK);
-
setOfStringImplTempFileHandle(getTemporaryFileHandle(OF_STRING_METHOD_FILE_NAME));
setConstructorForTypeTempFileHandle(getTemporaryFileHandle(CONSTRUCTOR_FOR_TYPE_FILE_NAME));
- setFromStringImplTempFileHandle(getTemporaryFileHandle(FROM_STRING_METHOD_FILE_NAME));
}
@@ -146,25 +135,6 @@
}
/**
- * Returns from string method's temporary file handle.
- *
- * @return from string method's temporary file handle
- */
- public File getFromStringImplTempFileHandle() {
- return fromStringImplTempFileHandle;
- }
-
- /**
- * Sets from string method's temporary file handle.
- *
- * @param fromStringImplTempFileHandle from string method's temporary file
- * handle
- */
- private void setFromStringImplTempFileHandle(File fromStringImplTempFileHandle) {
- this.fromStringImplTempFileHandle = fromStringImplTempFileHandle;
- }
-
- /**
* Returns java file handle for typedef class file.
*
* @return java file handle for typedef class file
@@ -239,9 +209,14 @@
}
YangJavaType<?> javaType = (YangJavaType<?>) yangType;
javaType.updateJavaQualifiedInfo();
+ String typeName = javaType.getDataTypeName();
+
+ if (javaType.getDataType().equals(YangDataTypes.DERIVED)) {
+ typeName = getCamelCase(typeName, null);
+ }
JavaAttributeInfo javaAttributeInfo = getAttributeInfoForTheData(
javaType.getJavaQualifiedInfo(),
- javaType.getDataTypeName(), javaType,
+ typeName, javaType,
getIsQualifiedAccessOrAddToImportList(javaType.getJavaQualifiedInfo()),
false);
addJavaSnippetInfoToApplicableTempFiles((YangNode) yangTypeHolder, javaAttributeInfo);
@@ -269,34 +244,6 @@
if ((getGeneratedTempFiles() & CONSTRUCTOR_FOR_TYPE_MASK) != 0) {
addTypeConstructor(javaAttributeInfo);
}
-
- JavaQualifiedTypeInfo qualifiedInfoOfFromString = getQualifiedInfoOfFromString(javaAttributeInfo);
- /*
- * Create a new java attribute info with qualified information of
- * wrapper classes.
- */
- JavaAttributeInfo fromStringAttributeInfo = getAttributeInfoForTheData(qualifiedInfoOfFromString,
- javaAttributeInfo.getAttributeName(),
- javaAttributeInfo.getAttributeType(),
- getIsQualifiedAccessOrAddToImportList(qualifiedInfoOfFromString), false);
- if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
- addFromStringMethod(javaAttributeInfo, fromStringAttributeInfo);
- }
- }
-
-
- /**
- * Adds from string method for union class.
- *
- * @param javaAttributeInfo type attribute info
- * @param fromStringAttributeInfo from string attribute info
- * @throws IOException when fails to append to temporary file
- */
- private void addFromStringMethod(JavaAttributeInfo javaAttributeInfo,
- JavaAttributeInfo fromStringAttributeInfo)
- throws IOException {
- appendToFile(getFromStringImplTempFileHandle(), getFromStringMethod(javaAttributeInfo,
- fromStringAttributeInfo) + NEW_LINE);
}
/**
@@ -324,7 +271,6 @@
+ NEW_LINE);
}
-
/**
* Removes all temporary file handles.
*
@@ -333,6 +279,7 @@
* and java files.
* @throws IOException when failed to delete the temporary files
*/
+ @Override
public void freeTemporaryResources(boolean isErrorOccurred)
throws IOException {
boolean isError = isErrorOccurred;
@@ -356,6 +303,7 @@
}
super.freeTemporaryResources(isErrorOccurred);
+
}
/**
@@ -365,6 +313,7 @@
* @param curNode current YANG node
* @throws IOException when fails to generate java files
*/
+ @Override
public void generateJavaFile(int fileType, YangNode curNode)
throws IOException {
List<String> imports = new ArrayList<>();
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumeration.java b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumeration.java
index a11fb2c..0eeb78e 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumeration.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumeration.java
@@ -76,7 +76,6 @@
*/
@Override
public void setJavaFileInfo(JavaFileInfo javaInfo) {
-
javaFileInfo = javaInfo;
}
@@ -87,7 +86,6 @@
*/
@Override
public TempJavaCodeFragmentFiles getTempJavaCodeFragmentFiles() {
-
return tempFileHandle;
}
@@ -98,7 +96,6 @@
*/
@Override
public void setTempJavaCodeFragmentFiles(TempJavaCodeFragmentFiles fileHandle) {
-
tempFileHandle = fileHandle;
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
index cdda4d3..ff48fb4 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
@@ -27,6 +27,7 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
/**
* Represents module information extended to support java code generation.
@@ -118,5 +119,7 @@
public void generateCodeExit()
throws IOException {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
+ searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
+ getJavaFileInfo().getPackageFilePath());
}
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
index 0bcab6f..570169c 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
@@ -28,6 +28,7 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
/**
* Represents sub module information extended to support java code generation.
@@ -133,5 +134,7 @@
public void generateCodeExit()
throws IOException {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
+ searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
+ getJavaFileInfo().getPackageFilePath());
}
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java
index 18bbc1a..39b6220 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaType.java
@@ -68,6 +68,7 @@
}
importInfo.setClassInfo(dataTypeName);
}
+ setJavaQualifiedInfo(importInfo);
}
@Override
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
index 6c91f4f..606fc3d 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
@@ -38,6 +38,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.INT;
import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
@@ -45,7 +46,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.LONG;
import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.NEW;
-import static org.onosproject.yangutils.utils.UtilConstants.OF;
import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
@@ -146,7 +146,7 @@
case BINARY:
//TODO:BINARY
case DERIVED:
- return targetDataType + PERIOD + OF;
+ return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
default:
throw new TranslatorException("given data type is not supported.");
}
@@ -316,8 +316,7 @@
} else {
switch (type) {
case UINT64:
- //TODO: BIGINTEGER.
- break;
+ return JAVA_MATH;
case DECIMAL64:
//TODO: DECIMAL64
break;
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index 5cfb777..9f12346 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -74,7 +74,7 @@
if ((genFileTypes & INTERFACE_MASK) != 0) {
return getInterfaceDefinition(yangName);
} else if ((genFileTypes & BUILDER_CLASS_MASK) != 0) {
- return getBuilderClassDefinition(yangName, genFileTypes);
+ return getBuilderClassDefinition(yangName);
} else if ((genFileTypes & IMPL_CLASS_MASK) != 0) {
return getImplClassDefinition(yangName);
} else if ((genFileTypes & BUILDER_INTERFACE_MASK) != 0) {
@@ -142,14 +142,9 @@
* @param genFileTypes
* @return definition
*/
- 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;
- }
+ 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;
}
/**
@@ -180,7 +175,11 @@
* @return definition
*/
private static String getRpcInterfaceDefinition(String yangName) {
- return INTERFACE + SPACE + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ if (yangName.contains(SERVICE)) {
+ return PUBLIC + SPACE + INTERFACE + SPACE + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ }
+ return PUBLIC + SPACE + CLASS + SPACE + yangName + MANAGER + SPACE + IMPLEMENTS + SPACE + yangName + SERVICE
+ + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
}
/**
@@ -195,7 +194,7 @@
if (classDef.length() < 5) {
throw new RuntimeException("Event class name is error");
}
- classDef = classDef.substring(0, (classDef.length() - 5));
+ classDef = classDef.substring(0, classDef.length() - 5);
classDef = classDef + ">" + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
return classDef;
@@ -213,7 +212,7 @@
if (intfDef.length() < 8) {
throw new RuntimeException("Event listener interface name is error");
}
- intfDef = intfDef.substring(0, (intfDef.length() - 8));
+ intfDef = intfDef.substring(0, intfDef.length() - 8);
intfDef = intfDef + "Event>" + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
return intfDef;
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 1942b01..189a329 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -19,7 +19,6 @@
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
@@ -87,11 +86,6 @@
* @return corresponding textual java code information
*/
public static String getJavaClassDefStart(int genFileTypes, String yangName) {
-
- /*
- * get the camel case name for java class / interface.
- */
- yangName = getCamelCase(yangName, null);
return generateClassDefinition(genFileTypes, yangName);
}
@@ -168,8 +162,9 @@
* @return string for enum's attribute
*/
public static String generateEnumAttributeString(String name, int value) {
- return getJavaDoc(ENUM_ATTRIBUTE, name, false) + FOUR_SPACE_INDENTATION + getEnumJavaAttribute(name)
- + OPEN_PARENTHESIS + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
+ return getJavaDoc(ENUM_ATTRIBUTE, name, false) + FOUR_SPACE_INDENTATION
+ + getEnumJavaAttribute(name).toUpperCase() + OPEN_PARENTHESIS
+ + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
}
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index 26487d8..3edf5c0 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -25,6 +25,7 @@
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
+import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles;
import org.onosproject.yangutils.translator.tojava.javamodel.JavaCodeGeneratorInfo;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
@@ -62,6 +63,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentInfoListImpl;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructorStart;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsConstrcutor;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsOfMethod;
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;
@@ -84,7 +86,6 @@
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;
@@ -164,7 +165,8 @@
* @return interface file
* @throws IOException when fails to write in file
*/
- public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode, boolean isAttrPresent)
+ public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode,
+ boolean isAttrPresent)
throws IOException {
JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -311,7 +313,8 @@
/**
* Add default constructor and build method impl.
*/
- methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().addBuildMethodImpl());
+ methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .addBuildMethodImpl());
methods.add(((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
.addDefaultConstructor(PUBLIC, BUILDER));
@@ -340,42 +343,45 @@
JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
- String className = getCaptialCase(javaFileInfo.getJavaName()) + MANAGER;
+ String className = getCaptialCase(javaFileInfo.getJavaName());
String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
initiateJavaFileGeneration(file, className, GENERATE_SERVICE_AND_MANAGER, imports, path);
List<String> methods = new ArrayList<>();
- if (isAttrPresent) {
-
- try {
+ try {
+ if (isAttrPresent) {
/**
* Getter methods.
*/
- methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getServiceTempFiles()));
+ 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);
+ methods.add(
+ getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK,
+ ((TempJavaCodeFragmentFilesContainer) curNode)
+ .getTempJavaCodeFragmentFiles().getServiceTempFiles())
+ + NEW_LINE);
+ }
+ if (((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getServiceTempFiles() != null) {
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");
+ methods.add(getDataFromTempFileHandle(RPC_IMPL_MASK,
+ javaGeninfo.getTempJavaCodeFragmentFiles().getServiceTempFiles()));
}
- } else {
insertDataIntoJavaFile(file, NEW_LINE);
+
+ } catch (IOException e) {
+ throw new IOException("No data found in temporary java code fragment files for " + className
+ + " while manager class file generation");
}
/**
@@ -746,16 +752,34 @@
/**
* Add a constructor for enum.
*/
- insertDataIntoJavaFile(file,
- getJavaDoc(TYPE_CONSTRUCTOR, getSmallCase(className), false) + getEnumsConstrcutor(className)
- + NEW_LINE);
+ insertDataIntoJavaFile(file, getJavaDoc(TYPE_CONSTRUCTOR, getSmallCase(className), false)
+ + getEnumsConstrcutor(className) + NEW_LINE);
+
+ TempJavaEnumerationFragmentFiles enumFragFiles =
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getEnumerationTempFiles();
+ insertDataIntoJavaFile(file, getEnumsOfMethod(className,
+ enumFragFiles.getJavaAttributeForEnum(),
+ enumFragFiles.getEnumSetJavaMap(),
+ enumFragFiles.getEnumStringList())
+ + NEW_LINE);
/**
* Add a getter method for enum.
*/
- insertDataIntoJavaFile(file,
- getJavaDoc(GETTER_METHOD, getSmallCase(className), false)
- + getGetter(INT, getSmallCase(className), GENERATE_SERVICE_AND_MANAGER) + NEW_LINE);
+ insertDataIntoJavaFile(file, getJavaDoc(GETTER_METHOD, getSmallCase(className), false)
+ + getGetter(INT, getSmallCase(className), GENERATE_ENUM_CLASS) + NEW_LINE);
+
+ try {
+ insertDataIntoJavaFile(file, getFromStringMethodSignature(className)
+ + getDataFromTempFileHandle(FROM_STRING_IMPL_MASK,
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getEnumerationTempFiles())
+ + getFromStringMethodClose());
+ } catch (IOException e) {
+ throw new IOException("No data found in temporary java code fragment files for " + className
+ + " while enum class file generation");
+ }
insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
@@ -785,33 +809,30 @@
List<String> methods = new ArrayList<>();
-
try {
if (isAttributePresent) {
/**
* Getter methods.
*/
- methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
+ methods.add(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,
+ methods.add(getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
.getServiceTempFiles()));
}
-
-
- JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
- /**
- * Rpc methods
- */
- methods.add(getDataFromTempFileHandle(RPC_INTERFACE_MASK, javaGeninfo.getTempJavaCodeFragmentFiles()
- .getServiceTempFiles()));
-
+ if (((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getServiceTempFiles() != null) {
+ JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
+ /**
+ * Rpc methods
+ */
+ methods.add(getDataFromTempFileHandle(RPC_INTERFACE_MASK,
+ javaGeninfo.getTempJavaCodeFragmentFiles().getServiceTempFiles()));
+ }
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
+ " while rpc class file generation");
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index 1304706..4f363d8 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -23,6 +23,7 @@
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.TempJavaEnumerationFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
@@ -39,6 +40,7 @@
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;
@@ -58,13 +60,16 @@
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
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.ORG;
import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE;
import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
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;
@@ -73,7 +78,7 @@
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;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_MANAGER;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
/**
@@ -105,7 +110,6 @@
* Returns data stored in temporary files.
*
* @param generatedTempFiles temporary file types
- * @param generatedTempFiles temporary file types
* @param tempJavaFragmentFiles temp java fragment files
* @return data stored in temporary files
* @throws IOException when failed to get the data from temporary file handle
@@ -130,9 +134,10 @@
if (tempJavaFragmentFiles instanceof TempJavaServiceFragmentFiles) {
serviceFragmentFiles = (TempJavaServiceFragmentFiles) tempJavaFragmentFiles;
}
-
-
- if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
+ if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) {
+ return tempJavaFragmentFiles
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAttributesTempFileHandle());
+ } else if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
return tempJavaFragmentFiles
.getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterInterfaceTempFileHandle());
} else if ((generatedTempFiles & SETTER_FOR_INTERFACE_MASK) != 0) {
@@ -172,14 +177,16 @@
return typeFragmentFiles
.getTemporaryDataFromFileHandle(typeFragmentFiles.getConstructorForTypeTempFileHandle());
} else if ((generatedTempFiles & FROM_STRING_IMPL_MASK) != 0) {
- 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());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getFromStringImplTempFileHandle());
+ } else if ((generatedTempFiles & ENUM_IMPL_MASK) != 0) {
+ if (!(tempJavaFragmentFiles instanceof TempJavaEnumerationFragmentFiles)) {
+ throw new TranslatorException("Required enum info is missing.");
+ }
+ TempJavaEnumerationFragmentFiles enumFragmentFiles =
+ (TempJavaEnumerationFragmentFiles) tempJavaFragmentFiles;
+ return enumFragmentFiles
+ .getTemporaryDataFromFileHandle(enumFragmentFiles.getEnumClassTempFileHandle());
} else if ((generatedTempFiles & RPC_INTERFACE_MASK) != 0) {
if (serviceFragmentFiles == null) {
throw new TranslatorException("Required rpc interface info is missing.");
@@ -328,7 +335,15 @@
*/
private static void write(File file, String fileName, int genType, JavaDocType javaDocType)
throws IOException {
- insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
+ if ((genType & GENERATE_SERVICE_AND_MANAGER) != 0) {
+ if (!fileName.contains(SERVICE)) {
+ insertDataIntoJavaFile(file, getJavaDoc(RPC_MANAGER, fileName + MANAGER, false));
+ } else {
+ insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
+ }
+ } else {
+ insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
+ }
insertDataIntoJavaFile(file, getJavaClassDefStart(genType, fileName));
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index c4da89a..b98b71c 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -16,6 +16,9 @@
package org.onosproject.yangutils.translator.tojava.utils;
+import java.util.List;
+import java.util.Map;
+
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
@@ -31,12 +34,15 @@
import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.CASE;
import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
import static org.onosproject.yangutils.utils.UtilConstants.CHECK_NOT_NULL_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.CLEAR;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
+import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
@@ -82,6 +88,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
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.TMP_VAL;
import static org.onosproject.yangutils.utils.UtilConstants.TO;
@@ -494,10 +501,11 @@
rpcName = getSmallCase(getCamelCase(rpcName, null));
inputName = getCaptialCase(inputName);
- outputName = getCaptialCase(outputName);
-
- return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName + OPEN_PARENTHESIS
- + inputName + SPACE + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
+ if (!outputName.equals(VOID)) {
+ outputName = getCaptialCase(outputName);
+ }
+ return FOUR_SPACE_INDENTATION + outputName + SPACE + rpcName + OPEN_PARENTHESIS + inputName + SPACE
+ + RPC_INPUT_VAR_NAME + CLOSE_PARENTHESIS + SEMI_COLAN;
}
/**
@@ -512,12 +520,14 @@
rpcName = getSmallCase(getCamelCase(rpcName, null));
inputName = getCaptialCase(inputName);
- outputName = getCaptialCase(outputName);
+ if (!outputName.equals(VOID)) {
+ 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;
+ 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;
}
@@ -601,7 +611,7 @@
* @return from string method's open string
*/
public static String getFromStringMethodSignature(String className) {
- return getJavaDoc(FROM_METHOD, className, false) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE
+ return getJavaDoc(FROM_METHOD, className, false) + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE
+ className + SPACE + FROM_STRING_METHOD_NAME + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE
+ FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
}
@@ -677,7 +687,6 @@
+ OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS;
}
-
/**
* Returns hash code method open strings.
*
@@ -916,4 +925,38 @@
+ OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
+ SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
}
+
+ /**
+ * Returns of method for enum class.
+ *
+ * @param className class name
+ * @param attr java attribute
+ * @param enumMap enum's sets map
+ * @param enumList enum's sets list
+ * @return of method
+ */
+ public static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
+ Map<String, Integer> enumMap, List<String> enumList) {
+ String attrType = getReturnType(attr);
+ String attrName = getSmallCase(attr.getAttributeName());
+
+ String method = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + STATIC + SPACE + className + SPACE + OF
+ + OPEN_PARENTHESIS
+ + attrType + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
+ + EIGHT_SPACE_INDENTATION + SWITCH + SPACE + OPEN_PARENTHESIS + VALUE
+ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ int value = 0;
+ for (String str : enumList) {
+
+ value = enumMap.get(str);
+ method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE
+ + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + className + PERIOD
+ + str + SEMI_COLAN + NEW_LINE;
+ }
+ method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION
+ + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET
+ + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+
+ return getJavaDoc(OF_METHOD, className + " for type " + attrName, false) + method;
+ }
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
index 741274e..e1db371 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
@@ -21,7 +21,11 @@
import java.util.List;
import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
import org.onosproject.yangutils.translator.tojava.JavaImportDataContainer;
+import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
+
+import static java.util.Collections.sort;
import static org.onosproject.yangutils.translator.tojava.JavaImportData.getAugmentedInfoImport;
import static org.onosproject.yangutils.translator.tojava.JavaImportData.getHasAugmentationImport;
@@ -31,8 +35,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.HAS_AUGMENTATION;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
-import static java.util.Collections.sort;
-
/**
* Represents utilities for temporary java code fragments.
*/
@@ -52,7 +54,8 @@
* @param operation add or delete import
* @return import for HasAugmentation class
*/
- public static List<String> addHasAugmentationImport(YangNode curNode, List<String> imports, boolean operation) {
+ public static List<String> addHasAugmentationImport(YangNode curNode, List<String> imports,
+ boolean operation) {
if (curNode instanceof JavaImportDataContainer) {
String thisImport = getHasAugmentationImport();
performOperationOnImports(imports, thisImport, operation);
@@ -109,13 +112,14 @@
* @param operation add or remove
* @return import list
*/
- private static List<String> performOperationOnImports(List<String> imports, String curImport, boolean operation) {
+ private static List<String> performOperationOnImports(List<String> imports, String curImport,
+ boolean operation) {
if (operation) {
imports.add(curImport);
} else {
imports.remove(curImport);
}
- sort(imports);
+ sortImports(imports);
return imports;
}
@@ -142,7 +146,7 @@
* @return true or false
*/
public static boolean isHasAugmentationExtended(List<String> extendsList) {
- return (extendsList != null && extendsList.contains(HAS_AUGMENTATION));
+ return extendsList != null && extendsList.contains(HAS_AUGMENTATION);
}
/**
@@ -152,7 +156,7 @@
* @return true or false
*/
public static boolean isAugmentedInfoExtended(List<String> extendsList) {
- return (extendsList != null && extendsList.contains(AUGMENTED_INFO));
+ return extendsList != null && extendsList.contains(AUGMENTED_INFO);
}
/**
@@ -172,4 +176,37 @@
}
}
}
+
+ /**
+ * Detects collision between parent and child node which have same name.
+ * When parent and child node both have the same name in that case child node should be used with
+ * qualified name.
+ *
+ * @param curNode current YANG node
+ * @param qualifiedTypeInfo current node's qualified info
+ * @return true if collision is detected
+ */
+ public static boolean detectCollisionBwParentAndChildForImport(YangNode curNode,
+ JavaQualifiedTypeInfo qualifiedTypeInfo) {
+
+ YangNode parent = curNode.getParent();
+ String parentsClassInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName();
+ String childsClassInfo = qualifiedTypeInfo.getClassInfo();
+ if (childsClassInfo.equals(parentsClassInfo)) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Returns sorted import list.
+ *
+ * @param imports import list
+ * @return sorted import list
+ */
+ public static List<String> sortImports(List<String> imports) {
+ sort(imports);
+ return imports;
+ }
+
}
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
index 0597683..d285351 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/YangJavaModelUtils.java
@@ -149,7 +149,7 @@
/**
* Enumeration
*/
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
+ javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getEnumerationTempFiles()
.addEnumAttributeToTempFiles((YangNode) javaCodeGeneratorInfo);
} else if (javaCodeGeneratorInfo instanceof YangChoice) {
/*Do nothing, only the interface needs to be generated*/
diff --git a/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index 965367c..dc7920a 100644
--- a/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -41,7 +41,6 @@
public static final String INTERFACE_JAVA_DOC = " * Abstraction of an entity which represents the"
+ " functionality of ";
-
/**
* JavaDocs for event.
*/
@@ -52,7 +51,6 @@
*/
public static final String EVENT_LISTENER_JAVA_DOC = " * Abstraction for event listener of ";
-
/**
* JavaDocs for builder interface class.
*/
@@ -169,6 +167,11 @@
public static final String NEW_LINE = "\n";
/**
+ * Static attribute for default.
+ */
+ public static final String DEFAULT = "default";
+
+ /**
* Static attribute for multiple new line.
*/
public static final String MULTIPLE_NEW_LINE = "\n\n";
@@ -434,6 +437,16 @@
public static final String CLEAR = "clear";
/**
+ * Static attribute for switch syntax.
+ */
+ public static final String SWITCH = "switch";
+
+ /**
+ * Static attribute for case syntax.
+ */
+ public static final String CASE = "case";
+
+ /**
* Static attribute for temp val syntax.
*/
public static final String TMP_VAL = "tmpVal";
@@ -703,7 +716,6 @@
*/
public static final String SERVICE = "Service";
-
/**
* Static attribute for interface syntax.
*/
@@ -875,7 +887,7 @@
public static final String ARRAY_LIST = "ArrayList";
/**
- * comment to be added for autogenerated impl methods.
+ * Comment to be added for autogenerated impl methods.
*/
public static final String YANG_UTILS_TODO = "//TODO: YANG utils generated code";
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 1dced05..7d8fd84 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
@@ -24,8 +24,9 @@
import java.io.PrintWriter;
import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getJavaPackageFromPackagePath;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getPackageDirPathFromJavaJPackage;
@@ -35,7 +36,6 @@
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;
@@ -62,7 +62,7 @@
public static boolean doesPackageExist(String pkg) {
File pkgDir = new File(getPackageDirPathFromJavaJPackage(pkg));
File pkgWithFile = new File(pkgDir + SLASH + "package-info.java");
- return (pkgDir.exists() && pkgWithFile.isFile());
+ return pkgDir.exists() && pkgWithFile.isFile();
}
/**
@@ -71,26 +71,24 @@
* @param yangNode YANG node for which code is being generated
* @throws IOException any IO exception
*/
- 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();
+ public static void createPackage(YangNode yangNode) throws IOException {
+ if (!(yangNode instanceof JavaFileInfoContainer)) {
+ throw new TranslatorException("current node must have java file info");
}
-
- if (!doesPackageExist(absolutePath)) {
+ String pkgInfo;
+ JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo();
+ String pkg = getAbsolutePackagePath(javaFileInfo.getBaseCodeGenPath(), javaFileInfo.getPackageFilePath());
+ if (!doesPackageExist(pkg)) {
try {
- File pack = createDirectories(absolutePath);
- addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(absolutePath));
+ File pack = createDirectories(pkg);
+ YangNode parent = getParentNodeInGenCode(yangNode);
+ if (parent != null) {
+ pkgInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo().getJavaName();
+ addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), true);
+ } else {
+ pkgInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo().getJavaName();
+ addPackageInfo(pack, pkgInfo, getJavaPackageFromPackagePath(pkg), false);
+ }
} catch (IOException e) {
throw new IOException("failed to create package-info file");
}
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 fdf876d..335de7f 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
@@ -19,7 +19,6 @@
import org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
@@ -54,12 +53,14 @@
import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
import static org.onosproject.yangutils.utils.UtilConstants.OF;
import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
+import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC_OF_CHILD;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.RPC_OUTPUT_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
+import static org.onosproject.yangutils.utils.UtilConstants.VOID;
/**
* Represents javadoc for the generated classes.
@@ -108,11 +109,16 @@
GETTER_METHOD,
/**
- * For rpc.
+ * For rpc service.
*/
RPC_INTERFACE,
/**
+ * For rpc manager.
+ */
+ RPC_MANAGER,
+
+ /**
* For event.
*/
EVENT,
@@ -203,7 +209,7 @@
return generateForBuilderInterface(name);
}
case PACKAGE_INFO: {
- return generateForPackage(name);
+ return generateForPackage(name, isList);
}
case GETTER_METHOD: {
return generateForGetters(name, isList);
@@ -239,7 +245,10 @@
return generateForEnumAttr(name);
}
case RPC_INTERFACE: {
- return generateForRpcInterface(name);
+ return generateForRpcService(name);
+ }
+ case RPC_MANAGER: {
+ return generateForImplClass(name);
}
case EVENT: {
return generateForEvent(name);
@@ -274,13 +283,14 @@
*/
public static String generateJavaDocForRpc(String rpcName, String inputName, String outputName) {
rpcName = getCamelCase(rpcName, null);
- inputName = getCaptialCase(inputName);
- outputName = getCaptialCase(outputName);
- return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RPC
+ 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) + getOutputString(outputName, rpcName) + FOUR_SPACE_INDENTATION
- + JAVA_DOC_END_LINE;
+ + getInputString(inputName, rpcName);
+ if (!outputName.equals(VOID)) {
+ javadoc = javadoc + getOutputString(outputName, rpcName);
+ }
+ return javadoc + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
}
/**
@@ -315,7 +325,7 @@
* @param interfaceName interface name
* @return javaDocs
*/
- private static String generateForRpcInterface(String interfaceName) {
+ private static String generateForRpcService(String interfaceName) {
return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
+ JAVA_DOC_END_LINE;
}
@@ -436,7 +446,7 @@
return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
+ attribute + SPACE + FROM_STRING_METHOD_NAME + SPACE + INPUT + SPACE + STRING_DATA_TYPE + PERIOD
+ NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM
- + FROM_STRING_PARAM_NAME + SPACE + INPUT + SPACE + STRING_DATA_TYPE + PERIOD + NEW_LINE
+ + FROM_STRING_PARAM_NAME + SPACE + INPUT + SPACE + STRING_DATA_TYPE + NEW_LINE
+ FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + OBJECT + SPACE + OF + SPACE + attribute + NEW_LINE
+ FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
}
@@ -512,10 +522,15 @@
* Generates javaDocs for package-info.
*
* @param packageName package name
+ * @param isChildNode is it child node
* @return javaDocs
*/
- private static String generateForPackage(String packageName) {
- return JAVA_DOC_FIRST_LINE + PACKAGE_INFO_JAVADOC + packageName + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
+ private static String generateForPackage(String packageName, boolean isChildNode) {
+ String javaDoc = JAVA_DOC_FIRST_LINE + PACKAGE_INFO_JAVADOC + packageName;
+ if (isChildNode) {
+ javaDoc = javaDoc + PACKAGE_INFO_JAVADOC_OF_CHILD;
+ }
+ return javaDoc + PERIOD + NEW_LINE + JAVA_DOC_END_LINE;
}
/**
@@ -536,11 +551,10 @@
* @return javaDocs
*/
private static String generateForConstructors(String className) {
- return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE
- + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR + className + IMPL + PERIOD + NEW_LINE
- + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM
- + BUILDER.toLowerCase() + OBJECT + SPACE + BUILDER_OBJECT + className + NEW_LINE
- + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
+ return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
+ + className + IMPL + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
+ + FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + BUILDER.toLowerCase() + OBJECT + SPACE + BUILDER_OBJECT
+ + className + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
}
/**
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 192df4e..a076fbe 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
@@ -23,7 +23,9 @@
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Stack;
import org.apache.commons.io.FileUtils;
import org.apache.maven.model.Resource;
@@ -80,9 +82,11 @@
* @param path directory path
* @param classInfo class info for the package
* @param pack package of the directory
+ * @param isChildNode is it a child node
* @throws IOException when fails to create package info file
*/
- public static void addPackageInfo(File path, String classInfo, String pack) throws IOException {
+ public static void addPackageInfo(File path, String classInfo, String pack, boolean isChildNode)
+ throws IOException {
if (pack.contains(ORG)) {
String[] strArray = pack.split(ORG);
@@ -97,7 +101,7 @@
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(CopyrightHeader.getCopyrightHeader());
- bufferedWriter.write(getJavaDoc(PACKAGE_INFO, classInfo, false));
+ bufferedWriter.write(getJavaDoc(PACKAGE_INFO, classInfo, isChildNode));
bufferedWriter.write(PACKAGE + SPACE + pack + SEMI_COLAN);
bufferedWriter.close();
@@ -119,12 +123,46 @@
try {
FileUtils.deleteDirectory(generatedDirectory);
} catch (IOException e) {
- throw new IOException("Failed to delete the generated files in " + generatedDirectory + " directory");
+ throw new IOException(
+ "Failed to delete the generated files in " + generatedDirectory + " directory");
}
}
}
/**
+ * Searches and deletes generated temporary directories.
+ *
+ * @param root root directory
+ * @throws IOException when fails to do IO operations.
+ */
+ public static void searchAndDeleteTempDir(String root) throws IOException {
+ List<File> store = new LinkedList<>();
+ Stack<String> stack = new Stack<>();
+ stack.push(root);
+
+ while (!stack.empty()) {
+ root = stack.pop();
+ File file = new File(root);
+ File[] filelist = file.listFiles();
+ if (filelist == null || filelist.length == 0) {
+ continue;
+ }
+ for (File current : filelist) {
+ if (current.isDirectory()) {
+ stack.push(current.toString());
+ if (current.getName().endsWith("-Temp")) {
+ store.add(current);
+ }
+ }
+ }
+ }
+
+ for (File dir : store) {
+ dir.delete();
+ }
+ }
+
+ /**
* Adds generated source directory to the compilation root.
*
* @param source directory
diff --git a/src/test/java/org/onosproject/yangutils/translator/tojava/utils/EnumTranslatorTest.java b/src/test/java/org/onosproject/yangutils/translator/tojava/utils/EnumTranslatorTest.java
new file mode 100644
index 0000000..2a950fc
--- /dev/null
+++ b/src/test/java/org/onosproject/yangutils/translator/tojava/utils/EnumTranslatorTest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.translator.tojava.utils;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.parser.exceptions.ParserException;
+import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
+
+import static org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorUtil.generateJavaCode;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
+
+/**
+ * Unit test case for enum translator.
+ */
+public final class EnumTranslatorTest {
+
+ private final YangUtilsParserManager manager = new YangUtilsParserManager();
+
+ /**
+ * Checks enum translation should not result in any exception.
+ */
+ @Test
+ public void processEnumTranslator()
+ throws IOException, ParserException {
+
+ String userDir = System.getProperty("user.dir");
+ YangNode node = manager.getDataModel("src/test/resources/EnumTranslator.yang");
+
+ YangPluginConfig yangPluginConfig = new YangPluginConfig();
+ yangPluginConfig.setCodeGenDir(userDir + "/target/EnumTestGenFile/");
+
+ generateJavaCode(node, yangPluginConfig);
+
+ deleteDirectory(userDir + "/target/EnumTestGenFile/");
+ }
+ // TODO enhance the test cases, after having a framework of translator test.
+}
diff --git a/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java b/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java
index 0d97cf0..9819445 100644
--- a/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java
+++ b/src/test/java/org/onosproject/yangutils/utils/io/impl/FileSystemUtilTest.java
@@ -22,6 +22,7 @@
import java.lang.reflect.InvocationTargetException;
import org.junit.Test;
+import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
@@ -41,20 +42,23 @@
public final class FileSystemUtilTest {
private static final String BASE_DIR_PKG = "target.UnitTestCase.";
- private static final String PKG_INFO_CONTENT = "testGeneration6";
private static final String BASE_PKG = "target/UnitTestCase";
private static final String TEST_DATA_1 = "This is to append a text to the file first1\n";
private static final String TEST_DATA_2 = "This is next second line\n";
private static final String TEST_DATA_3 = "This is next third line in the file";
+ private static final String TEST_FILE = "testFile";
+ private static final String SOURCE_TEST_FILE = "sourceTestFile";
+ private static final String DIR_PATH = "exist1.exist2.exist3";
+ private static final String PKG_INFO = "package-info.java";
/**
* A private constructor is tested.
*
- * @throws SecurityException if any security violation is observed
- * @throws NoSuchMethodException if when the method is not found
- * @throws IllegalArgumentException if there is illegal argument found
- * @throws InstantiationException if instantiation is provoked for the private constructor
- * @throws IllegalAccessException if instance is provoked or a method is provoked
+ * @throws SecurityException if any security violation is observed
+ * @throws NoSuchMethodException if when the method is not found
+ * @throws IllegalArgumentException if there is illegal argument found
+ * @throws InstantiationException if instantiation is provoked for the private constructor
+ * @throws IllegalAccessException if instance is provoked or a method is provoked
* @throws InvocationTargetException when an exception occurs by the method or constructor
*/
@Test
@@ -62,7 +66,7 @@
throws SecurityException, NoSuchMethodException, IllegalArgumentException,
InstantiationException, IllegalAccessException, InvocationTargetException {
- Class<?>[] classesToConstruct = {FileSystemUtil.class};
+ Class<?>[] classesToConstruct = {FileSystemUtil.class };
for (Class<?> clazz : classesToConstruct) {
Constructor<?> constructor = clazz.getDeclaredConstructor();
constructor.setAccessible(true);
@@ -76,14 +80,13 @@
* @throws IOException when fails to create a test file
*/
@Test
- public void updateFileHandleTest()
- throws IOException {
+ public void updateFileHandleTest() throws IOException {
- File dir = new File(BASE_PKG + SLASH + "File1");
+ File dir = new File(BASE_PKG + SLASH + TEST_FILE);
dir.mkdirs();
- File createFile = new File(dir + "testFile");
+ File createFile = new File(dir + TEST_FILE);
createFile.createNewFile();
- File createSourceFile = new File(dir + "sourceTestFile");
+ File createSourceFile = new File(dir + SOURCE_TEST_FILE);
createSourceFile.createNewFile();
updateFileHandle(createFile, TEST_DATA_1, false);
updateFileHandle(createFile, TEST_DATA_2, false);
@@ -98,23 +101,31 @@
* @throws IOException when failed to create a test file
*/
@Test
- public void packageExistTest()
- throws IOException {
+ public void packageExistTest() throws IOException {
- String dirPath = "exist1.exist2.exist3";
- String strPath = BASE_DIR_PKG + dirPath;
+ String strPath = BASE_DIR_PKG + DIR_PATH;
File createDir = new File(strPath.replace(PERIOD, SLASH));
createDir.mkdirs();
- File createFile = new File(createDir + SLASH + "package-info.java");
+ File createFile = new File(createDir + SLASH + PKG_INFO);
createFile.createNewFile();
assertThat(true, is(doesPackageExist(strPath)));
- JavaFileInfo javaFileInfo = new JavaFileInfo();
- javaFileInfo.setBaseCodeGenPath(BASE_DIR_PKG);
- javaFileInfo.setPackageFilePath(dirPath);
- YangJavaModule moduleNode = new YangJavaModule();
- moduleNode.setJavaFileInfo(javaFileInfo);
- createPackage(moduleNode);
+ createPackage(getStubNode());
createDir.delete();
}
+ /**
+ * Returns stub YANG node.
+ *
+ * @return stub node
+ */
+ private YangNode getStubNode() {
+ YangJavaModule module = new YangJavaModule();
+ module.setName(TEST_DATA_1);
+ JavaFileInfo javafileInfo = new JavaFileInfo();
+ javafileInfo.setJavaName(TEST_DATA_1);
+ javafileInfo.setBaseCodeGenPath("");
+ javafileInfo.setPackageFilePath(BASE_PKG);
+ module.setJavaFileInfo(javafileInfo);
+ return module;
+ }
}
diff --git a/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java b/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java
index 23541e0..0284ea0 100644
--- a/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java
+++ b/src/test/java/org/onosproject/yangutils/utils/io/impl/JavaDocGenTest.java
@@ -51,7 +51,7 @@
public ExpectedException thrown = ExpectedException.none();
/**
- * This test case checks the content recieved for the builder class java doc.
+ * This test case checks the content received for the builder class java doc.
*/
@Test
public void builderClassGenerationTest() {
@@ -61,7 +61,7 @@
}
/**
- * This test case checks the content recieved for the builder interface ge java doc.
+ * This test case checks the content received for the builder interface ge java doc.
*/
@Test
public void builderInterfaceGenerationTest() {
@@ -71,7 +71,7 @@
}
/**
- * This test case checks the content recieved for the build java doc.
+ * This test case checks the content received for the build java doc.
*/
@Test
public void buildGenerationTest() {
@@ -102,7 +102,7 @@
}
/**
- * This test case checks the content recieved for the constructor java doc.
+ * This test case checks the content received for the constructor java doc.
*/
@Test
public void constructorGenerationTest() {
@@ -113,7 +113,7 @@
}
/**
- * This test case checks the content recieved for the default constructor java doc.
+ * This test case checks the content received for the default constructor java doc.
*/
@Test
public void defaultConstructorGenerationTest() {
@@ -123,7 +123,7 @@
}
/**
- * This test case checks the content recieved for the getter java doc.
+ * This test case checks the content received for the getter java doc.
*/
@Test
public void getterGenerationTest() {
@@ -132,7 +132,7 @@
}
/**
- * This test case checks the content recieved for the impl class java doc.
+ * This test case checks the content received for the impl class java doc.
*/
@Test
public void implClassGenerationTest() {
@@ -143,7 +143,7 @@
}
/**
- * This test case checks the content recieved for the interface java doc.
+ * This test case checks the content received for the interface java doc.
*/
@Test
public void interfaceGenerationTest() {
@@ -154,7 +154,7 @@
}
/**
- * This test case checks the content recieved for the package info java doc.
+ * This test case checks the content received for the package info java doc.
*/
@Test
public void packageInfoGenerationTest() {
@@ -163,7 +163,17 @@
}
/**
- * This test case checks the content recieved for the setter java doc.
+ * This test case checks the content received for the package info java doc.
+ */
+ @Test
+ public void packageInfoGenerationForChildNodeTest() {
+ String packageInfo = getJavaDoc(PACKAGE_INFO, TEST_NAME, true);
+ assertThat(true, is(packageInfo.contains("Implementation of YANG node testName's children nodes")
+ && packageInfo.contains(END_STRING)));
+ }
+
+ /**
+ * This test case checks the content received for the setter java doc.
*/
@Test
public void setterGenerationTest() {
diff --git a/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java b/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java
index b939516..204bd7b 100644
--- a/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java
+++ b/src/test/java/org/onosproject/yangutils/utils/io/impl/YangIoUtilsTest.java
@@ -47,6 +47,10 @@
private static final String CREATE_PATH = BASE_DIR + File.separator + "dir1/dir2/dir3/dir4/";
private static final String CHECK_STRING = "one, two, three, four, five, six";
private static final String TRIM_STRING = "one, two, three, four, five, ";
+ private static final String CHECK1 = "check1";
+ private static final String PKG_INFO = "package-info.java";
+ private static final String PATH = "src/main/yangmodel/";
+ private static final String MSG = "Exception occured while creating package info file.";
/**
* Expected exceptions.
@@ -64,8 +68,8 @@
File dirPath = new File(CREATE_PATH);
dirPath.mkdirs();
- addPackageInfo(dirPath, "check1", CREATE_PATH);
- File filePath = new File(dirPath + File.separator + "package-info.java");
+ addPackageInfo(dirPath, CHECK1, CREATE_PATH, false);
+ File filePath = new File(dirPath + File.separator + PKG_INFO);
assertThat(filePath.isFile(), is(true));
}
@@ -79,8 +83,23 @@
File dirPath = new File(CREATE_PATH);
dirPath.mkdirs();
- addPackageInfo(dirPath, "check1", "src/main/yangmodel/" + CREATE_PATH);
- File filePath = new File(dirPath + File.separator + "package-info.java");
+ addPackageInfo(dirPath, CHECK1, PATH + CREATE_PATH, false);
+ File filePath = new File(dirPath + File.separator + PKG_INFO);
+ assertThat(filePath.isFile(), is(true));
+ }
+
+ /**
+ * This test case checks with a child node.
+ *
+ * @throws IOException when fails to do IO operations for test case
+ */
+ @Test
+ public void addPackageInfoWithChildNode() throws IOException {
+
+ File dirPath = new File(CREATE_PATH);
+ dirPath.mkdirs();
+ addPackageInfo(dirPath, CHECK1, PATH + CREATE_PATH, true);
+ File filePath = new File(dirPath + File.separator + PKG_INFO);
assertThat(filePath.isFile(), is(true));
}
@@ -94,9 +113,9 @@
File dirPath = new File("invalid/check");
thrown.expect(IOException.class);
- thrown.expectMessage("Exception occured while creating package info file.");
- addPackageInfo(dirPath, "check1", CREATE_PATH);
- File filePath1 = new File(dirPath + File.separator + "package-info.java");
+ thrown.expectMessage(MSG);
+ addPackageInfo(dirPath, CHECK1, CREATE_PATH, false);
+ File filePath1 = new File(dirPath + File.separator + PKG_INFO);
assertThat(filePath1.isFile(), is(false));
}
diff --git a/src/test/resources/EnumTranslator.yang b/src/test/resources/EnumTranslator.yang
new file mode 100644
index 0000000..1957c1f
--- /dev/null
+++ b/src/test/resources/EnumTranslator.yang
@@ -0,0 +1,17 @@
+module Sfc {
+ yang-version 1;
+ namespace http://huawei.com;
+ prefix Ant;
+ leaf test{
+ type string;
+ }
+ leaf myenum {
+ type enumeration {
+ enum zero;
+ enum one;
+ enum seven {
+ value 7;
+ }
+ }
+ }
+}